🏗️ Архітектура UAProject
Цей розділ описує, як працює технічна частина UAProject — від сайту до Minecraft-серверів. Тут пояснюється, як влаштовані компоненти, що між собою пов’язані, і як реалізована інтеграція між Discord, сайтом, грою та платежами.
🔹 Основні компоненти
Section titled “🔹 Основні компоненти”UAProject складається з кількох ключових частин:
Компонент | Опис |
---|---|
Frontend | Сайт на Vue 3 з використанням Vite + Bun, хоститься на Vercel. Забезпечує взаємодію гравців із анкетою, переглядом профілю, підключенням до Discord та іншими функціями. |
Backend | Написаний на FastAPI. Повністю асинхронний стек: FastAPI + SQLAlchemy + arq. Відповідає за логіку гравців, економіки, заявок, донатів, ролей, банів тощо. |
Worker | Асинхронний воркер на базі arq, який слухає зміни в БД (через Redis) та відправляє вебхуки. Реалізує архітектуру подій. |
PostgreSQL | Основна реляційна база даних. |
Redis | Використовується для черги задач (arq ) — обробка вебхуків, фонова логіка. |
Minecraft | Сервер на Purpur, розділений через Velocity на main-heavy, lobby та test-сервери. |
CatWalk | Спеціальний плагін, який отримує вебхуки з бекенду та виконує дії у Minecraft. |
Anaya | Основний Discord-бот. Показує інформацію про гравців, дозволяє адміністрації взаємодіяти із заявками, економікою, профілями. Має також власний REST API. |
Aphrodite | Бот розваг (не пов’язаний напряму з UAProject). |
uaproject-helper | Застарілий бот, зараз функціонал повністю перенесений в Anaya. |
⚙️ Технічні особливості
Section titled “⚙️ Технічні особливості”- REST API: Основний спосіб взаємодії між сайтами, ботами, Minecraft та адмінкою. Доступна документація за адресою:
👉
https://api.uaproject.xyz/v2/docs
- Авторизація в API: Через токен доступу. Отримати токен можна:
- авторизувавшись на сайті → токен зберігається в cookies;
- або звернувшись до технічного адміністратора THEROER (для технічного доступу).
- Вебхуки: Кожна модель у БД підтримує власні
scope
-вебхуки. Вебхук спрацьовує лише, якщо є активна підписка (endpoint + scopes). Відправляється через Redis → worker → Minecraft/Anaya. - Donatello: Обробка донатів здійснюється через інтеграцію з donatello.to. Вебхук приходить на бекенд і тригерить логіку: донат → транзакція → (в майбутньому) purchased item.
- Graylist: Власна система допуску на сервер — плагін дозволяє заходити всім, але лише “прийняті” гравці можуть діяти.
- Економіка: Користувач має унікальний баланс, який можна поповнювати або переказувати іншим. Всі операції відображаються в Discord через Anaya.
- Нікнейми: Minecraft-нік можна змінити лише вручну адміністратором через Anaya. API використовує PUT/POST, а не GET.
📖 Документація
Section titled “📖 Документація”- 🌐 UAProject Docs (гравці) — основна документація, гайди, правила
- 🧠 API UAProject (технічна) — Swagger/FastAPI документація для розробників
- 🧩 Плагіни Minecraft — опис ключових плагінів
- 📋 Анкета нового гравця — через сайт
- 💬 Discord UAProject — комунікація, підтримка, заявки
🧱 Ключові плагіни Minecraft
Section titled “🧱 Ключові плагіни Minecraft”Плагін | Призначення |
---|---|
CatWalk | Зв’язок з бекендом. Отримує вебхуки та виконує дії (видати донат, змінити статус гравця) |
Graylist | Пропускає гравців на сервер лише після заявки або донату |
CircleOfImagination | Магічна система. Повністю кастомна, серверна логіка |
ServerTeleport-paper | Телепортація між серверами Velocity |
UAProjectRPUtils, Towny, SiegeWar | Ігрова логіка, війни, території |
🔒 Авторизація та прив’язка
Section titled “🔒 Авторизація та прив’язка”- Авторизація на сайті — через Discord OAuth2.
- Прив’язка Discord ↔ Minecraft через заявку.
- API токени — через тех. адміністраторів або автологін.
- Всі критичні дії (модерація, бан, донати) відбуваються лише через верифіковані шляхи.
🖥️ Хостинг і деплой
Section titled “🖥️ Хостинг і деплой”- Vercel — сайт/фронтенд
- UltraServers — Minecraft
- Власні VPS — бекенд, Redis, worker
- Portainer + Docker — для управління контейнерами
- GitHub + GitHub Actions — CI/CD (поки що частково вручну)
🌀 Завершення
Section titled “🌀 Завершення”UAProject — це не просто сервер, це технічна платформа з відкритою документацією. Якщо ви розробник — ви можете створити власні інтеграції на основі нашого API. З питань API-доступу звертайтесь до THEROER або адміністраторів Discord.