80 lines
3.0 KiB
Markdown
80 lines
3.0 KiB
Markdown
# 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`
|