Compare commits

..

1 Commits

Author SHA1 Message Date
Leonid
076b2320bc Обновил описание проекта 2025-07-14 23:23:31 +03:00

View File

@@ -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`