Это backend-реализация проекта RealWorld на Spring Boot 3, реализующая REST API для платформы публикации статей с поддержкой пользователей, профилей, комментариев, тегов и избранного.
- Java 21
- Spring Boot 3.4.5 (Web, Data JPA, Security, Validation)
- PostgreSQL
- MinIO (S3-совместимое хранилище)
- MapStruct (маппинг DTO)
- JWT (аутентификация)
- Docker, Docker Compose
src/
main/
java/sdu/project/realworldback/
controllers/ # REST-контроллеры
services/ # Сервисный слой
repositories/ # JPA-репозитории
models/ # JPA-сущности
dto/ # DTO-объекты
config/ # Конфигурация Spring
security/ # Безопасность и JWT
exceptions/ # Обработка ошибок
utill/ # Утилиты
validation/ # Кастомные валидаторы
resources/
application.yml # Основная конфигурация
test/
java/sdu/project/realworldback/
RealworldBackApplicationTests.java
git clone <repo_url>
cd realworld-backСоздайте файл .env в корне проекта и заполните переменные:
POSTGRES_USER=your_user
POSTGRES_PASSWORD=your_password
POSTGRES_DB=realworld
HOST=db
JWT_SECRET=your_jwt_secret
MINIO_BUCKET=realworld-bucket
MINIO_URL=http://minio:9000
MINIO_ACCESS_KEY=minio_access_key
MINIO_SECRET_KEY=minio_secret_key
docker-compose up --build- Приложение будет доступно на http://localhost:8080
- PostgreSQL: порт 5432
- MinIO: http://localhost:9001 (консоль), http://localhost:9000 (S3 API)
- Установите PostgreSQL и MinIO локально, настройте переменные окружения.
- Соберите и запустите приложение:
./mvnw spring-boot:runПолная спецификация API — в файле openapi.yml.
Примеры эндпоинтов:
POST /api/users— регистрация пользователяPOST /api/users/login— входGET /api/user— текущий пользователь (JWT)GET /api/articles— список статей (фильтрация по тегу, автору, избранному)POST /api/articles— создать статьюGET /api/articles/feed— лента подписок (JWT)GET /api/articles/{slug}— получить статьюPUT /api/articles/{slug}— обновить статьюDELETE /api/articles/{slug}— удалить статью
Для авторизованных запросов используйте заголовок:
Authorization: Token <jwt>
./mvnw testMIT (или укажите свою)