Архітектура проєкту

Мапа всіх сервісів і їх взаємодій. Тут описуємо топологію — хто з ким говорить і яким каналом. Глибина окремого сервісу — у його власному <service>/docs/.


Сервіси

СервісТипРоль у системі
stackБек, точка входуОркестратор, auth, маршрутизація між проєктами
stack-clientФронт (web)Веб-інтерфейс для всіх ролей
stack-electronЕлектрон-клієнтРобоче місце оператора
stack-goldenБекЛогіка проєкту goldenbride
stack-primeБекЛогіка проєкту prime
stack-udateБекЛогіка проєкту udate
stack-chathouseБекЛогіка проєкту chathouse
stack-academyБекВнутрішня школа
stack-aiБекAI-функції
stack-commonsБібліотекаСпільні middleware, types, утиліти. Власних docs не має.

Сервіси golden / prime / udate / chathouse структурно схожі — кожен реалізує бізнес-логіку для свого партнерського проєкту. Мінімальний план Family-беку (стандартні сервіси, очікуваний партнерський API, кандидати на спільний мікросервіс) — у Family Blueprint.


Канали взаємодії

  • HTTP — синхронні виклики, переважно фронт ↔ бек і electron ↔ бек.
  • RMQ — асинхронна шина для обміну подіями між бек-сервісами. (TODO: задокументувати схему черг)
  • Спільна БД / Redis / ClickHouse — усі бек-сервіси пишуть в одну Mongo-базу stack. Знімок її стану (розміри, індекси, кандидати на чистку) — у DB Analysis. (TODO: де які стори, що шарується)

Auth і ролі

Авторизація проходить через stack, видається JWT. Кожен бек-сервіс розгортає MiddlevareAuthstack-commons) який кладе req.user якщо токен валідний — не блокуючи запит без токена. Захист на рівні ендпоінта — через guard([roles]).

Ролі — у roles.


API

Карта Swagger-ів усіх сервісів + єдина конвенція відповідей + нюанси гвардів — у API Map.


Інфраструктура доки

  • Docs Pipeline — як stack-docs рендериться у сайт docs.besocial.tech
  • Quartz v5 Migration — чому ми на Quartz v4.5.2 і план переходу на v5