Files
sweater/README.md

80 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`