Завантаження…

(DevBlog) Розробка dota2.ua: Як побудувана екосистема для кібер-спільноти

Ділюся досвідом створення Dota2.ua.

Dota2.ua — це повноцінний full-stack проєкт, який об'єднує в собі соціальні мережеві функції, розширену статистику та глибоку інтеграцію зі Steam Game Coordinator. Щоб забезпечити надійність, гнучкість та готовність до навантажень, я розділив архітектуру на три незалежні частини, ізолювавши критично важливі вузли.

Технологічний стек та Архітектура

1. Frontend (Клієнтська частина)

Інтерфейс побудований з акцентом на швидкість та сучасний UI. Стек: Vue 3, Vite, Tailwind CSS v4, Pinia, Vue Router. Взаємодія: Axios, Socket.IO Client. Редактор контенту: Quill.

2. Backend (Основне API та бізнес-логіка)

Надійне ядро, яке відповідає за роботу з базою даних, безпеку, обробку медіа та власні соціальні фічі (форум, профілі, новини). У цій архітектурі Node.js також виступає проксі-сервером між клієнтом та Go-мікросервісом. Стек: Node.js, Express 5, MongoDB + Mongoose. Безпека та авторизація: JWT, bcrypt, Helmet, express-rate-limit, sanitize-html / DOMPurify. Обробка даних: Multer, Socket.IO.

3. Go-мікросервіс (Серце інтеграції зі Steam)

Найцікавіше рішення — винесення роботи зі Steam GC в окремий мікросервіс на Go. Використовуючи бібліотеки go-steam та go-dota2, сервіс спілкується з бекендом через внутрішній HTTP API. Що реалізовано через Go: Створення та повне керування ігровими лобі. Пряма взаємодія зі Steam Game Coordinator. Моніторинг ігрової активності в реальному часі. Авторизація Steam через TOTP.

Інтеграції та Зовнішні сервіси

Для забезпечення платформи актуальними даними я під'єднав низку API:

Статистика та кіберспорт:

PandaScore API (турніри та матчі), OpenDota / dotaconstants (база героїв, патчів та предметів), Stratz API (детальна ігрова статистика через потужний GraphQL).

Медіа та Контент:

Twitch API, YouTube API / Gmail API (фетчинг тематичних відео та розсилки). Інфраструктура:

Valve CDN (старий, але надійний спосіб доставки ігрових ресурсів).

ML та Безпека:

Google Cloud Vision (автоматична модерація завантажених зображень на NSFW).

Інсайти розробки та Інструменти

Під час роботи над проєктом відкрив для себе кілька геймченджерів:

Source2Viewer: Незамінна річ для витягування UI/UX елементів гри. Термінальна версія для Mac - просто топ для експорту та пошуку, хоча попередньо краще ознайомитися з файлами через графічний інтерфейс.

Cloudflare R2 Object Storage: Залишився в абсолютному захваті від їхнього підходу до зберігання та доставки зображень/відео.

Google Cloud Run: Справжній "головний бос" інфраструктури, працювати з gcloud — суцільне задоволення.

Форум Dota 2 UA