# 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.