ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Learn system design by moving the sliders: every concept paired with a live simulation you can push until it breaks.
EducationTypeScript · CSSGitHub @derek-le1105OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
An interactive system design curriculum. Every topic pairs a written
explanation with a live simulation you can push until it breaks — adjust the
request rate and watch a fleet saturate, cut a network link and watch a
cluster choose between stale answers and no answers, skew a key distribution
and watch one shard take the whole load.
Client-side only. No backend, no accounts; progress lives in localStorage.
Next.js (App Router) · TypeScript · Tailwind CSS v4. Statically exported
pages, one accent colour, light and dark themes.Read the full README ↗An interactive system design curriculum. Every topic pairs a written explanation with a live simulation you can push until it breaks — adjust the request rate and watch a fleet saturate, cut a network link and watch a cluster choose between stale answers and no answers, skew a key distribution and watch one shard take the whole load.
Client-side only. No backend, no accounts; progress lives in localStorage.
Next.js (App Router) · TypeScript · Tailwind CSS v4. Statically exported pages, one accent colour, light and dark themes.
npm install
npm run dev # http://localhost:3000
npm run build # prerenders every topic
npx eslint .
npx tsc --noEmit
Fifteen topics across four modules, following the roadmap.sh System Design roadmap.
| Module | Topics | Interactives |
|---|---|---|
| 1 · Foundations | Scalability vs Performance, Latency vs Throughput, CAP Theorem, Consistency Patterns, Availability Patterns | Scale, Pipe, Partition, Replication, Uptime |
| 2 · Networking | DNS, CDN, Load Balancing | Resolver, Edge, Balancer |
| 3 · Scaling | Horizontal Scaling, Microservices, Service Discovery | Fleet, Blast Radius, Registry |
| 4 · Databases | SQL vs NoSQL, Replication, Sharding, Federation | Query Cost, Topology, Shard, Split |
Modules 5–8 (Caching, Asynchronism, APIs, Cloud Design Patterns) are scoped on the home page but not built. They follow the same pattern, so adding one means adding a topic component and registering it.
src/
lib/
curriculum.ts module and topic metadata — the single source of truth
sim.ts seeded RNG, fixed-timestep ticker, rolling percentiles
progress.ts localStorage-backed completion store
components/
Lab.tsx the shell every interactive sits in
prose.tsx Analogy, Tradeoffs, Pitfall, Takeaways
sims/ one file per interactive, plus shared drawing primitives
topics/ one file per topic: prose + its lab, registered in index.ts
app/
topics/[slug]/ prerendered from the curriculum
src/lib/curriculum.ts.src/components/sims/.src/components/topics/<slug>.tsx, default-exporting a
component that renders the prose and the lab.src/components/topics/index.ts.generateStaticParams iterates the curriculum, so a topic listed without a
registered component fails the build rather than 404-ing in production.
Each interactive keeps a mutable model in a ref, advances it in place from a
requestAnimationFrame loop, and re-renders to draw it. Randomness comes
from a seeded generator (Rng in src/lib/sim.ts) rather than
Math.random, so a simulation behaves identically on every machine and a
stated number — a hit rate, a p99, an availability figure — means the same
thing to every reader.
Because that is deliberately not a pure-render pattern, the React Compiler
lint rules react-hooks/refs and react-hooks/immutability are disabled for
src/components/sims/** and src/lib/sim.ts only. The reasoning is recorded
in eslint.config.mjs.
Simulations respect prefers-reduced-motion: the loop falls back to a coarse
timer so state still advances without continuous animation.
Completion is explicit — each topic has a Mark complete button. Nothing is
inferred from scrolling or from interacting with a lab. State is a single
localStorage key, validated against the current curriculum on read, so
renaming a slug drops its stale completion rather than inflating the count.