Разработан простой движок для форума или доски объявлений с функциональностью CRUD для топиков и сообщений. Топик содержит заголовок и одно или несколько сообщений, а сообщение включает в себя имя автора, текст и дату создания. Реализована авторизация и регистрация пользователей с использованием jwt-токенов. Движок обеспечивает хранение данных во встроенной базе данных (IMDB) и реализацию REST-API для выполнения следующих операций:
- Регистрация пользователя
- Регистрация администратора
- Авторизация пользователя
- Обновление токена доступа
- Создание топика с первым сообщением
- Создание сообщения в топике
- Обновление топика (Пользователь должен быть владельцем топика)
- Обновление сообщения (Пользователь должен быть владельцем сообщения)
- Удаление топика (Пользователь должен быть владельцем топика)
- Удаление сообщения (Пользователь должен быть владельцем сообщения)
- Получение списка всех топиков (без пагинации)
- Получение списка топиков (Список определенного размера. Пагинация)
- Получение списка всех сообщения в выбранном топике (без пагинации)
- Получение списка сообщения в выбранном топике (Список определенного размера. Пагинация)
- Получение информации о себе
- Обновление любого топика
- Обновление любого сообщения в любом топике
- Получение данных любого пользователя
- Удаление любого топика
- Удаление любого сообщения в любом топике
- Java
- Spring Boot
- Gradle
- H2 Database
- Реализована пагинация для топиков и сообщений.
- Реализована аутентификация пользователей. (Используются Jwt-токены. Также реализованы refresh-токены).
- Реализовано REST-API администратора. Администратор может редактировать и удалять любые сообщения и топики.
- Unit тесты.
- Скрипт по наполнению тестовыми данными. (Создается 15 топиков. Каждый имеет 5 сообщений. Пользователи-владельцы. топиков не создаются. Для тестирования создан суперюзер (см. Сборка)).
- Документация к API.(Интерактивная и api-example.yaml)
- Для приложения разработана инструкция по сборке. Сборка выполняется с помощью Docker.
- Присутствует файл .env. Представленные данные являются публичными и используются только! при тестировании.
- Интерактивная Swagger документация (http://localhost:8080/swagger-ui/index.html#/)
Для сборки приложения необходимо выполнить следующие действия.
-
Склонировать репозиторий:
git clone https://github.com/forafox/greenatom-app cd greenatom-app -
Выполнить сборку проекта:
./gradlew bootJar
-
В случае возникновения ошибки "./gradlew: команда не найдена", выполните следующую команду:
gradle wrapper --gradle-version 8.7Повторите команду "./gradlew bootJar" из пункта 2.
-
Выполнить build в директории приложения с помощью следующей команды:
docker compose build -
Для запуска приложения необходимо выполнить следующую команду:
docker compose up
-
Пункты 3 и 4 можно объединить в следующую команду:
docker compose up --build
-
Можно начинать работу с приложением. Для работы создан суперюзер. Ниже представлены данные для входа под аккаунтом администратора.
Для администратора: username: [email protected] password: JohnDoeAdmin