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

2.1 KiB
Raw Permalink Blame History

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.