diff --git a/openspec/changes/2025-11-17-web-stack-decision/proposal.md b/openspec/changes/2025-11-17-web-stack-decision/proposal.md new file mode 100644 index 0000000..bc01518 --- /dev/null +++ b/openspec/changes/2025-11-17-web-stack-decision/proposal.md @@ -0,0 +1,46 @@ +# Proposal: Web Stack Decision + +Status: draft +Authors: Platform Team +Owners: Architecture Lead, Web Lead +Created: 2025-11-17 +Scope: spec +Related: openspec/specs/architecture.md + +Summary +- Decide between Next.js (React/SSR) vs Flutter Web to deliver accessible, SEO‑friendly, performant web with parity to mobile. + +Motivation +- Ensure the web stack supports public SEO content (resources/blog), members‑only features, and strong a11y/compliance. + +Goals / Non‑Goals +- Goals: select stack, document SSR/SEO approach, a11y/testing strategy, and performance budgets. +- Non‑Goals: design system details (future proposal). + +Evaluation Criteria +- Accessibility: semantic HTML, keyboard/focus, screen readers, reduced motion, large text. +- SEO & SSR: canonical URLs, Open Graph, sitemaps, incremental static regen. +- Performance: Core Web Vitals targets (LCP < 2.5s, INP < 200ms, CLS < 0.1). +- Ecosystem: routing, data fetching, auth integration, CMS/blog interop. + +Options +- Next.js (App Router, React 18, RSC + server actions) +- Flutter Web (single codebase, a11y improvements; evaluate SEO constraints) + +Risks & Mitigations +- SEO constraints with Flutter Web → fallback to Next.js for public surfaces if chosen. + +Rollout Plan +- Implement public resource list and blog index prototype; measure CWV and a11y checks. + +Test Plan +- Lighthouse/CWV, axe, keyboard nav tests; SEO meta validation. + +Acceptance Criteria +- Decision recorded with rationale; prototype metrics captured; a11y/SEO sign‑off. + +Slash Commands +- `/review areas=web,accessibility,security` +- `/apply spec=openspec/specs/architecture.md` +- `/archive link=` +