# Sweater — клон популярной социальной сети Учебный проект, реализующий основные функции социальной сети: регистрация, авторизация, публикация сообщений, подписки, профиль пользователя и др. Разработан с использованием **Spring Boot**, **Spring Security**, **MySQL**, **Thymeleaf/Freemarker**, **Flyway**, **Testcontainers** и других технологий. --- ## Функциональность * **Сообщения** * Добавление, просмотр, фильтрация * Редактирование * Пагинация с сокращённым списком ссылок * **Пользователи** * Регистрация с активацией по email * Аутентификация (Spring Security) * Авторизация по ролям (`USER`, `ADMIN`) * Подписка/отписка от пользователей * Просмотр списка подписчиков/подписок * Редактирование профиля * Хранение сессий в БД (`rememberMe`) * **Безопасность** * Spring Security + CustomUserDetailsService * Шифрование паролей * Валидация данных * reCAPTCHA при регистрации * Защита маршрутов по ролям (@EnableMethodSecurity) * **Файлы и внешний вид** * Загрузка изображений и других файлов * Доступ к статическим ресурсам * Bootstrap для стилизации форм и страниц * Freemarker вместо Mustache * **Инфраструктура и миграции** * MySQL вместо PostgreSQL * Flyway — миграции базы данных * Перевод генерации ID на `IDENTITY` * **Тестирование** * Интеграционные тесты c Testcontainers * Модульные тесты пользовательского сервиса --- ## Стек технологий * **Backend**: Spring Boot, Spring MVC, Spring Data JPA, Spring Security * **Frontend**: Freemarker, Bootstrap * **Database**: MySQL * **Migration**: Flyway * **Тесты**: JUnit 5, Testcontainers * **Прочее**: reCAPTCHA, email-activation, file upload --- ## Источники и вдохновение - Проект реализован основываясь на видеокурсе Андрея Letscode, за что ему большое спасибо! --- ## Как запустить 1. Установите и настройте **MySQL** 2. Укажите параметры подключения в `application.properties` 3. Запустите проект: ```bash ./mvnw spring-boot:run ``` 4. Откройте в браузере: `http://localhost:8080`