Техническое задание:
- Разработать приложение на Java Spring Boot, представляющее собой Backend REST API.
- Данное приложение должно использовать: Liquibase, Hibernate, PostgreSQL.
- Вся конфигурация приложения находится в отдельном конфигурационном файле в формате YAML.
- Для авторизации пользователя используется Spring Security OAuth2.
- В качестве сборки пакета используйте Gradle (можно MAVEN).
- В качестве планировщика Quartz (можно @Scheduled).
- Все API должны быть прокрыты функциональными и интеграционными тестами.
Общие требования:
- Приложение, должно запускаться на выделенном сервере, поэтому приложение, должно быть упаковано в docker образ.
- В качестве запуска, должен применяться docker-compose файл
Описание приложения.
В Рамках тестового задания, мы будем реализовывать приложение Reminder, суть которого заключается в том, что пользователь после авторизации попадает на главную страницу и может управлять списком напоминаний. Основные возможности приложения:
- Создать новое напоминание
- Удалить ранее созданное напоминание
- Редактировать напоминание
- Поиск напоминания (по названию, описанию, дате, времени)
- Сортировка (по названию, дате, времени)
- Фильтр (по дате, времени)
- Список должен выводиться с пагинацией
- При наступлении даты и времени напоминаний, приложение должно посылать уведомления с Заголовком сущности и описанием,
- на email и telegram (Настройки адреса пользователя и его контакта в telegram должны задаваться в профиле пользователя)
API:
- Создать новое напоминание https://domain/api/v1/reminder/create
- Удалить ранее созданное напоминание https://domain/api/v1/reminder/delete
- Сортировка https://domain/api/v1/sort { by: name | date | time }
- Фильтр https://domain/api/v1/filtr { date | time }
- Список должен выводиться с пагинацией https://domain/api/v1/list { total, current }
В проекте используются:
- Backend:
- Java 17
- Maven
- Spring Boot
- Spring Web
- Spring Data
- Spring JPA
- Spring Security OAuth2
- REST
- Lombok
- Stream API
- Docker
- SQL:
- PostgreSQL
- Liquibase