Системная архитектура
Canopy — это веб-приложение, построенное на основе четырёх главных компонентов. На этой странице описывается стек, объясняются проектные решения и рассматриваются дополнительные модули, расширяющие возможности платформы.
Четырёхкомпонентный стек
Browser (React SPA)
│
│ /api/* (HTTP proxy)
▼
Edge Nginx ──────────────────────────► /drawio/* (self-hosted DrawIO)
│
│ proxy_pass :8000
▼
FastAPI Backend (Python 3.12, uvicorn)
├── SQLAlchemy 2 (async, asyncpg)
├── Alembic migrations
├── JWT auth (HS256) + bcrypt
├── SSE event stream
└── Rate limiting (slowapi)
│
▼
PostgreSQL 18
React SPA (фронтенд)
Весь интерфейс представляет собой одностраничное приложение, созданное с использованием React 18, MUI 6 и React Router 7. Сборку выполняет Vite; все страницы на уровне маршрутов используют импорты lazy() для разделения кода, так что загружается только код текущей страницы. SPA взаимодействует исключительно с бэкендом FastAPI через префикс /api/ — прямого доступа к базе данных с фронтенда нет.
Ключевые библиотеки фронтенда: AG Grid (таблица инвентаря), Recharts (графики), bpmn-js (редактирование BPMN), TipTap (форматированный текст), @dnd-kit (перетаскивание), React Flow (диаграммы архитектуры).