Online Market — это микросервисное backend-приложение, обеспечивающее работу онлайн-магазина.
Система включает независимые сервисы, отвечающие за аутентификацию пользователей, загрузку и поиск товаров, управление корзиной и оформление заказов.
В качестве основной базы данных используется PostgreSQL, для полнотекстового поиска — Elasticsearch, а для хранения корзин и blacklist-токенов — Redis.
Проект состоит из следующих микросервисов:
- Auth Service — регистрация, аутентификация, refresh/logout, управление токенами и ролями пользователей.
- Catalog Service — карточки товаров и операции с каталогом.
- Import Service — приём CSV/JSON-файлов, валидация и загрузка данных в PostgreSQL.
- ETL / Indexer — перенос данных из PostgreSQL в Elasticsearch (инкрементально, по времени обновления).
- Search Service — полнотекстовый поиск товаров с фильтрацией, сортировкой и фасетами.
- Cart Service — хранение корзины пользователя в Redis с фиксацией цен на момент добавления.
- Orders Service — создание и хранение заказов, транзакционное уменьшение остатков товаров.
- API Gateway — единая точка входа: проверка JWT и маршрутизация запросов между сервисами.
- FastAPI — основной web-фреймворк
- PostgreSQL — основная база данных
- Redis — хранилище корзин и blacklist refresh-токенов
- Elasticsearch — поисковый движок и фасетные выборки
- SQLModel / SQLAlchemy — ORM для PostgreSQL
- Docker / Docker Compose — контейнеризация и оркестрация
- Pydantic / dotenv — конфигурации и типизация данных
- JWT (PyJWT) — аутентификация и авторизация пользователей
| Сервис | Swagger UI |
|---|---|
| Auth Service | http://localhost:8001/docs |
| Catalog Service | http://localhost:8002/docs |
| Import Service | http://localhost:8003/docs |
| Search Service | http://localhost:8004/docs |
| Cart Service | http://localhost:8005/docs |
| Orders Service | http://localhost:8006/docs |
| API Gateway | http://localhost:8080/docs |
Каждый сервис предоставляет собственную Swagger-документацию с возможностью авторизации по JWT-токену.