Веб-проект
XOgame
Крестики-нолики онлайн: игра с ботом, с другом по ссылке или со случайным соперником. Свой фронтенд и свой бэкенд с realtime-синхронизацией ходов.
- React
- TypeScript
- Vite
- Vapor (Swift)
- PostgreSQL
- WebSocket
01 / Контекст
О проекте
XOgame — крестики-нолики в браузере без регистрации: игрок получает анонимный токен и сразу играет. Три режима — против бота (3 уровня сложности), с другом по инвайт-ссылке или коду, и случайный соперник через матчмейкинг с живой очередью. Поле можно выбрать от классического 3×3 до 6×6 с увеличенной длиной выигрышной линии, есть светлая/тёмная тема и обычная и «волшебная» тема значков.
Фронтенд — React 19 + TypeScript на Vite, роутинг через react-router, игровая логика вынесена в чистые функции и переиспользуется между локальным ботом и генерацией победных комбинаций для любого размера поля. Бэкенд — свой сервис на Vapor (Swift 6) поверх PostgreSQL: вся игровая логика (проверка победителя, генерация инвайт-кодов, матчмейкинг через FOR UPDATE SKIP LOCKED, реванши) живёт в SQL-функциях, а Vapor — тонкий HTTP/WebSocket-слой над ними через SQLKit. Обновления хода передаются обеим сторонам по WebSocket без поллинга. Фронтенд задеплоен на GitHub Pages с собственным доменом и пререндером ключевых маршрутов под SEO, бэкенд — в Docker за Nginx с HTTPS от Let's Encrypt на отдельном сервере.
- Роль
- Full-stack: фронтенд + бэкенд
- Платформа
- Web
- Основа
- React · Vapor (Swift) · PostgreSQL
02 / Интерфейс
Галерея
Режимы игры, темы оформления и живой мультиплеер по ссылке.