An open handbook of everything a software engineer needs to know.
576 topics across 26 categories — system design, software architecture, distributed systems, databases, messaging, APIs, networking, reliability, observability, security, testing, DevOps, performance, data engineering, ML systems, platform engineering, multi-tenancy, compliance, cost engineering, frontend, mobile and engineering practice.
Every written topic follows the same structure, so you always know where to look:
| Section | What it answers |
|---|---|
| What it is | A plain-language definition, no jargon in the first sentence |
| Why it exists | The problem it solves; what breaks without it |
| How it works | The mechanism, the variants, the algorithms |
| Diagram | A Mermaid diagram of the actual mechanism |
| Trade-offs | A table: option, pros, cons, and when to pick it |
| In the real world | A named system doing it, with numbers |
| Code | Language-agnostic pseudocode, plus one real snippet |
| Pitfalls | How people get it wrong in production |
| When not to use it | The cases where this is the wrong tool |
- ⌘K search over every topic, alias, heading and body — fully client-side, no backend.
- 8 learning paths: Junior → Mid, Mid → Senior, System Design Interview, SRE, Backend, Security, Data & ML, Platform.
- Theme-aware diagrams that re-render in light and dark.
- Glossary of every topic and alias, A–Z.
- Roadmap showing how the 26 categories relate.
- Static site. No tracking, no accounts, no server.
git clone https://github.com/itsmadson/DoUKnow.git
cd DoUKnow
npm install
npm run dev| Command | What it does |
|---|---|
npm run dev |
Build the content index, then start Vite |
npm run build |
Content index → typecheck → production build into dist/ |
npm test |
Vitest: content lint, search, routing, palette |
npm run lint |
ESLint |
npm run content |
Regenerate content-index.json and search-corpus.json |
npm run new:topic -- <slug> |
Scaffold a correctly-shaped MDX file for a taxonomy topic |
src/taxonomy/*.ts Source of truth: 26 categories, 576 topics, 8 learning paths
src/content/**/*.mdx The written topics
scripts/ Content index builder and topic scaffolder
src/components/ Shell, sidebar, ⌘K palette, TOC, Mermaid, MDX section components
src/pages/ Home, Category, Topic, Paths, Glossary, Roadmap, 404
The taxonomy declares which topics exist; scripts/build-content-index.mjs reads it plus
every MDX file and emits content-index.json (metadata and navigation) and
search-corpus.json (body text, loaded lazily). Topic bodies are code-split one chunk per
topic, so the bundle stays flat as topics are added.
A topic with no MDX file yet renders as a stub: still listed, still searchable, with a link to write it. That is deliberate — the index of what you should know is useful even before every page is finished.
Stack: React 19 · TypeScript · Vite 6 · Tailwind v4 · MDX · MiniSearch · Mermaid · lucide-react · Vitest.
Writing a topic is the most useful thing you can do here, and stubs are the best place to start. See CONTRIBUTING.md — it takes about five minutes to get set up.
Corrections are equally welcome. If something on this site is wrong, open an issue; being wrong in public is the one thing a reference cannot afford.
Pushing to main runs lint, tests and a build, then deploys to GitHub Pages. To host it
elsewhere, set BASE_PATH at build time:
BASE_PATH=/ npm run buildMIT — see LICENSE. Use it, fork it, teach from it.