Skip to content
Start with a free 3-minute AI session Try it
All paths

Full-Stack Web

HTML, TypeScript, React, Node and databases — in the order that lets each one earn the next, ending in a product on a real domain with real users' data in it.

6 topics 24 resources 5 projects 212h of material

Finish this and you can take a product from an empty folder to a deployed, authenticated, tested application — and explain every layer of it in an interview without hand-waving.

  1. Web fundamentals

    Beginner

    HTML that means something, CSS that survives a redesign, and the browser mechanics underneath both. Skipping this is why most self-taught developers plateau at the framework layer.

    Build this

    A multi-page site with no framework and no CSS library

    Build a three-page site — semantic HTML, hand-written CSS, responsive without a grid framework — and get it to a perfect Lighthouse accessibility score.

    The constraint is the point. Everything a framework does for you later, you should have done once by hand.

    Done when: A deployed static site, a Lighthouse report, and a note on what the accessibility audit caught.

  2. JavaScript, properly

    Beginner

    Closures, the event loop, promises and modules. The four things that separate someone who can copy a React tutorial from someone who can debug one.

    Build this

    An interactive app in vanilla JavaScript

    A todo list, a quiz or a small game — but with real state management you wrote yourself, persistence to localStorage, and no libraries at all.

    When you later reach for a framework, you will know precisely which problem it is solving for you.

    Done when: A working app plus a paragraph on the moment your own state handling started to hurt.

  3. React and state

    Intermediate

    Components, the rules of hooks, and the harder question underneath: where each piece of state should actually live.

    Build this

    A React front end against a real, unreliable API

    Build a client for a public API you do not control. Handle loading, empty, error and stale states properly — throttle your network to make each one happen.

    Most portfolio React apps only ever render the happy path. Not shipping one is a differentiator.

    Done when: An app that behaves correctly on a throttled, failing connection, with screenshots of each state.

    Any public REST API
  4. APIs and databases

    Intermediate

    The server half: HTTP as it actually works, a real relational schema, and auth you have not invented yourself.

    Build this

    A REST API with sessions, roles and migrations

    Design the schema first, on paper. Then build the API: registration, hashed passwords, sessions or JWTs, role-based access, and versioned migrations from day one.

    Write down what happens when two people edit the same record. That answer is what senior interviews are actually probing for.

    Done when: A documented API with migrations, seed data, and tests covering the authorisation rules.

  5. Testing, CI and deploying to the cloud

    Intermediate

    The half of the job that turns a project into a product: tests worth having, a pipeline that runs them, and a deploy you can repeat.

    Build this

    Ship it: your app, your domain, your pipeline

    Take the API and the front end you have already built, put them behind a custom domain over HTTPS, add a CI pipeline that blocks a merge on failing tests, and set up error tracking.

    Then hand the URL to five people who do not know how it works and write down everything they broke. That list is the most valuable artefact on this path.

    Done when: A live URL, a green pipeline, and a written post-mortem of the first five real users.

Not sure this is your path?

A path is only worth the hours if it is the right one. The counselling session tests the direction you arrived with rather than simply agreeing with it.

Find your direction

Close, but not quite yours?

These nine are fixed on purpose — complete, sequenced, and ready today. If your direction sits between two of them, we will build the path around you instead.

Ask for a custom path