Files
elmprodvpn/docs/phase-c/C2_WEB_STACK_DECISION.md

38 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.