Develop a coherent Alexander-style pattern language for frontend architecture and design that is useful to both human practitioners and software agents.
The work should move from source collection toward:
1. common vocabulary,
2. recurring forces,
3. candidate patterns,
4. pattern relations,
5. generative sequences,
6. architecture decompositions,
7. technology mappings,
8. machine-readable retrieval and reasoning.
## 2. Research thesis
Frontend architecture is not fundamentally organized around frameworks.
It is organized around recurring decisions concerning:
- authority,
- addressability,
- projection,
- interaction,
- mutation,
- synchronization,
- reconciliation,
- composition,
- execution,
- quality boundaries.
Named architectures and frameworks are configurations or implementations of these decisions.
## 3. First research case
Use Ryan Carniato's "The Grand Unifying Architecture of Frontend" as the first extraction exercise.
Research tasks:
1. reconstruct its Navigation → Content → Affordance model,
2. identify implicit assumptions,
3. extract candidate patterns,
4. identify the forces each pattern resolves,
5. identify where server-authority assumptions cease to hold,
6. compare against local-first architectures,
7. compare against hypermedia architectures,
8. compare against SPA and server-component architectures,
9. map findings into the responsibility model,
10. retain useful concepts without treating the article as the canonical ontology.
## 4. Research streams
### Stream A — Historical GUI architecture
Study:
- MVC,
- MVP,
- Presentation Model,
- Presentation / Domain Separation,
- Flux / Redux,
- Elm architecture,
- event-driven UI.
Goal:
Identify durable state, dependency and interaction patterns that predate current web frameworks.
### Stream B — Web navigation and hypermedia
Study:
- document web,
- REST/hypermedia,
- progressive enhancement,
- HTML forms,
- HTMX-style server interaction,
- browser navigation semantics.
Goal:
Understand addressability, navigation, mutation and server projection.
### Stream C — Rendering and execution
Study:
- CSR,
- SSR,
- SSG,
- hydration,
- partial hydration,
- islands,
- server components,
- resumability,
- streaming,
- edge execution.
Goal:
Separate projection patterns from execution placement and delivery mechanisms.
### Stream D — State authority and synchronization
Study:
- client/server state,
- remote caches,
- optimistic UI,
- local-first,
- CRDTs,
- event sourcing,
- offline-first,
- subscriptions,
- push/pull synchronization.
Goal:
Establish a coherent authority/synchronization/reconciliation language.
### Stream E — Composition and organizational architecture
Study:
- component composition,
- feature slicing,
- microfrontends,
- design systems,
- frontend platform architecture,
- backend-for-frontend patterns,
- monorepos and deployment independence.
Goal:
Separate software composition from ownership and deployment boundaries.
### Stream F — Quality patterns
Study:
- accessibility,
- progressive enhancement,
- performance,
- fault containment,
- security,
- privacy,
- observability,
- recovery.
Goal:
Represent cross-cutting frontend qualities as architectural patterns and forces rather than afterthoughts.
## 5. Research method
For each source or architecture:
### Step 1 — Extract claims
Record what the source says without prematurely normalizing terminology.
### Step 2 — Identify forces
Ask what competing constraints make the proposed solution useful.
### Step 3 — Extract candidate patterns
Look for recurring configurations rather than named technologies.
### Step 4 — Normalize vocabulary
Map source-specific language into the current canon where possible.
### Step 5 — Find counterexamples
Test whether the pattern still holds under:
- offline operation,
- local authority,
- real-time collaboration,
- very low interaction density,
- high interaction density,
- independent deployment,
- unreliable networks,
- strong accessibility requirements.
### Step 6 — Establish relations
Record:
- requires,
- enables,
- refines,
- alternatives,
- conflicts,
- resulting contexts.
### Step 7 — Test generativity
Ask whether the pattern helps produce a next architectural decision.
### Step 8 — Promote cautiously
Move a concept into `patterns/` only when it is sufficiently stable and reusable.
## 6. Initial source families
Create a source catalog spanning:
- Christopher Alexander and pattern-language literature,
- Martin Fowler GUI architecture,
- REST and hypermedia literature,
- Redux / Elm / Flux,
- Feature-Sliced Design,
- microfrontends,
- local-first,
- web.dev rendering literature,
- Patterns.dev,
- framework architectural documentation,
- accessibility and progressive-enhancement literature,
- distributed-systems synchronization concepts.
## 7. Initial pattern extraction targets
Priority candidate patterns:
### Authority
- Server Authority
- Local Authority
- Replicated Authority
- Derived State
- Single Writer
### Address & navigation
- URL as Application State
- Resource Address
- Hierarchical Route
- Progressive Navigation
### Projection
- Static Projection
- Server Projection
- Client Projection
- Streaming Projection
- Islands of Interactivity
### Interaction
- Local Interaction State
- Immediate Feedback
- Pending State
- Optimistic Overlay
### Synchronization
- Invalidate and Reproject
- Pull Synchronization
- Push Synchronization
- Persistent Subscription
- Conflict-Free Merge
- Explicit Conflict
### Composition
- Presentation / Domain Separation
- Vertical Feature Slice
- Independent Feature Boundary
- Backend for Frontend
### Quality
- Progressive Enhancement
- Failure Boundary
- Accessible by Construction
- Performance Budget
- Observable Interaction
## 8. Validation architectures
The emerging language should be tested against at least these application types:
1. mostly-static publication,
2. e-commerce storefront,
3. administrative CRUD application,
4. high-interaction SaaS workspace,
5. real-time dashboard,
6. collaborative editor,
7. offline field application,
8. local-first personal tool,
9. large microfrontend estate,
10. mobile-web/PWA application.
A useful language should explain all ten without forcing them into one preferred architecture.
## 9. Agentic use cases
The infospace should eventually support prompts such as:
> Given this application description, identify the dominant forces and propose applicable patterns.
> Explain why the current architecture exhibits this failure mode.
> Which patterns are incompatible with our offline requirement?
> Decompose this framework architecture into technology-independent patterns.
> What pattern should be considered next after choosing server authority and streaming projection?
> Compare two architectures in terms of forces, not framework features.
This requires graph-friendly metadata and stable identifiers.
| M1 — Seed investigation | [FEP-WP-0002](../../workplans/FEP-WP-0002-seed-language-validation.md), blocked (independent evidence) | Reconciled schema; first source case and local-first contrast; 6–10 connected draft patterns; two completed case walkthroughs with evidence and counterexamples. |
| M2 — Broaden and challenge | [FEP-WP-0003](../../workplans/FEP-WP-0003-contrasting-schools.md), blocked (M1 open; bounded exploration permitted) | Evidence from all six streams; coverage matrix for all ten application types; revise, merge or reject candidates; complete at least four further contrasting cases. |
| M3 — Retrieval and empirical use | [FEP-WP-0004](../../workplans/FEP-WP-0004-reference-surface.md), blocked (M1/M2 prerequisites) | Validated metadata and graph export; held-out retrieval cases; at least two real repository studies tied to revisions; publish limitations. |