Frontend Developer
HTML and CSS first, then JavaScript, then Vue or React — every level an article and a quiz, every zone a checkpoint that opens the next.
- 7 stages
- 34 levels on your route
- ~16 hours
- pick Vue or React
- pick Nuxt or Next.js
- 1Read the level. Every level is an article — free, no account.
- Pass its quiz to collect the crystal and open the next level.
- Beat the checkpoint to open the next stage — or to skip one you know.
HTML
The document under every page — elements that mean something, and the native ones that replace a JavaScript library.
CSS
The box model, the cascade, layout and responsive type — the parts of CSS that decide whether a page holds together.
Clear HTML to open this stage.
JavaScript
How the language actually runs: scope and closures, the event loop, promises, and not mutating what you do not own.
Clear CSS to open this stage.
Vue
Reactivity is the whole framework. What Vue tracks, when it updates the DOM, and the traps that only look like Vue bugs.
Clear JavaScript to open this stage.
React
Rendering is the whole framework. When React re-renders, what it keeps between renders, and the state bugs it makes easy.
Clear JavaScript to open this stage.
Nuxt
Vue on the server: data fetching that does not double up, hydration that matches, and state that does not leak between requests.
Clear Vue to open this stage.
Next.js
React on the server: what gets cached, where a server action runs, and which boundary your code is actually on.
Clear React to open this stage.
TypeScript
Types that describe what your code really does — generics that stay generic, and checks that do not widen what you meant.
Clear Nuxt or Next.js to open this stage.
Ship it
What separates a demo from a product: speed you can measure, caches that do not lie, and a back button that works.
Clear TypeScript to open this stage.
Finish line. Clear the last checkpoint and the path is done — with a certificate that says so, at a link anyone can check.
7 levels are being written
The from-scratch pieces a beginner needs before the deep-dives. They join the map the day they publish — nothing on the route waits for them.
Hear when they land
One email per new level. Unsubscribe in one click.
Every level, as a list
Stage 1 · HTML
- HTML from zero — being written
- You built your modal with a `<div>` and a focus trap library. The native `<dialog>` does all of that.
- Stop Hand-Rolling an Exclusive Accordion. `<details name>` Does It
- Your dropdown is a div. The browser has a native popover now.
- The Modal Was Open. So Was Everything Behind It.
Stage 2 · CSS
Stage 3 · JavaScript
- JavaScript from zero — being written
- JavaScript Closures: The Complete Guide (with Cheat Sheet)
- JavaScript Event Loop Explained: The Complete Guide
- You reach for `Promise.all` for every concurrent request. Here's when to use the other three.
- Your `.sort()` is mutating state. JavaScript finally gave you the fix.
- Debounce and Throttle in JavaScript: The Complete Guide
- Stop Retrying Immediately. Exponential Backoff Fixes It.
Stage 4 · Vue
- Vue from zero — being written
- Vue Reactivity Explained: ref vs reactive (+ Cheat Sheet)
- Vue computed(): What It Caches and When It Reruns
- Vue watch vs watchEffect: The Complete Guide
- Vue nextTick Explained: How DOM Updates Are Batched
- Vue defineModel: The v-model Contract, Explained
- Vue Composables: The Shared State Trap (+ Cheat Sheet)
Stage 4 · React
- React from zero — being written
- React Re-render vs Remount: What Actually Triggers Each
- React Derived State: Why That useState Is Probably a Bug
- Your Search Box Lags. Debounce Hides It; `useTransition` Fixes It
- React Compiler 1.0: What useMemo You Can Delete
- React Form Actions: useActionState & useFormStatus Guide