Перейти до вмісту

🏗️ Архітектура UAProject

Цей розділ описує, як працює технічна частина UAProject — від сайту до Minecraft-серверів. Тут пояснюється, як влаштовані компоненти, що між собою пов’язані, і як реалізована інтеграція між Discord, сайтом, грою та платежами.


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.


🧱 Ключові плагіни Minecraft

Section titled “🧱 Ключові плагіни Minecraft”
ПлагінПризначення
CatWalkЗв’язок з бекендом. Отримує вебхуки та виконує дії (видати донат, змінити статус гравця)
GraylistПропускає гравців на сервер лише після заявки або донату
CircleOfImaginationМагічна система. Повністю кастомна, серверна логіка
ServerTeleport-paperТелепортація між серверами Velocity
UAProjectRPUtils, Towny, SiegeWarІгрова логіка, війни, території

🔒 Авторизація та прив’язка

Section titled “🔒 Авторизація та прив’язка”
  • Авторизація на сайті — через Discord OAuth2.
  • Прив’язка Discord ↔ Minecraft через заявку.
  • API токени — через тех. адміністраторів або автологін.
  • Всі критичні дії (модерація, бан, донати) відбуваються лише через верифіковані шляхи.

  • Vercel — сайт/фронтенд
  • UltraServers — Minecraft
  • Власні VPS — бекенд, Redis, worker
  • Portainer + Docker — для управління контейнерами
  • GitHub + GitHub Actions — CI/CD (поки що частково вручну)

UAProject — це не просто сервер, це технічна платформа з відкритою документацією. Якщо ви розробник — ви можете створити власні інтеграції на основі нашого API. З питань API-доступу звертайтесь до THEROER або адміністраторів Discord.