gorden73 / Explore-with-me

:partying_face:Приложение для организации событий и участия в них.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Explore with me

(англ. "Исследуй со мной")

Приложение для организации событий и участия в них.

Приложение разработано в рамках прохождения учебного курса Java-разработчик от Яндекс.Практикум

Свободное время — ценный ресурс. Ежедневно мы планируем, как его потратить — куда и с кем сходить. Сложнее всего в таком планировании поиск информации и переговоры. Какие намечаются мероприятия, свободны ли в этот момент друзья, как всех пригласить и где собраться. Это приложение — афиша, где можно предложить какое-либо событие от выставки до похода в кино и набрать компанию для участия в нём. Ниже представлен пример веб-интерфейса приложения.
WebInterfaceExample

Основа приложения

Приложение состоит из двух микросервисов, каждый имеет свою базу данных. Основной микросервис — содержит всё необходимое для работы продукта. Микросервис статистики — хранит количество просмотров и позволяет делать различные выборки для анализа работы приложения.
Взаимодействие между микросервисами осуществляется через restTemplate.
Предполагается, что Explore with me работает со сторонним сервисом авторизации и аутентификации, который частично обрабатывает первоначальные запросы и дальше передает их в основной сервис Explore with me.

Функционал

Основной сервис включает в себя функции для использования администраторами, авторизованными пользователями и незарегистрированными пользователями("случайными прохожими").
Администраторы могут:
- управлять категориями для событий - добавлять, измененять и удалять категории.
- управлять подборками мероприятий - добавлять, удалять и закреплять на главной странице.
- модерировать события, размещённые пользователями, — публикация или отклонение.
- управлять пользователями — добавлять, просматривать и удалять.
- получать подробную информацию об всех лайках/дизлайках указанного события.
Авторизованные пользователи могут:
- добавлять в приложение новые мероприятия, редактировать их и просматривать после добавления.
- подавать заявки на участие в интересующих мероприятиях.
- подтверждать заявки, которые отправили другие пользователи сервиса (доступно только для организаторов событий).
- ставить лайки/дизлайки событиям (только тем, в которых участвовали).
- получать краткую информацию обо всех лайках/дизлайках своего события.
Незарегистрированные пользователи("случайные прохожие") могут:
- просматривать список событий с краткой информацией по ним, в соответствии с выбранной сортировкой(по количеству просмотров событий, по дате событий или по рейтингу событий).
- просматривать подробную информацию о выбранном событии.
- просматривать все имеющиеся категории событий.
- просматривать подборки событий, составленные администратором.

Второй сервис, статистики, призван собирать информацию.
Во-первых, о количестве обращений пользователей к спискам событий.
Во-вторых, о количестве запросов к подробной информации о событии.
На основе этой информации формируется статистика о работе приложения.

Спецификация

Спецификацию для сервисов можно посмотреть с помощью сайта Swagger, импортировав туда файл для основного сервиса и файл для сервиса статистики.
SpecificationExample

Стек технологий


- Windows 10 - операционная система
- Java 11 - язык программирования
- IntelliJ IDEA 2022.1.4 (Ultimate Edition) - среда разработки
- Spring Boot 2.7.2 - используемый фреймворк
- Apache Maven 4.0.0 - управление зависимостями
- Project Lombok 1.18.24 - библиотека аннотаций для сокращения шаблонного кода
- Hibernate 5.6.10 - ORM-фреймворк
- PostgreSQL 11-alpine - база данных
- Docker Desktop 20.10.17 - платформа контейнеризации
- Docker Compose 3.1 - утилита для развертывания нескольких контейнеров
- Postman 9.31.0 - приложение для выполнения запросов к API.

Шаблоны проектирования


В приложении использован шаблон проектирования Data Transfer Object (DTO Pattern).

Запуск приложения

На Вашем компьютере должны быть установлены соответствующие приложения из раздела "Стек технологий". Для запуска приложения необходимо:

  • склонировать проект на свой компьютер
  • запустить приложение Docker
  • открыть склонированный проект в IntelliJ IDEA
  • открыть терминал командной строки и вписать команду mvn clean package. Дождаться выполнения успешной сборки проекта.
  • далее в терминал вписать команду docker compose up и дождаться успешного запуска основного сервиса и сервиса статистики в контейнерах Docker.
  • готово, можно использовать приложение согласно спецификации(см. раздел "Спецификация").

Выполнение тестов

На данном этапе тестирование возможно с помощью коллекции тестов и приложения Postman, способного выполнять запросы к API. Для запуска коллекции тестов необходимо предварительно выполнить все инструкции из раздела "Запуск приложения", далее запустить приложение приложение Postman, импортировать коллекции тестов, нажать на вкладку "Run collection". Готово. Тесты пройдут автоматически.
PostmanUsage

Автор

Связаться с автором проекта можно в telegram (@gorden73).

Вернуться в начало

About

:partying_face:Приложение для организации событий и участия в них.


Languages

Language:Java 99.9%Language:Dockerfile 0.1%