←All towers

Raahaao Code: Node.js

Build the server side: HTTP, APIs, databases, real-time, security and deploying.

9+ hours of lessons · 2 projects · €35

Helps you prepare for: OpenJS Node.js Application Developer, JSNAD (Linux Foundation)

Or get it in a monthly plan from €3.46 a week (billed €15 monthly) →

You need an account to open any lessons. Without one you can browse the towers and prices.

Pay in

What you'll learn, floor by floor

  1. 1

    Foundations (Beginner)

    • How the web works
    • The command line
    • Node.js basics and modules
  2. 2

    Tooling (Beginner)

    • Git and GitHub
    • npm and dependencies
    • Files, streams and JSON
  3. 3

    Servers (Intermediate)

    • A server from scratch
    • Express routes and middleware
    • Designing an API
  4. 4

    Data and users (Intermediate)

    • Databases from Node
    • Passwords, sessions and tokens
    • Real-time: polling, SSE and WebSockets
  5. 5

    Pro (Job-ready)

    • Web security
    • Signing and trust
    • Testing your API
    • Deploying

The two rooftop projects

URL shortener API

Build the API behind a link shortener: send it a long web address and it hands back a short code, then anyone who visits the code is redirected to the original page. You will validate input, reject duplicate custom codes, count clicks and protect the service from a single caller flooding it.

  • POST /links with a valid http(s) url returns 201 and a 6-character code.
  • POST /links with an invalid url returns 400 with a JSON error.
  • A custom code that is already taken returns 409.
  • GET /:code redirects with 302 and a Location header.
  • An unknown code returns 404 JSON.
  • GET /links/:code/stats returns the click count.
  • More than 5 POSTs per minute from the same ip returns 429.

Real-time chat server

Build the server side of a chat app: people log in, post messages into rooms, read the recent history and follow a live stream of new messages. You will keep login tokens safe by storing only a hash, refuse unauthenticated or oversized messages, neutralise HTML so nobody can inject a script into the page, and slow down anyone who floods a room.

  • POST /login with a name returns a token, and only a hash of tokens is stored (expose tokenStoreHasPlainText() that returns false).
  • POST /rooms/:id/messages without a valid token returns 401.
  • Messages longer than 500 characters return 400.
  • Messages are HTML-escaped in stored output.
  • GET /rooms/:id/history returns the last 50 messages.
  • GET /rooms/:id/stream returns content-type text/event-stream and a body formatted as data: <json>\n\n for recent messages.
  • More than 10 messages in 10 seconds from one token returns 429.

Questions

Do I need to install anything?

No. Everything runs in your browser. For the projects you can also work on your own computer and upload your files.

Can I skip what I already know?

Yes. Once you own a tower, each floor has a skip test: score 8 out of 10 and that floor opens.

What is the refund policy?

Refunds within 5 days of purchase. After 5 days, no refunds or returns.

Do I keep access?

Yes. A tower you buy is yours, with no subscription.

Refund policy