- Основной сервис содержит всё необходимое для работы продукта.
- API основного сервиса разделено на три части:
- публичная будет доступна без регистрации любому пользователю сети;
- закрытая будет доступна только авторизованным пользователям;
- административная — для администраторов сервиса.
- API основного сервиса разделено на три части:
- Сервис статистики будет хранить количество просмотров и позволит
делать различные выборки для анализа работы приложения.
- Функционал сервиса статистики содержит:
- запись информации о том, что был обработан запрос к эндпоинту API;
- предоставление статистики за выбранные даты по выбранному эндпоинту
- Функционал сервиса статистики содержит:
- Поиск событий выдаёт только опубликованные события, возможности поиска:
- сортировка списка событий организована по датам событий или по количеству просмотров;
- в запросе пользователь может указать:
- диапазон дат rangeStart-rangeEnd, если он не указан, то выгружаются события, которые произойдут позже текущей даты и времени;
- возможен текстовый поиск по аннотациям или подробному описанию;
- при просмотре списка событий показывается только краткая информация о мероприятиях включающая в себя: количество просмотров и количество уже одобренных заявок на участие;
- возможен поиск событий по их рейтингу с сортировкой по количеству лайков/дизлайков;
- если по заданным фильтрам не найдено ни одного события, возвращает пустой список.
- Поиск подробной информации об опубликованном событии по его идентификатору;
- Получение всех категорий;
- Получение подборок событий.
- пользователи могут добавлять в приложение новые мероприятия, редактировать их и просматривать после добавления;
- пользователи могут подавать заявки на участия в интересующих мероприятиях;
- создатель мероприятия может подтвердить или отклонить заявки, которые отправили другие пользователи сервиса;
- пользователи могут оценивать прошедшие события, создатель события не может оценивать созданное события, каждый пользователь может оценить событие только один раз;
- пользователь может удалить свою оценку;
- пользователь может запросить рейтинг прошедшего события или рейтинг пользователя создавшего мероприятие.
- администраторы могут добавлять, изменять и удалять категории для событий;
- администраторы могут добавлять, удалять и закреплять на главной странице подборки мероприятий;
- администраторы осуществляют модерацию событий, размещённых пользователями, — публикация или отклонение;
- администраторы управляют пользователями — добавляют, активируют, просматривают и удаляют.
- Создание.
- Ожидание публикации. В статус ожидания публикации событие переходит сразу после создания.
- Публикация. В это состояние событие переводит администратор.
- Отмена публикации. В это состояние событие переходит в двух случаях. Первый — если администратор решил, что его нельзя публиковать. Второй — когда инициатор события решил отменить его на этапе ожидания публикации.
Для хранения данных приложение использует базу данных PostgreSQL, каждый сервис использует свою БД.
Приложение написано на Java. Пример кода:
@SpringBootApplication
public class EwmService {
public static void main(String[] args) {
SpringApplication.run(EwmService.class, args);
}
}
@SpringBootApplication
public class StatsServer {
public static void main(String[] args) {
SpringApplication.run(StatsServer.class, args);
}
}
Пример внешнего вида приложения "ExploreWithMe"
Pull requests: https://github.com/BezuglovMikhail/java-explore-with-me/pulls