Skip to content

alibad/systemdesigner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SystemDesigner

Learn system design end-to-end β€” for free, in your browser. Interactive lessons, quizzes, calculators, and a diagramming sandbox covering classic distributed systems, modern GenAI systems, and ML systems engineering.

Live Site License: MIT Content: CC BY-SA 4.0 PRs Welcome Built with Next.js Made with ❀️


What is SystemDesigner?

SystemDesigner is a free, open-source platform that turns "I should probably learn system design" into a guided, hands-on journey. Instead of a wall of text, you get 425 structured content entries, interactive quizzes across the curriculum, hands-on calculators for back-of-the-envelope math, and a tldraw diagramming sandbox to sketch architectures as you go. Learning paths track your progress and stitch lessons into prerequisite-aware sequences β€” so you always know what to learn next.

It covers the full spectrum: classic distributed-systems design (caching, sharding, queues, consistency), modern GenAI systems (RAG, agents, evals, token economics), and ML systems engineering (feature stores, serving, monitoring). Every concept follows one editorial rule β€” "Explain before you dive deep" β€” so each topic opens with a plain-language "What is [Concept]?" intro you can grasp in 15–30 seconds, then progressively unfolds into the trade-offs.

The app runs fully anonymously with zero configuration. Sign-in is optional and only used to sync progress across devices and save your diagrams.

SystemDesigner demo

Maintainers: this demo lives at public/screenshots/desktop-demo.gif β€” swap it for a fresh capture when the UI changes.


✨ Features

πŸ“š Learn

  • 300+ lessons across 8 sections β€” fundamentals, GenAI, ML systems, technology deep-dives, case studies, reference, and tools.
  • Learning paths & progress tracking β€” prerequisite-aware sequences that always tell you what to study next.
  • "Explain before you dive deep" β€” every concept opens with a beginner-friendly intro before the trade-offs.
  • Dark mode throughout.

🧠 Practice

  • Interactive quizzes throughout the curriculum β€” co-located lesson quizzes and the shared quiz bank test understanding on every topic.
  • Practice problems β€” structured, interview-style walkthroughs (clarify β†’ estimate β†’ architect β†’ deep-dive β†’ operate) for system design, ML systems, and GenAI systems.

πŸ› οΈ Build

  • Interactive calculators β€” latency, throughput, cost, and capacity estimates with live sliders.
  • tldraw diagramming sandbox β€” sketch architectures right in the browser; sign in to save and sync them.

πŸŽ“ What you'll learn

Section What it covers Entries
Technology Deep-dives into specific tools & frameworks (databases, queues, caches, infra) 136
GenAI LLMs, RAG, agents, evals, prompt engineering, token economics 76
ML Systems Feature stores, training/serving pipelines, monitoring, ML infra 61
Fundamentals Core distributed-systems concepts (CAP, sharding, consistency, caching) 50
Practice Interview-style design exercises with structured walkthroughs 29
Reference Quick references, formulas, and back-of-the-envelope cheat sheets 27
Tools Interactive calculators and hands-on utilities 26
Case Studies Real-world system breakdowns end-to-end 20
Total 425

πŸš€ Quick start

Prerequisites: Node.js 20+ and pnpm 10.4.1.

# 1. Clone
git clone https://github.com/alibad/systemdesigner.git
cd systemdesigner

# 2. Use the pinned pnpm version
corepack enable
corepack prepare pnpm@10.4.1 --activate

# 3. Install dependencies
pnpm install

# 4. Run the dev server
pnpm dev

Open http://localhost:3000 β€” that's it. The app runs with zero config and works fully anonymously, no environment variables required. Sign-in (Firebase) is optional and only needed for cross-device progress sync and saving diagrams.

Do I need secrets?

No. New contributors should not set up secrets just to run the app, fix content, add quizzes, edit calculators, or open a PR.

Only set up environment variables when you are working on a feature that actually needs them:

Feature area Setup needed
Auth, cross-device progress, cloud-saved diagrams Firebase web config (NEXT_PUBLIC_FIREBASE_*)
Admin screens on your own fork NEXT_PUBLIC_ADMIN_EMAILS
Feedback widget creating GitHub issues GitHub App credentials
AI helpers or maintainer content-generation tooling OPENAI_API_KEY
Production SEO verification GOOGLE_SITE_VERIFICATION

NEXT_PUBLIC_* values are public browser config, not server secrets. Real secrets, like OpenAI keys and GitHub App private keys, belong only in .env.local or your hosting provider's secret manager.

Deploying your own fork? See docs/DEVELOPMENT.md for the full list of (all optional) environment variables.


🀝 Contributing

You don't need to write code to improve a lesson. SystemDesigner is built to make contributions easy, whether you spotted a typo or want to author a whole new topic.

  • ✏️ Edit this page on GitHub β€” every lesson page has a deep link that opens the exact source file in GitHub's editor. Fix it, propose a change, done.
  • πŸ’‘ Suggest an improvement β€” every lesson also links to a prefilled GitHub issue (the content-improvement form), so you can flag a problem in seconds.
  • 🧩 Propose new content β€” structured Issue Forms let you propose a new lesson, quiz, or calculator.
  • πŸ› Report bugs & request features β€” dedicated Issue Forms, plus GitHub Discussions for questions and ideas.
  • 🌱 Good first issues are labeled good first issue.

Pull requests follow the PR template; CI scans for obvious secrets, validates content, runs tests, lints, and builds.

πŸ‘‰ Start with CONTRIBUTING.md, and for authoring lessons read the Content Guide.


πŸ—‚οΈ Project structure

systemdesigner/
β”œβ”€β”€ app/                        # Next.js App Router and shared section [slug] routes
β”œβ”€β”€ content/entries/            # Canonical registry-driven content bodies
β”‚   └── [section]/[slug]/
β”‚       β”œβ”€β”€ index.mdoc          # The lesson body (path must match the registry)
β”‚       β”œβ”€β”€ code/               # Co-located code examples, served via /api/content/[...]
β”‚       β”œβ”€β”€ quiz/               # Canonical lesson quiz JSON
β”‚       └── data/               # Other structured lesson data
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ content-registry.ts     # ⭐ Single source of truth β€” every content entry's metadata
β”‚   └── quiz-bank/
β”‚       └── all-quizzes.json    # Shared/legacy quiz bank for entries that reference quizId
β”œβ”€β”€ components/                 # Shared UI β€” CodeBlock, InteractiveQuiz, LessonHeader, calculators/
β”œβ”€β”€ docs/                       # CONTENT_GUIDE, ARCHITECTURE, DEVELOPMENT
β”œβ”€β”€ scripts/                    # validate-content-registry.cjs, generate-quiz-bank.cjs
└── public/                     # Static assets (screenshots/demo, icons, generated imagery)

The content registry (lib/content-registry.ts) is the heart of the system β€” navigation, learning paths, sitemaps, and SEO are all generated from it. Validate it anytime with:

pnpm validate:registry   # the content registry gate CI runs
pnpm check               # full local pre-PR check

🧱 Tech stack

  • Next.js 14 (App Router), React 18, TypeScript, Tailwind CSS
  • Firebase (Auth, Firestore, Storage) β€” accounts, progress sync, saved diagrams (all optional; the app works anonymously)
  • tldraw β€” the in-browser diagramming sandbox
  • MDX (next-mdx-remote) β€” for some reference content
  • OpenAI API β€” optional, maintainer-side content-generation tooling only; never required to run the app
  • pnpm (10.4.1) Β· Node 20+

πŸ“– Documentation

Doc What's inside
CONTRIBUTING.md How to contribute β€” fixes, new content, PRs
docs/CONTENT_GUIDE.md Authoring lessons, quizzes & calculators (the content system)
docs/ARCHITECTURE.md How the app & content registry fit together
docs/DEVELOPMENT.md Local setup, env vars, scripts, deployment
docs/OPEN_SOURCE_AUDIT.md Maintainer checklist before publishing the repo
docs/MAINTAINER_RELEASE.md How maintainers create a sanitized public release
ROADMAP.md Where the project is headed & where to help
GOVERNANCE.md How decisions are made & how to become a maintainer
CODE_OF_CONDUCT.md Community standards
SECURITY.md Reporting security issues
SUPPORT.md Where to get help

Deeper authoring standards live in AGENTS.md. Need help? See SUPPORT.md or email the community list at system-designer@googlegroups.com.


πŸ“œ License

SystemDesigner uses a dual license:

When reusing content, please attribute "SystemDesigner (systemdesigner.net)" and link back to the source.


πŸ™Œ Acknowledgements & star the repo

SystemDesigner is a community effort to make world-class system design education free and open to everyone. Huge thanks to every contributor who fixes a lesson, files an issue, or authors a new topic.

If this project helps you learn, please ⭐ star the repo β€” it genuinely helps others discover it.

Questions or ideas? Open a Discussion, join system-designer@googlegroups.com, or reach the maintainer at alibadereddin@gmail.com.

About

Free, interactive system design learning with lessons, quizzes, calculators, and architecture tools.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages