From 076b2320bc0f12d6b38f5aafa03e2b3e8f530c52 Mon Sep 17 00:00:00 2001 From: Leonid Date: Mon, 14 Jul 2025 23:23:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/README.md b/README.md index e69de29..040afb0 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,79 @@ +# 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`