Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/omatthewy/java-shareit
Template repository for ShareIt project.
https://github.com/omatthewy/java-shareit
booking-system crud docker gateway integration-testing java maven microservices postman rest-api sharing-economy spring-boot unit-testing user-reviews validation
Last synced: about 5 hours ago
JSON representation
Template repository for ShareIt project.
- Host: GitHub
- URL: https://github.com/omatthewy/java-shareit
- Owner: OmatthewY
- Created: 2024-07-07T12:17:32.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-10-24T11:01:32.000Z (14 days ago)
- Last Synced: 2024-10-25T09:13:33.603Z (13 days ago)
- Topics: booking-system, crud, docker, gateway, integration-testing, java, maven, microservices, postman, rest-api, sharing-economy, spring-boot, unit-testing, user-reviews, validation
- Language: Java
- Homepage:
- Size: 3.58 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ShareIt Сервис совместного использования вещей
## Функционал программы
Приложение шеринг позволяет пользователям искать, выкладывать и брать в аренду на время вещи для пользования, оставлять
отзывы, делать запросы на добавление вещей.### Программа включает в себя два микросервиса:
1. Основной — содержит всё необходимое для работы продукта.
2. Гейтвей-шлюз — производит валидацию входящих запросов, фильтруя некорректные запросы.***Основной микросервис реализует следующие возможности для пользователей:***
- Добавление вещи в каталог владельцем для сдачи в аренду (возможность добавить как по запросу пользователями такой
вещи, так и самостоятельно).
- Редактирование информации о вещи ее владельцем (пользователем добавившим эту вещь).
- Просмотр информации о конкретной вещи любым пользователем.
- Просмотр владельцем списка всех его вещей.
- Поиск доступных для аренды вещей (по тексту).
- Добавление запроса на бронирование (возможность брать вещи в аренду на определенные даты) любым пользователем.
- Подтверждение или отклонение запроса на бронирование владельцем вещи.
- Получение информации о конкретном бронировании автором запроса или владельцем вещи.
- Получение списка бронирований автором запроса (фильтрация по статусу, сортировка от новых к старым).
- Получение списка бронирований для всех вещей владельца.
- Пользователи могут оставлять отзывы в форме комментариев на использованную вещь по окончании аренды.
- Пользователи могут просматривать комментарии других пользователей.
- Добавление нового запроса вещи. Например, если требуемая вещь отсутствует в каталоге.
- Получение списка всех запросов автором с данными об ответах на них (сортировка от новых к старым).
- Получение списка запросов других пользователей (сортировка от новых к старым).
- Просмотр информации любым пользователем о конкретном запросе вещи вместе с данными об ответах на него.------
🧩 **Стек-технологий и опыт разработки** 🧩
Проект в своей основе включает Java Core, Spring Boot Framework и возможности развертывания в сборке от Maven в
контейнерах с использованием Docker. Программа представляет собой микросервис с архитектурой REST API.Микросервис состоит из двух модулей:
- shareit-server — отвечает за базовую и дополнительную бизнес-логику, ядро приложения;
- shareit-gateway — служит в качестве шлюза приложения для валидации входящих запросов.------
**Системные требования**
В данном репозитории представлен бэкенд приложения. Работоспособность приложения протестирована с помощью модульных и
интеграционных тестов. Также программа протестирована по WEB API с помощью Postman-тестов.Приложение работает корректно в текущем виде при наличии:
- Установленной [JDK версии 21](https://docs.aws.amazon.com/corretto/);
- Сборки с использованием [Maven](https://maven.apache.org/);
- Установленный [Docker](https://www.docker.com/products/docker-desktop/).**ERD-диаграмма**
![shareit](ERD-shareit.png)
Упаковать и запустить приложение можно следующим образом:
1. mvn clean install (сборка)
2. docker-compose up (упаковка и запуск)Про переменные окружения контейнеров:
Используемое время в контейнерах можно изменить при необходимости. Перед сборкой/упаковкой следует переписать переменные
окружения времени (TZ - время контейнера, PGTZ - время базы данных) в файле docker-compose.yaml на требующееся значение
по классификации Olson time zone database: например, TZ=Asia/Kuala_Lumpur - время для г. Куала-Лумпур (Малайзия).------