Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Frontend Engineering logo

Frontend Engineering

[!NOTE] In memory of Saber Rastikerdar Creator of Vazirmatn, the open typeface he gave the Persian web and asked nothing for.

Engineering decisions, not tutorials.

A long-term, community-driven, peer-reviewed knowledge base of frontend engineering
patterns, trade-offs, and production-ready practices — framework-aware, not framework-bound.

Stop re-litigating frontend decisions from scratch.
Find the trade-offs, choose deliberately, and ship the decision your future team can defend.

Frontend Engineering

Read it on the web →

License: MIT CI Contributions welcome Code of Conduct Last commit Stars


Table of Contents

Why this project exists

Frontend engineering knowledge is scattered across blog posts, framework changelogs, conference talks, and tribal experience. Much of it goes stale, contradicts itself, or optimizes for a demo rather than a production system.

Frontend Engineering is a durable, versioned, peer-reviewed reference that captures the decisions behind good frontend systems — the problem, the options, the trade-offs, and a defensible recommendation — and stays useful for years, independent of any single framework's release cycle. The emphasis is on reasoning: why one approach is chosen over another, not step-by-step instructions.

Your next data-loading, caching, or validation choice will shape more code than the first pull request suggests. This is the place to make that choice once — with the constraints visible — instead of rediscovering it during the next incident or rewrite.

What it is — and is not

It isIt is not
  • A reference for engineering decisions: patterns, architecture, trade-offs.
  • Production-ready approaches, each with when-to-use and when-to-avoid.
  • A catalog of anti-patterns and why they fail at scale.
  • Framework-aware but not framework-bound — concepts over any one API.
  • Peer-reviewed and versioned; it improves through review.
  • Not a tutorial site. No "build your first component" walkthroughs.
  • Not framework docs. It doesn't duplicate React/TypeScript docs.
  • Not a link dump. Every entry is original and self-contained.
  • Not a news feed. Durable principles, not release announcements.
  • Not unqualified opinion. Recommendations follow from trade-off analysis.

Who it's for

Mid-level to senior frontend engineers making architectural and design decisions; tech leads and staff engineers setting standards across teams; and engineers preparing for system-design discussions who want structured reasoning rather than recipes. A working knowledge of JavaScript, the browser platform, and at least one component framework is assumed — this is not aimed at absolute beginners.

Start with a decision

🧭 45 peer-reviewed articles are already available. Start with the decision currently slowing your team down.

If you're deciding… Start here You will leave with
When to start a request Fetch-on-Render vs Render-as-You-Fetch A loading model that matches the user experience you need.
What makes cached data the same data Cache Keys & Query Identity A stable cache identity that avoids subtle duplication and invalidation bugs.
How to keep form input trustworthy Schema Validation A contract between UI, validation, and inferred types.
Where a piece of work should run Process & Thread Architecture A main-thread budget, and the rule for what to offload.
Which client store to reach for Web Storage The size and access-pattern thresholds that decide it.
How to stop the CSS override arms race Specificity A flat, layered precedence model instead of !important.
What actually protects a logged-in user Same-Origin Policy The read/write asymmetry, and the defenses each side needs.

Browse the published collections: Data & Server State, Forms & Validation, State Management, and Performance — plus the entry-point articles now open across Foundations and Core Languages. If this would save your team a future debate, star the repository and come back when the next one begins.

⚡ The familiar feeling

Drake meme: rejecting another generic tutorial and approving a decision guide with trade-offs

Less recipe. More reasoning.

This Is Fine meme: using the endpoint URL for the cache key
A cache key is an identity, not just a URL. Read Cache Keys & Query Identity.

Features

  • 🗺️ Four-level knowledge map — Part → Domain → Topic → Article — that scales to 1000+ entries without the root ever widening.
  • 🔗 Typed cross-links between every article: prerequisites, next, related, alternatives, and common mistakes.
  • 🧩 Dependency graph with difficulty, reading time, and recommended order for every entry.
  • 🧭 Role-based learning paths — curated journeys for beginners, React developers, architects, and specialists.
  • ⚖️ Standardized template — every article contrasts a realistic bad example with a production-ready good example.
  • Two-stage review — technical correctness and editorial craft are checked separately before anything ships.
  • 🛡️ CI-validated — Markdown lint, link checking, spell checking, and frontmatter validation run on every change.

Repository structure

frontend-engineering/
├─ docs/                  # The knowledge base — 9 Parts (see the map below)
├─ paths/                 # Role-based learning paths across the map
├─ examples/              # Minimal, focused code illustrating one decision
├─ recipes/               # End-to-end solutions to recurring problems
├─ anti-patterns/         # Documented pitfalls and why they fail at scale
├─ templates/             # The standard article template every entry follows
├─ standards/             # The content framework every document must follow
├─ assets/                # Diagrams, images, and brand assets
├─ scripts/               # Link/graph build + validation tooling
├─ KNOWLEDGE_MAP.md       # Full taxonomy and priorities
├─ ARTICLE_INVENTORY.md   # Per-article backlog (title, slug, difficulty, status)
├─ GRAPH.md               # Dependency graph, difficulty, reading order
├─ INTERNAL_LINKING.md    # Cross-link strategy (five typed relations)
└─ .github/               # Community health, labels, CI, project specs

The knowledge map

Documentation lives under docs/, ordered as a learning gradient from foundations to leadership. Full structure and priorities are in the Knowledge Map; the per-article backlog is in the Article Inventory; learning dependencies and reading order are in the Dependency Graph.

Part Focus Priority
00 · Foundations Web platform, runtime, browser APIs, networking Critical
01 · Core Languages HTML, CSS, JavaScript, TypeScript Critical
02 · Rendering & Frameworks Rendering architectures, React, reactivity, routing Critical
03 · Application Architecture Architecture, state, data, forms, API contracts Critical
04 · Interface Engineering Components, design systems, accessibility, motion High
05 · Reliability & Quality Performance, security, testing, observability Critical
06 · Engineering Systems Build, packages, developer experience, delivery High
07 · Platform Reach Internationalization, PWA, graphics & immersive Medium
08 · Craft & Leadership Engineering practices, systems thinking, leadership High

Learning paths

Rather than reading top to bottom, follow a role-based path curated through the map:

Contributing

Contributions are welcome and encouraged. Every entry follows the standard article template and passes peer review. Good starting points are issues labeled good first issue and content corrections.

Before opening a pull request, read:

  • CONTRIBUTING.md — how to contribute, standards, naming, and review criteria.
  • standards/ — the content framework every document follows: philosophy, voice, quality bar, code and diagram rules, review pipeline, and health metrics.
  • CODE_OF_CONDUCT.md — community standards.
  • GOVERNANCE.md — roles, decision-making, and the RFC process.

Work is organized with a scalable label system, a project board, and milestones.

Previewing the site

The published site is built from this repository with VitePress — the markdown is the source, so there is nothing to duplicate. To preview a change locally:

npm install           # or pnpm install
npm run docs:dev      # local server with hot reload
npm run docs:build    # production build into .vitepress/dist

Sidebar navigation is generated from each domain's graph.json, so a new article appears once its file exists — no navigation file to update.

Two notes on the toolchain: Mermaid's dayjs, cytoscape, and @braintree/sanitize-url are declared as direct devDependencies because the Mermaid plugin pre-bundles them by bare name, which needs them resolvable from the project root under any package manager. And vitepress dev prints one harmless Failed to resolve dependency: debug warning — that name is on the plugin's pre-bundle list but is not a Mermaid 11 dependency.

Roadmap

The project ships in versioned releases; a "release" is a citable snapshot of the content. Full goals and completion criteria are in .github/MILESTONES.md.

  • v0.1 — Foundation: structure, standards, governance, and the full professional GitHub surface.
  • v0.2 — Core Articles: seed the critical Parts with peer-reviewed articles.
  • v0.3 — Examples: runnable code tied to the reasoning.
  • v0.4 — Recipes: end-to-end solutions to recurring problems.
  • v0.5 — Anti-patterns: documented pitfalls with honest caveats.
  • v1.0 — Stable: coverage across all nine Parts, decision guides, and a maintenance cadence.

FAQ

How is this different from MDN or the official framework docs?

MDN and framework docs explain what an API does. This repository explains which approach to choose and why, across competing options, with the trade-offs made explicit. It complements reference docs; it doesn't replace them.

Is this a tutorial or course?

No. There are no "getting started" walkthroughs. Every entry assumes working familiarity and focuses on engineering decisions. If you want to learn your first framework, start elsewhere and come back when you're making architectural choices.

Which frameworks does it cover?

It is framework-aware but not framework-bound. Concepts that transfer are prioritized; where a pattern is framework-specific (often React), it says so and names versions when behavior depends on them.

Can I contribute if I'm not a staff engineer?

Yes. Corrections, references, clearer prose, and examples are all valuable, and every contribution is reviewed against clear criteria. See CONTRIBUTING.md.

How do I cite it?

Use the metadata in CITATION.cff, and cite a specific release tag so the reference is stable.

Community

  • 💬 Discussions — ask conceptual questions and propose topics.
  • 🐞 Issues — report content errors or propose articles using the templates.
  • 🔒 Security — privately report unsafe example code or tooling risk.
  • 🙋 Support — where to go for what.

Participation is governed by our Code of Conduct.

Acknowledgements

This project's structure and standards are inspired by the maintainers who set the bar for open-source quality — the teams behind React, TypeScript, TanStack, shadcn/ui, Next.js, Vitest, and Astro — and by the countless engineers whose blog posts, talks, and code reviews turned scattered lessons into shared craft. Thank you to every contributor who helps keep this reference accurate and durable.

License

Released under the MIT License. Content contributed to this repository is shared under the same terms.

Built for engineers making decisions. · Contribute · Discuss

Releases

Packages

Used by

Contributors

Languages