49 courses. Every one finishable in an afternoon.
The language the web is written in.
Landmarks, headings, and the elements browsers ship for free.
Inputs, validation, dialogs — forms the browser does most of for you.
Images, video, audio, tracks — the responsive media story.
The head decides how the page is shared, found, and loaded.
The cascade, the box, and the parts you can't skip.
type, color, shadow — the layer that makes a page feel made.
One-dimensional layout, demystified.
Two dimensions when one is not enough.
one layout that fits every screen.
motion that doesn't get in the way.
the features that changed how stylesheets are written.
Values, scope, and the parts that decide everything else.
Closures, hoisting, this — finally clear.
Objects, prototypes, classes — one chain, three ways to spell it.
The vocabulary you reach for on every other line.
Regex, JSON, dates, money — shaping the things a UI shows.
Microtasks, macrotasks, and you.
The features that changed how scripts are written.
State, validation, and the UX you actually want.
Types that catch what tests miss.
The compiler, the config, and where types come from.
Modeling domains so wrong states don't compile.
Schema validation, type guards, the boundary where TypeScript stops.
Conditional, mapped, template literal — the type system as a language.
Components, JSX, and what "render" actually means.
useState, events, forms — the day-one productive surface.
useEffect, cleanup, and the cases you don't need it.
useReducer, context, refs, memoization, custom hooks.
Actions, useActionState, useOptimistic — forms in React 19.
<Suspense>, use(), transitions — loading as a primitive.
The server/client boundary, server actions, streaming.
Re-renders, memoization, the Profiler, code splitting.
Testing Library, userEvent, async UI, what to mock.
The browser API the language was built to drive.
Networking, storage, workers — the rest of the browser.
Cookies, localStorage, IndexedDB — and when each fits.
Offline-capable web apps without the magic.
Off the main thread, on purpose.
ESM, CJS, package.json, and what bundlers actually do.
who, why, and the rules the web is judged by.
The half of your UI that isn't a mouse.
When ARIA helps, when it hurts, and the patterns that work.
Errors, dialogs, route changes — the parts that break first.
Tools, audits, and putting a11y in your pipeline.
Devtools, profiles, and the patterns that fix jank.
Conventions, verbs, and graceful failure.
Status codes, headers, caching.
From commits to rebases, end to end.