Сайт игровых тестов и генераторов карточек для аудитории 14–21 года на русском и английском. Почти весь трафик — с телефона, результат должен красиво расходиться по чатам и сторис, а страницы — хорошо индексироваться.
Придумал собственную типологию из четырёх осей и 16 типов и сделал сайт под ключ.
• Тест из 32 утверждений дозадаёт вопрос, если ось получилась спорной. У каждого типа — страница с описанием и таблицей совместимости.
• Карточка результата в трёх форматах (сторис, пост, превью ссылки) — серверный рендер на satori + resvg, без headless-браузера. Результат открывается по короткой ссылке с OG-превью.
• Квиз «Угадай игру»: 10 вопросов по 20 секунд, 70 игр, очки считает сервер; лидерборд недели.
• Вход через Steam (своя реализация OpenID 2.0) и по ссылке на почту, сессии на HMAC-токенах.
• Генераторы по библиотеке Steam: карточка игрока, игровой год, сравнение, тир-лист с перетаскиванием.
• Дизайн-система на токенах oklch, тап-зоны от 44 px, вёрстка от 375 px.
• Next.js 16 (App Router), next-intl, Tailwind v4, Radix; Drizzle ORM + PostgreSQL, rate limiting, своя аналитика событий.
• RU и EN, 32 SEO-страницы типов, sitemap.
• Деплой на VPS в изолированном rootless Docker, ночные бэкапы.
Сайт работает: тест, 16 страниц типов, квиз и лидерборд доступны на двух языках.
— 92 юнит-теста Vitest и 23 смоук-сценария Playwright на мобильном и десктопном вьюпорте.
— Каждый мини-апп подключается через общий контракт, новые тесты добавляются без переделки ядра.
— Документация: README, DEPLOY, HANDOFF.
Срок: две рабочие сессии, около 8 200 строк TypeScript.