- Проблема: Отсутствие единой программы лояльности с гибкой настройкой, куча узкоспециализированных решений под каждое предприятие
- Цель: Создание единой системы программы лояльности
- Целевая аудитория: Бизнесы и их клиенты
- Любавский Илья 👨💻
- Мельниченко Роман 👨💻
- ✅ До регистрации пользователь может просматривать актуальные программы лояльности
- ✅ Регистрация бизнеса
- ✅ Регистрация клиента (пользователь который участвует в программах лояльности)
- ✅ Логин клиента и бизнеса
- ✅ Личный кабинет бизнеса:
- ✅ просмотр информации о бизнесе
- ✅ CRUD над филиалами бизнеса
- ✅ просмотр некоторой статистики
- ✅ CRUD над программами лояльности
- ✅ ограничение программы по филиалам
- ✅ добавление описания программы
- ✅ настройка суммы начисления бонусов
- ✅ настройка таргетинга (условий) действия программы
- ✅ настройка наград за бонусы
- ✅ Личный кабинет клиента
- ✅ просмотр информации о клиенте
- ✅ вступление в программы лояльности (а также выход из них)
- ✅ просмотр программ лояльности в которые вступил
- ✅ участие в программах (заработок бонусов и обмен их на награды)
- ✅ Продуманный механизм начисления бонусов и их обмена на награды
- ✅ Создание REST API и OpenAPI спецификации к нему
- Приложение будет предоставлять всю информацию о клиентах, которые зашли в программу лояльности, что может быть использовано для рассылок.
- Создание телеграмм бота взаимодействующего с REST API
- 💵 Наша платформа будет получать прибыль за счёт процента с каждой покупки, которая проведена через наш сервис
Илья:
- ✅ Деплой.
- ✅ Инфраструктура проекта.
- ✅ Архитектура проекта, создание схемы БД.
- ✅ Регистрация, аутентификация и авторизация пользователей.
- ✅ Информация о бизнесе
- ✅ Информация о клиенте
- ✅ Вступление клиента в программу лояльности
- ✅ Механизм начисления бонусов и их обмена на награды
- Grafana для вывода статистики (опциональные украшения)
- ✅ Подборка программ лояльности для клиента
- Написание телеграмм бота (если успеем)
- ✅ Статистика бизнеса
Роман
- ✅ CRUD над филиалами бизнеса.
- ✅ CRUD над программами лояльности бизнеса.
- ✅ Настройка программ лояльности
- ✅ Настройка таргетинга
- ✅ CRUD над программами лояльности клиента.
- ✅ Написание автоматических тестов.
- ✅ Cбор cтатистики платформы
- Написание телеграмм бота (если успеем)
Энциклопедия проекта доступна по адресу тык
-
domain - содержит основные программные сущности (entity) и бизнес правила
-
application - содержит сценарии работы с приложением и оркестрирует программные сущности
-
adapters - содержит адаптеры к внешнему миру, например таблицы SQLAlchemy (
db/table), классы для работы с БД (db/gateway), миграции (db/alembic), классы аутентификации (auth/), компоненты для работы с файловым хранилищем (minio.py) -
presentation - слой для работы с веб-фреймворком Flask,
web/flask_apiи лендингweb/templates -
bootstrap - слой который все собирает вместе и запускает
-
Запуск сервера Gunicorn (
entrypoint/flask_api.py) -
Настройка IoC-контейнера (
di/), больше про него можно почитать тут
-
Необходимо установить just
Он нужен чтобы удобно запускать команды, его конфигурацию вы можете посмотреть в ./justfile
А также docker и docker-compose (обычно идёт вместе с docker)
Убедитесь что docker-compose доступен через
docker compose
На Windows он возможно будет доступен лишь через
docker-compose
Тогда вам нужно зайти в justfile и заменить
docker compose
на
docker-compose
Для того чтобы установить проект локально требуется Python версии минимум 3.13
pip install -e ".[dev]"
- Чтобы запустить линтеры:
just lint
- Чтобы запустить приложение
just up
Документация API станет доступна по адресу http://localhost/docs/
Лэндинг станет доступен по адресу http://localhost/
- Чтобы остановить приложение:
just down
- Чтобы очистить данные приложения:
just clear
Запуск тестов
just test
just up
just migration <название миграции>