Перейти к содержанию

Архитектура

Модули верхнего уровня

  • Frontend (React/Vite): пользовательский интерфейс (админка и кабинеты ролей)
  • Backend API (FastAPI): доменная логика, авторизация, интеграции
  • Supabase: PostgreSQL + Auth + Storage + Realtime (как платформа данных и авторизации)
  • Worker (Celery): фоновые задачи
  • Rust API: отдельные сервисные endpoint'ы (в т.ч. “поиск”)
  • Analytics: ClickHouse/Superset (частично), Grafana (если включено)
  • Reverse proxy: Nginx

Границы ответственности

  • Frontend: маршруты, UI-состояния, вызовы API, хранение токенов на клиенте, проксирование /api в dev через Vite
  • Backend (FastAPI): бизнес-правила, валидация, доступ к данным (через Supabase/PostgreSQL), сервисные операции, аудит/аналитика
  • Supabase: Auth (auth.users), политика доступа (RLS), хранилище файлов, realtime-каналы
  • Worker: “тяжёлые” операции, интеграционные ретраи, отложенные задачи

Потоки данных (основные)

  • Пользователь → Frontend → Backend API → PostgreSQL/Supabase
  • Frontend → Supabase (клиент в браузере) для Auth/Realtime/Storage (в зависимости от сценария)
  • Frontend/Backend → Analytics (события) → PostgreSQL/Redis/ClickHouse → Grafana/Superset (если настроено)

Точки интеграции

  • Платежи (например YooKassa) — backend /payments/*
  • Карты (Yandex Maps / Mapbox) — frontend компоненты + внешняя API
  • Уведомления (OneSignal) — frontend SDK + backend триггеры (требует актуализации)

Источники данных

  • PostgreSQL (через Supabase): основной операционный источник истины
  • Redis: кеш/счётчики/реалтайм-слой
  • MongoDB: вспомогательное хранилище (уточнить домены)
  • ClickHouse: аналитические события (если включено)

Риски и слабые места

  • Расхождение контрактов между frontend/backend (типы TS vs Pydantic/DB)
  • Дублирование источников документации и статусов задач (Plans/Projects/Knowledge vs docs/*)
  • Зависимость от окружения и портов (в dev важны внутренние/внешние URL)

Допущения и ограничения

  • Локальный запуск ориентирован на Docker Compose
  • Supabase используется как единый слой Auth/DB/Storage

Связанные документы

  • [[docs/04_инфраструктура/инфраструктура]]
  • [[docs/06_backend/backend]]
  • [[docs/07_frontend/frontend]]
  • [[docs/08_api/api]]
  • [[docs/18_графы/graph_архитектура]]