Личный pet-проект

Spark Space - сайт к моему дню рождения

Интерактивный личный сайт для друзей: поздравления, донаты, лидерборд, wishlist, магазин и мини-игры. Цветовая тема меняется вместе с суммой сбора.

13 дней
первая версия к событию
3 недели
полная переработка v2
4 игры
во второй версии
Spark Space - сайт к моему дню рождения - 1
Spark Space - сайт к моему дню рождения - 2
Spark Space - сайт к моему дню рождения - 3

Задача

Собрать сложный продукт и сделать его понятным

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

Моя роль

Самостоятельно разработал личный проект. Первая версия работала на Vue, Quasar и Supabase; позже ради эксперимента переписал техническую часть на NestJS, Prisma и PostgreSQL.

Ключевое в проекте

BaaS → Backend4 мини-игрыVirtual EconomyDynamic ThemeDocker

Инженерная часть

Что пришлось решить под капотом

01

Полный переход с BaaS на собственный backend

Supabase Auth, БД и realtime заменены на NestJS, Prisma и PostgreSQL, а Vercel - на Docker, Traefik и собственный VPS.

02

Баланс как журнал операций

Внутренняя валюта не хранится одним изменяемым числом: баланс вычисляется как сумма начислений минус сумма списаний, сохраняя историю каждой операции.

03

Интерфейс реагирует на результат события

Палитра сайта построена на CSS-переменных и меняется по мере роста собранной суммы. В первой версии обновление происходило в реальном времени через Supabase.

Реализация

Что вошло в продукт

  • Геймификация: рулетка, слоты, колесо фортуны, карты
  • Внутренняя валюта с журналом начислений и списаний
  • Донаты с лидербордом топ-донатеров
  • Вишлисты для сбора на подарки
  • Магазин мерча со скидками
  • Динамическая тема: дизайн меняется от суммы сборов
  • Собственный NestJS API и Docker-развёртывание

Результат

Сайт использовался друзьями во время моего дня рождения; позднее я переработал его как личный full-stack эксперимент.

Для события был собран полноценный интерактивный сценарий: поздравления, сбор, рейтинг участников, wishlist, магазин, внутренняя валюта и четыре мини-игры.