platform: modularize api/gui, add docs-tests-web foundation, and refresh root config
This commit is contained in:
37
docs/phase-c/C2_WEB_STACK_DECISION.md
Normal file
37
docs/phase-c/C2_WEB_STACK_DECISION.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# C2 Решение по стеку web prototype
|
||||
|
||||
Дата: 2026-03-07
|
||||
Статус: approved
|
||||
Владелец: Engineering
|
||||
|
||||
## 1) Принятое решение
|
||||
- Для web prototype используется `Vite + React + TypeScript` (SPA).
|
||||
- Бэкенд-ядро остаётся в Go (`/api/v1` + SSE `/api/v1/events/stream`).
|
||||
- `Next.js` на MVP-этапе не используется.
|
||||
|
||||
## 2) Почему так
|
||||
- В проекте уже есть готовый Go API-контракт; отдельный Node/SSR-слой не обязателен.
|
||||
- Цель текущего этапа: рабочая control-plane панель, а не SEO-публичный сайт.
|
||||
- `Vite` даёт быстрый старт, простой билд и минимальные операционные риски.
|
||||
|
||||
## 3) Базовый frontend stack
|
||||
- `react` + `typescript`
|
||||
- `vite`
|
||||
- `react-router`
|
||||
- `@tanstack/react-query` для REST
|
||||
- `EventSource` (SSE) для realtime
|
||||
- lightweight UI state (например, `zustand`) только для локального состояния интерфейса
|
||||
|
||||
## 4) Когда рассматривать переход на Next.js
|
||||
- Появляется требование SSR/SEO.
|
||||
- Нужен встроенный BFF/edge middleware в самом фронтенд-проекте.
|
||||
- Требуется server-side session orchestration, которую нецелесообразно держать в Go gateway.
|
||||
|
||||
## 5) Архитектурный инвариант
|
||||
- Независимо от UI-фреймворка, источник истины остаётся в Go-ядре.
|
||||
- UI не дублирует бизнес-логику маршрутизации/transport/policy.
|
||||
- Контракт для web/iOS/Android остаётся единым: `/api/v1`.
|
||||
|
||||
## 6) Статус внедрения
|
||||
- Создан модуль `selective-vpn-web/` (foundation level).
|
||||
- На текущем этапе включены read-only проверки и SSE connectivity; mutating controls будут подключаться по фазам P1/E4.
|
||||
Reference in New Issue
Block a user