Back-End Web Development
Start from zero, with no code needed. Learn what happens on a server when someone taps Buy, write JavaScript, then build real APIs with Node.js, Express and PostgreSQL: sign-in, security, tests, and running it in production.
- 15 modules, 113 lessons
- About 140 hours
- 15 projects and a capstone
- Module 1 is open now, and free
Aligned to MDN Learn and the OWASP API Security Top 10 · Lessons save for offline
Module 1 is open. The other modules are being written and reviewed by our instructors, and each one opens as it’s ready.
By the end, you’ll be able to
- Explain how clients, servers, APIs and databases work together, and read any HTTP request and response.
- Write JavaScript on the server, including asynchronous code with promises and async/await.
- Work from the command line and keep your code in Git and GitHub.
- Build servers and REST APIs with Node.js and Express, with routing, middleware and good error handling.
- Design APIs other developers can use: clear resources, validated input, helpful errors, pagination and OpenAPI documentation.
- Design a relational database, write SQL, and connect your API to PostgreSQL safely.
- Build sign-up, sign-in, sessions, password reset and role-based permissions.
- Find and fix the most common API security problems, from the OWASP API Security Top 10.
- Write TypeScript on the server, and test your API automatically.
- Add caching, background jobs, email, webhooks and payments, and run your API in production with logs and monitoring.
The syllabus
Tap a module to see its lessons
1How the back end works6 lessons · about 1 hourFree
What a server does when you tap Buy: requests, responses, status codes, JSON and your first route.
- What the back end does
- Clients, servers, addresses and ports
- Requests: methods, paths, headers and bodies
- Status codes and responses
- JSON and API documentation
- Your first route
Project: Map the back end of an app you use every day
2JavaScript basics8 lessons plannedComing soon
Values, decisions, functions, arrays, loops and objects, from zero.
- Values and variables
- Numbers, strings and booleans
- Making decisions with if
- Functions
- Arrays
- Loops
- Objects
- Reading error messages
Project: A price calculator for a café's orders
3JavaScript for real programs8 lessons plannedComing soon
Array methods, modules, errors, and the asynchronous code every server runs on.
- Array methods: map, filter and find
- Destructuring and spread
- Modules: import and export
- Errors: throw, try and catch
- Callbacks
- Promises
- async and await
- Working with JSON
Project: A records processor that reads, cleans and summarises orders
4The command line, Git and GitHub7 lessons plannedComing soon
Work in a terminal, and keep every change to your code safe and shareable.
- The terminal and the file system
- Running programs from the terminal
- Why version control
- Commits and history
- Branches and merging
- GitHub and pull requests
- README files and .gitignore
Project: A documented repository with a clean history
5Node.js and your first server8 lessons plannedComing soon
JavaScript outside the browser, npm, files, and a server built with no framework at all.
- What Node.js is
- npm and package.json
- Reading and writing files
- Environment variables
- The event loop
- The built-in http module
- Routing by method and path
- Serving JSON
Project: A server with no framework that answers three routes
6Express: routes and middleware8 lessons plannedComing soon
The framework most Node.js APIs use: routes, request data, middleware and errors.
- Why Express
- Your first Express app
- Route parameters and query strings
- Reading request bodies
- Middleware
- The order middleware runs in
- Errors and the error handler
- Serving files and CORS
Project: A café menu API that can create, read, update and delete
7Designing APIs people can use8 lessons plannedComing soon
REST, validation, helpful errors, pagination and documentation that other developers love.
- Resources and REST
- Choosing methods and status codes
- Validating input with Zod
- Error responses people can act on
- Pagination
- Filtering, sorting and search
- Versioning and changes
- Documenting with OpenAPI
Project: A documented bookings API with validation and pagination
8Databases and SQL8 lessons plannedComing soon
Tables, keys and SQL, on a real PostgreSQL database running in your browser.
- Why apps need databases
- Tables, rows and keys
- SELECT, WHERE and ORDER BY
- INSERT, UPDATE and DELETE
- Joins
- Grouping and totals
- Designing tables: normalisation
- Indexes and transactions
Project: A database for a learning platform, with the queries for its reports
9Connecting your API to a database7 lessons plannedComing soon
Store your API’s data for good, safely, with queries that can’t be hijacked.
- Connecting Node to PostgreSQL
- Parameterised queries and SQL injection
- Keeping database code in one place
- Migrations
- Transactions from code
- Handling database errors
- Query builders and ORMs
Project: Move the bookings API from memory to PostgreSQL
10Sign-in and passwords8 lessons plannedComing soon
Sign-up, sign-in, sessions and password reset, built the way security teams expect.
- Authentication and authorisation
- Storing passwords: hashing
- Registering and signing in
- Sessions and cookies
- Tokens and JWTs, and their limits
- Signing out and expiring sessions
- Password reset by email
- Rate limiting and lockouts
Project: Sign-up, sign-in and password reset for the bookings API
11Permissions and security8 lessons plannedComing soon
Roles, access control and the OWASP API Security Top 10, by breaking and fixing a real API.
- Roles and permissions
- Broken access control
- The OWASP API Security Top 10
- Injection and input handling
- Cross-site attacks: XSS and CSRF
- Secrets and configuration
- Security headers and dependency checks
- Privacy and logging safely
Project: Find and fix the holes in a deliberately broken API
12TypeScript on the server7 lessons plannedComing soon
Types that catch mistakes before your users do, from handlers to validated input.
- Why types
- Types, interfaces and unions
- Functions and generics
- Narrowing and strict mode
- Typing Express handlers
- Zod schemas and inferred types
- Moving a project to TypeScript
Project: Convert the bookings API to TypeScript
13Testing your API7 lessons plannedComing soon
Automatic tests that prove your API works, including when things go wrong.
- Why test
- Unit tests with Vitest
- Testing endpoints
- Testing the unhappy paths
- Testing sign-in and permissions
- Test data and test databases
- Test first: a taste of TDD
Project: A test suite that proves the bookings API works
14Real-world back ends8 lessons plannedComing soon
Caching, jobs, email, webhooks, payments, uploads and real-time updates.
- Caching
- Background jobs and queues
- Sending email
- Webhooks
- Taking payments safely
- File uploads
- Real-time with WebSockets
- Monoliths, services and scaling
Project: Add payments and email receipts to the bookings API
15Going live7 lessons plannedComing soon
Production settings, logs, monitoring, continuous integration, deploying and rollbacks.
- Development, test and production
- Configuration and secrets in production
- Logs, health checks and monitoring
- Continuous integration
- Deploying your API
- Backups and rollbacks
- Where to go next
Project: Run your API in production mode, with checks and monitoring
Some of what you’ll build
Module 6 · Coming soon
A café menu API that can create, read, update and delete
Module 11 · Coming soon
Find and fix the holes in a deliberately broken API
Module 14 · Coming soon
Add payments and email receipts to the bookings API