Java, Spring (Boot, Data, Security, MVC), PostgreSQL, REST API, Docker, Mockito, JUnit, Postman, MapStruct, Lombok, Thymeleaf, JavaScript, CSS, HTML
Приложение для размещения мероприятий и поиска компаний для участия в них
Приложение содержит два микросервиса:
- main-service для бизнес-логики
- stats-service для сбора статистики просмотра событий по ip, который состоит из трех модулей
У каждого микросервиса есть своя база данных.
Микросервисы и базы данных запускаются в собственных Docker контейнерах (4 шт).
- просматривать все события, в том числе по категориям
- видеть детали отдельных событий
- видеть закрепленные подборки событий
- добавление в приложение новые мероприятия, редактировать их и просматривать после добавления
- подача заявок на участие в интересующих мероприятиях
- создатель мероприятия может подтверждать заявки, которые отправили другие пользователи сервиса
- добавление, изменение и удаление категорий для событий
- добавление, удаление и закрепление на главной странице подборки мероприятий
- модерация событий, размещённых пользователями, — публикация или отклонение
- управление пользователями — добавление, активация, просмотр и удаление
- POST /users/{userId}/eventEntities - добавить новое событие
- GET /users/{userId}/eventEntities/{eventId} - получить событие
- PATCH /users/{userId}/eventEntities/{eventId} - изменить событие
- GET /users/{userId}/eventEntities - получить события пользователя
- GET /users/{userId}/eventEntities/{eventId}/requests - получить запросы пользователя на участие в событии
- PATCH /users/{userId}/eventEntities/{eventId}/requests - изменить статус (подтверждение, отмена) заявок на участие пользователя в событии
- GET /categories - получить все категории
- GET /categories/{catId} - получить категорию
- GET /compilations - получить все подборки событий
- GET /compilations/{compId} - получить подборку событий
- GET /admin/eventEntities - получить события по любым параметрам:
- users - список id пользователей
- states - список статусов события (PENDING, PUBLISHED, CANCELED)
- categories - список id категорий событий
- rangeStart - начало временного отрезка в формате yyyy-MM-dd HH:mm:ss
- rangeEnd - конец временного отрезка в формате yyyy-MM-dd HH:mm:ss
- from - параметр для пагинации
- size - параметр для пагинации
- PATCH /admin/eventEntities/{eventId} - изменить событие
- GET /eventEntities - получить события по любым параметрам:
- text - текст для поиска в названии и описании событий
- categories - список id категорий событий
- paid - только платные события (true/false)
- rangeStart - начало временного отрезка в формате yyyy-MM-dd HH:mm:ss
- rangeEnd - конец временного отрезка в формате yyyy-MM-dd HH:mm:ss
- onlyAvailable - только доступные события, т.е. у которых еще не исчерпан лимит участников (true/false)
- sort - способ сортировки событий (EVENT_DATE, VIEWS)
- from - параметр для пагинации
- size - параметр для пагинации
- GET /eventEntities/{id} - получить событие
- POST /users/{userId}/requests - добавить запрос на участие в событии
- GET /users/{userId}/requests - получить запросы пользователя на участие в событиях
- DELETE /users/{userId}/requests/{requestId}/cancel - отменить запрос на участие в событии
- POST /users/{userId}/eventEntities/{eventId}/comments - добавить комментарий к событию
- PATCH /users/{userId}/eventEntities/{eventId}/comments/{commentId} - обновить комментарий
- GET /users/{userId}/eventEntities/{eventId}/comments/{commentId} - получить комментарий к событию
- DELETE /users/{userId}/eventEntities/{eventId}/comments/{commentId} - удалить комментарий к событию
- GET /users/{userId}/eventEntities/{eventId}/comments - получить список комментариев пользователя к событию
- GET /users/{userId}/comments - получить все комментарии пользователя
- POST /admin/users - добавить пользователя
- GET /admin/users - получить всех пользователей
- DELETE /admin/users/{userId} - удалить пользователя
- POST /admin/compilations - добавить подборку событий
- DELETE /admin/compilations/{compId} - удалить подборку событий
- PATCH /admin/compilations/{compId} - обновить подборку событий
- POST /admin/categories - добавить новую категорию
- GET /admin/categories/{catId} - получить категорию событий
- DELETE /admin/categories/{catId} - удалить категорию
- GET /admin/comments - получить комментрии по любым параметрам:
- text - текст для поиска в содержании комментария
- users - список id пользователей
- eventEntities - список id событий
- statuses - статусы событий (PENDING, PUBLISHED, DELETED)
- rangeStart - начало временного отрезка в формате yyyy-MM-dd HH:mm:ss
- rangeEnd - конец временного отрезка в формате yyyy-MM-dd HH:mm:ss
- from - параметр для пагинации
- size - параметр для пагинации
- PATCH /admin/comments - изменить статусы комментариев
- GET /stats - Получение статистики по посещениям
- POST /hit - Сохранение информации о том, что на uri конкретного сервиса был отправлен запрос пользователем
Ознакомиться с примерами использования можно в этой коллекции тестов Postman