Skip to content

Платформа для организации лотерей, в которых хочется участвовать

License

Notifications You must be signed in to change notification settings

code-418-dpr/Sakura

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sakura

license release

Платформа для организации лотерей, в которых хочется участвовать

Демо

Веб-приложение: https://sakura.code418.ru

Учётные данные (почта и пароль являются одним и тем же значением):

Админ-панель: https://db-studio.sakura.code418.ru

Позволяет редактировать таблицы напрямую в базе данных в удобном интерфейсе. В частности регулировать некоторые механики игры.

Панель управления обратным прокси: http://traefik.sakura.code418.ru

Позволяет отслеживать состояние прокси-сервера и управлять им.

Документация

Авторизация

Производится по электронной почте и паролю. Поддерживается реферальная программа по промокоду, за которую пригласившему и приглашённому участникам начисляются вознаграждения. В скором времени будет добавлена авторизация по аккаунту Яндекса.

Каталог

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

Рейтинговая таблица

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

Тамагочи

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

Лотереи

  • реальные (соответствуют законодательству РФ, призы — деньги или товары);
  • виртуальные (не имеют ограничений, призы — бонусная валюта Лепестки).

Создаются из аккаунта администратора, который может указать тираж билетов, количество всех победителей и суперпризёров, стоимость билета и т. д. Перед созданием реальной лотереи видит чистую прибыль с неё и при экономической неэффективности не позволяет её создать.

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

Игры

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

Морской бой (VIP)

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

Русская рулетка

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

5 букв

Дорожки

Бочка

Сапёр

Игровой автомат

Скретч-карты

Ачивки

Выдаются за выполнение определённых заданий (к примеру, «Азартный игрок» за покупку 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 из-за периодически возникающей путаницы при отслеживании изменений в монорепозиториях. Данный репозиторий представляет собой единую точку для работы с проектом, лишённую этих недостатков.

  1. Клонируйте репозиторий и перейдите в его папку.
  2. Клонируйте репозитории сервисов, входящих в состав проекта по 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).

Запуск и модификация

  1. Установите проект по инструкции выше.
  2. Создайте файл .env на основе .env.template и задайте все указанные там параметры.
  3. Установите Docker.
  4. Теперь запускать проект на сервере можно командой:
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 

About

Платформа для организации лотерей, в которых хочется участвовать

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors 3

  •  
  •  
  •