
Платформа для организации лотерей, в которых хочется участвовать
Веб-приложение: https://sakura.code418.ru
Учётные данные (почта и пароль являются одним и тем же значением):
-
пользователь: s.scorpi-on@ya.ru
-
администратор: anna.petrova@gmail.com
Админ-панель: https://db-studio.sakura.code418.ru
Позволяет редактировать таблицы напрямую в базе данных в удобном интерфейсе. В частности регулировать некоторые механики игры.
Панель управления обратным прокси: http://traefik.sakura.code418.ru
Позволяет отслеживать состояние прокси-сервера и управлять им.
Производится по электронной почте и паролю. Поддерживается реферальная программа по промокоду, за которую пригласившему и приглашённому участникам начисляются вознаграждения. В скором времени будет добавлена авторизация по аккаунту Яндекса.

Позволяет удобно просматривать и искать подходящие лотереи по параметрам.

Помимо баланса средств, пользователь имеет рейтинг, увеличивающийся при активности на платформе. Ежемесячно пользователи, набравшие больше всего опыта за месяц, будут награждаться. В зависимости от опыта, у пользователя отображается статус (от новичка, к примеру, до лудомана — это конфигурируется в админ-панели).

У каждого пользователя имеется своя Сакура, которая начинает увядать через несколько дней, если в профиле отсутствует активность (пополнения счёта, покупки билетов и т. д.).

- реальные (соответствуют законодательству РФ, призы — деньги или товары);
- виртуальные (не имеют ограничений, призы — бонусная валюта Лепестки).
Создаются из аккаунта администратора, который может указать тираж билетов, количество всех победителей и суперпризёров, стоимость билета и т. д. Перед созданием реальной лотереи видит чистую прибыль с неё и при экономической неэффективности не позволяет её создать.


Пользователи могут покупать билеты на лотереи и после их завершения видеть, победили ли они. И если да — то какие призы выиграли.

Позволяют зарабатывать лепестки или проходить миссии.
Парная игра, доступная только VIP-пользователям. Если одновременно несколько пользователей решили поиграть, система соединит их в одну партию (в противном случае соперником выступит автомат). Игроки устанавливают одинаковую сумму ставки. Победитель возвращает свою и забирает ставку противника.

Начать игру можно за 100 рублей, пользователю выдаётся 1 патрон. Если его выстрелили и попали, то начисляется приз — иначе деньги сгорают. За дополнительную плату даётся возможность зарядить ещё 1 или 2 патрона, чтобы увеличить шансы выигрыша.








Выдаются за выполнение определённых заданий (к примеру, «Азартный игрок» за покупку 5 лепестков в день). В скором времени будут конфигурироваться в админ-панели.

Изменение параметров возможно на странице админ-панели. Поддерживается, к примеру, настройка уровней пользователей (UserLevel) и стоимости билетов (Ticket). Планируется расширение возможностей кастомизации путём переноса коэффициентов, наценок, скидок и т. д. в БД.

Отображает маркетинговую информацию о проекте (впоследствии будет актуализирована).

- тематические квесты ко Дню России, Дню защиты детей и т. д.
- ежедневные миссии из нескольких заданий для получения ачивок
- кликер на манер Hamster Combat, колесо фортуны и прочие стандартные механики
- ставки на спорт, больше парных игр
- внедрение виртуальной реальности (простор для интеграции игр-бродилок, шутеров и т. д.)
- чат с поддержкой (приоритетной для VIP-пользователей)
- полноценная админ-панель с отслеживанием статистики, метрик, логов системы
- система рекомендаций / уведомлений о лотерях и играх
Проект состоит из микросервисов, предназначенных для развёртывания в Docker Compose:
- Веб-приложение
- Prisma Studio — админ-панель
- PostgreSQL — база данных
- Traefik — обратный прокси
При необходимости масштабирования новые сервисы легко добавлять и удалять.
Проект развёрнут на VDS и подключён к сетевому домену.
- Bun — быстрая среда исполнения JavaScript
- TypeScript — статически типизированный JavaScript
- Next.js — фронтенд-фреймворк на основе React
- Tailwind CSS — CSS-фреймворк
- HeroUI — набор компонентов
- Prisma ORM — ORM для работы с БД
- Auth.js — авторизация и управление сессиями
- ESLint — статический анализатор кода
- Stylelint — анализатор стилей
- Prettier — форматировщик кода
- Docker — платформа для контейнеризации
- PostgreSQL — база данных
- Traefik — обратный прокси
Note
Мы отказались от использования git submodules
и git subtree
из-за периодически возникающей путаницы при
отслеживании изменений в монорепозиториях. Данный репозиторий представляет собой единую точку для работы с проектом,
лишённую этих недостатков.
- Клонируйте репозиторий и перейдите в его папку.
- Клонируйте репозитории сервисов, входящих в состав проекта по SSH (рекомендуется):
git clone git@github.com:code-418-dpr/Sakura-web.git services/Sakura-web
или по HTTPS:
git clone https://github.com/code-418-dpr/Sakura-web.git services/Sakura-web
После этого вы можете вносить изменения в каждый из сервисов по-отдельности (в соответствии с инструкциями, описанными в соответствующих README).
- Установите проект по инструкции выше.
- Создайте файл
.env
на основе .env.template и задайте все указанные там параметры. - Установите Docker.
- Теперь запускать проект на сервере можно командой:
docker compose --profile server up -d --build
При модификации сервисов проекта и их тестировании может потребоваться создание файлов .env для каждого из них. Однако, при запуске всех сервисов в одном контейнере (из этого репозитория) их не должно быть. Чтобы не удалять их, для запуска сервисов на локальном устройстве можно воспользоваться следующим набором команд:
mv ./services/Sakura-web/.env ./services/Sakura-web/_.env
docker compose --profile local up -d --build
mv ./services/Sakura-web/_.env ./services/Sakura-web/.env