Loading...
From raw DOM to a Next.js app you actually understand, in the order the layers were meant to be learned.
5 lessons
5 lessons
5 lessons
5 lessons
5 lessons
5 lessons
5 lessons
5 lessons
5 lessons
5 lessons
5 lessons
5 lessons
5 lessons
From raw DOM to a Next.js app you actually understand, in the order the layers were meant to be learned.
Built for engineers who want the modern frontend stack to finally make sense
You learned hooks before you learned the DOM. Now every bug feels like a black box and the docs assume things you skipped.
Server Components, Client Components, Server Actions, route handlers, middleware. You have read every blog post and still cannot keep them straight.
You search "center a div" more often than you would admit. Layout still feels like guessing until something looks right.
Your frontend talks to a backend you do not understand. Your backend ships data your frontend cannot render. You feel half-built in both worlds.
Senior engineers aren't better because they know more syntax. They're better because they've:
You start in the DOM and finish in a Next.js app deployed with Docker. Every module connects to the next, and every concept lands on running code you can clone and break.
Each layer earns the next. Nothing skipped.
Manipulate the DOM by hand, lay out real pages with Grid and Flexbox, and fetch data the way React and Next.js eventually will.
Write your first components, feel useState click, and wire up Context plus custom hooks without needing a state library.
Use the App Router the way it was meant to be used. Server-rendered pages, server-side mutations, optimistic UI, and suspense streaming.
Ship the whole thing with Vitest and Playwright tests, a full-stack docker-compose, a real websocket UI, and a Next.js deploy you can defend.
Manipulate the DOM by hand and fetch JSON the old-fashioned way, so React stops feeling like magic later.
HTML, CSS, and JavaScript each have one job. The browser runs them together.
Nodes, parents, children, and the methods that walk between them.
createElement, appendChild, innerHTML, and the reason React exists.
Get data from the network without freezing the UI.
Walk the full pipeline from fetch to appended DOM nodes and run it against the workshop.
Handle loading, errors, and race conditions so your UI never lies about what is happening.
The four states every async operation moves through, and why forgetting any of them is the most common UI bug.
Update the UI before or after the server responds. Pick the one that fits.
When the second click resolves before the first, your UI shows stale data.
Errors are a UI, not a console log. Design them like one.
The moment the imperative style stops scaling and React starts making sense.
Real responsive layout with Grid and Flexbox. No frameworks, no guessing.
Content, padding, border, margin, and why box-sizing matters.
The layout tool for rows, columns, and everything that fits in a line.
The layout tool for everything flexbox is not.
When auto-fit is not enough, media queries cover the rest.
Name your colors, spacing, and radii once. Reuse them everywhere.
Tokens, Authorization headers, and the tradeoffs every frontend has to make.
What changed when the web got serverless, and why tokens became the default.
The pragmatic default for frontend-only apps, and when it is not safe enough.
Attach the JWT to every authenticated call, in one place.
The lifecycle every auth flow walks through.
A preview of the server-side storage story you will see in the Next.js phase.
Components, hooks, and utility-first CSS that let you ship a real UI without leaving your editor.
The simplest mental model for React, and why it clicks.
Pass data down, compose small pieces into bigger pieces.
The first hook. A value and a setter. Every state management pattern in React starts here.
When you need to fetch data, set up a listener, or touch anything outside React.
Style components without leaving the component file, and stop naming CSS classes.
Client-side routing, global state with Context, and custom hooks that keep components clean.
Change the URL without reloading the page.
Wrap groups of pages in shared layouts without duplication.
When prop drilling hurts, Context is the escape hatch React ships with.
Extract repetitive logic into a reusable function that starts with use.
Know when to lift state, when to use Context, and when to let props flow.
The App Router, Server Components, and the part where React finally moves to the server.
The limits of pure client-side React, and what server rendering buys you.
Create a folder, create a page.tsx, get a route. No config.
When code runs on the server, when it runs on the client, and how to tell them apart.
Fetch data inside the component with async and await. No hooks required.
The generateMetadata function, and why SSR makes SEO effortless.
Mutate data without writing an API route, and without leaving the component file.
A function that runs on the server, callable from the client like any other.
Progressive enhancement for free, because HTML forms work before JavaScript loads.
Server Actions plus httpOnly cookies give you the safest auth story in any React app.
Server Actions are magical for your own app. API routes are still the right tool for some cases.
Tell Next.js when cached data is stale after a mutation.
Make your app feel instant with Suspense, streaming, and useOptimistic.
The React primitive for "show a fallback while this part is loading".
Why the whole page does not wait for the slowest piece of data.
Show the change before the server confirms, without losing correctness.
Design the loading state with the same care as the final state.
Catch render errors in one subtree without taking down the whole app.
Ship the whole thing in one command. Docker, multi-stage builds, and a full-stack compose.
Build a self-contained runtime with only the files you actually need.
The smallest production image for a modern Next.js app.
One command to run Next.js, the backend, Postgres, and Redis together.
Lint, type-check, build, and test on every push.
Vercel, your own VPS, or a Kubernetes cluster. Pick the one that fits.
Vitest, Testing Library, and Playwright. The three tools every React team uses.
Unit, component, and end-to-end tests. Each layer catches different bugs.
Pure functions, tested in milliseconds.
Test what the user sees, not what the component looks like internally.
A few tests that drive a real browser through your real stack.
Testing everything is a waste. Testing nothing is worse.
React Hook Form plus Zod. The same schema on the frontend and the backend.
Values, errors, touched, dirty, submission state. Every form tracks all of them.
register, handleSubmit, and the minimal setup for a real form.
Define the rules once and enforce them in both places.
Inline, specific, and respectful error messages that help users instead of scolding them.
Prevent double-submits and tell the user something is happening.
Subscribe to rooms, handle reconnection, and update your UI live.
Open, message, close, error. The four events you handle on every client.
Send a subscribe message, receive only the events you care about.
Apply incoming events to state the same way you would any other input.
Connections drop. Show it honestly and recover automatically.
Zoom out and see the shape of what you built.
What you'll build in this hands-on workshop.
Hooks, JSX, basic state.
That comes from building it yourself. That is what this masterclass is.
I am the Head of Engineering at Jobbatical (EU Tech), with 8+ years of leadership and 15+ years of total experience in the software industry.
"Most engineers are not blocked by ability, but by lack of real system ownership."
Guest Sessions From Engineers at
Live sessions on System Design, Career Growth, and Interview Preparation.
Invest in your career. It pays back 100x.
Stop guessing at React. Build the frontend brain.
Enter your email to proceed to checkout.
Includes lifetime access to the interactive course.