Skip to content

lubaskinc0de/loyalty

Repository files navigation

💸 Loyalty

📋 Идея проекта

  • Проблема: Отсутствие единой программы лояльности с гибкой настройкой, куча узкоспециализированных решений под каждое предприятие
  • Цель: Создание единой системы программы лояльности
  • Целевая аудитория: Бизнесы и их клиенты

✒️🙂 Участники команды

  • Любавский Илья 👨‍💻
  • Мельниченко Роман 👨‍💻

Функциональные требования

  • ✅ До регистрации пользователь может просматривать актуальные программы лояльности
  • ✅ Регистрация бизнеса
  • ✅ Регистрация клиента (пользователь который участвует в программах лояльности)
  • ✅ Логин клиента и бизнеса
  • ✅ Личный кабинет бизнеса:
    • ✅ просмотр информации о бизнесе
    • ✅ CRUD над филиалами бизнеса
    • ✅ просмотр некоторой статистики
    • ✅ CRUD над программами лояльности
      • ✅ ограничение программы по филиалам
      • ✅ добавление описания программы
      • ✅ настройка суммы начисления бонусов
      • ✅ настройка таргетинга (условий) действия программы
      • ✅ настройка наград за бонусы
  • ✅ Личный кабинет клиента
    • ✅ просмотр информации о клиенте
    • ✅ вступление в программы лояльности (а также выход из них)
    • ✅ просмотр программ лояльности в которые вступил
    • ✅ участие в программах (заработок бонусов и обмен их на награды)
  • ✅ Продуманный механизм начисления бонусов и их обмена на награды
  • ✅ Создание REST API и OpenAPI спецификации к нему

Дополнительные фичи (если успеем)

  • Приложение будет предоставлять всю информацию о клиентах, которые зашли в программу лояльности, что может быть использовано для рассылок.
  • Создание телеграмм бота взаимодействующего с REST API

О платформе

  • 💵 Наша платформа будет получать прибыль за счёт процента с каждой покупки, которая проведена через наш сервис

Разделение ответственности

Илья:

  1. ✅ Деплой.
  2. ✅ Инфраструктура проекта.
  3. ✅ Архитектура проекта, создание схемы БД.
  4. ✅ Регистрация, аутентификация и авторизация пользователей.
  5. ✅ Информация о бизнесе
  6. ✅ Информация о клиенте
  7. ✅ Вступление клиента в программу лояльности
  8. ✅ Механизм начисления бонусов и их обмена на награды
  9. Grafana для вывода статистики (опциональные украшения)
  10. ✅ Подборка программ лояльности для клиента
  11. Написание телеграмм бота (если успеем)
  12. ✅ Статистика бизнеса

Роман

  1. ✅ CRUD над филиалами бизнеса.
  2. ✅ CRUD над программами лояльности бизнеса.
    1. ✅ Настройка программ лояльности
    2. ✅ Настройка таргетинга
  3. ✅ CRUD над программами лояльности клиента.
  4. ✅ Написание автоматических тестов.
  5. ✅ Cбор cтатистики платформы
  6. Написание телеграмм бота (если успеем)

Инструкция по работе

Энциклопедия проекта

Энциклопедия проекта доступна по адресу тык

Архитектура проекта

Слои

  1. domain - содержит основные программные сущности (entity) и бизнес правила

  2. application - содержит сценарии работы с приложением и оркестрирует программные сущности

  3. adapters - содержит адаптеры к внешнему миру, например таблицы SQLAlchemy (db/table), классы для работы с БД (db/gateway), миграции (db/alembic), классы аутентификации (auth/), компоненты для работы с файловым хранилищем (minio.py)

  4. presentation - слой для работы с веб-фреймворком Flask, web/flask_api и лендинг web/templates

  5. bootstrap - слой который все собирает вместе и запускает

    1. Запуск сервера Gunicorn (entrypoint/flask_api.py)

    2. Настройка 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 <название миграции>

About

Система управления лояльностью

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors