Interactive roadmap
Full Stack Developer roadmap
For aspiring developers wanting to build complete web products. You will learn to build responsive interfaces, create backend APIs, manage databases, and deploy live applications.
- 1
Modern Front End Foundations
0 of 5 done
Learn to build responsive and interactive user interfaces.
Take your time with HTML and CSS layouts before jumping into JavaScript frameworks, as a solid visual foundation makes everything easier. - 2
Server-Side and APIs
0 of 4 done
Create backend servers to handle logic and serve data.
Build simple routes first, test them thoroughly with a tool like Postman or curl, and add complexity gradually. - 3
Databases and Data Storage
0 of 4 done
Store, organise, and query information reliably across your applications.
Draw your data tables or document structures on paper before writing code to spot missing relationships early. - 4
Authentication and Security
0 of 4 done
Protect user accounts and secure application data from common threats.
Never write your own cryptography code; always use established, well-tested libraries for passwords and tokens. - 5
Deployment and DevOps Basics
0 of 4 done
Ship your web applications so anyone can access them online.
Commit your code changes frequently with clear messages so you can easily track down when a bug was introduced.
Learn it all, with a tutor that never sleeps
Every topic links to LevelUp lessons, practice exercises and the 24/7 AI Tutor. Your progress updates as you master lessons.
Every topic explained
Step 1: Modern Front End Foundations
- HTML structures page content, while CSS handles layouts and visual presentation across different screen sizes.MDN Web Docs (Mozilla)
Read more
HTML provides the core structure for your web pages using meaningful tags like articles and buttons, while CSS controls how those elements look across phones and laptops. Think of HTML as the skeleton of a house and CSS as the paint and interior design.
For example, styling a contact form makes it look neat on both a mobile screen and a wide desktop monitor. This matters because clean, responsive styling ensures your users enjoy a smooth experience no matter what device they use.
- Use semantic tags for better accessibility
- Flexbox helps align items easily
- Media queries adapt layouts for mobile
- JavaScript adds interactivity to web pages, letting you handle clicks, fetch data, and update content dynamically.JavaScript Guide (MDN)
Read more
JavaScript brings web pages to life by allowing you to listen for user actions, fetch data from servers, and update the display instantly. It acts like the nervous system of your website, reacting to clicks and typing.
Imagine a shopping basket that updates its total price instantly when you add a new item without reloading the page. This topic matters because JavaScript is the primary language used to build interactive features on the modern web.
- Variables store values and data
- Functions run reusable blocks of code
- Event listeners respond to user actions
- React is a popular library for breaking user interfaces into reusable, independent components that update efficiently.React Documentation (React)
Read more
React is a popular JavaScript library that helps you build user interfaces out of small, reusable pieces called components. Instead of managing a whole page at once, you break it down into manageable chunks like navigation bars and product cards.
Think of it like building with toy bricks where each brick is a self-contained component you can reuse anywhere. This matters because component-based design keeps your code organised as your web applications grow.
- Components are reusable UI building blocks
- Props pass data down to components
- JSX combines JavaScript and HTML
- Manage dynamic data across your application using component state so the user interface stays in sync.
Read more
State management handles the dynamic data inside your application, keeping your user interface perfectly in sync with user actions. When data changes, React updates the screen automatically to reflect those updates.
Consider a dark mode toggle switch that flips your app colours instantly when clicked. This matters because managing state correctly prevents your app from showing outdated information to users.
- Use useState to track changing data
- State updates trigger re-renders
- Lift state up to share between components
- (optional)
- TypeScript adds type checking to JavaScript, helping you catch typos and logical bugs before your code runs.TypeScript Documentation (Microsoft)
Read more
TypeScript adds static typing to JavaScript, meaning it checks your code for mistakes before you even run it in the browser. It acts like a helpful spelling checker for your programming logic.
For instance, if you accidentally try to treat a piece of text as a number, TypeScript flags the error immediately. This matters because it saves you hours of debugging by catching typos and data type mismatches early.
- Types define expected data shapes
- Interfaces describe object properties
- Catches bugs during coding time
Step 2: Server-Side and APIs
- Node.js runs JavaScript on the server, and Express simplifies routing requests and delivering responses.Node.js Documentation (OpenJS Foundation) · Express Documentation (Express)
Read more
Node.js allows you to run JavaScript on a server rather than just inside a web browser, and Express is a lightweight framework that makes setting up a server simple. Together they let you handle incoming web traffic efficiently.
Imagine a restaurant receptionist taking customer orders at the front door and passing them to the kitchen. This matters because it gives you the power to build your own custom backend servers using JavaScript.
- Node.js runs JavaScript outside browsers
- Express simplifies server routing
- Middleware handles requests sequentially
- REST provides standard conventions for exchanging data between client browsers and backend servers using HTTP methods.
Read more
REST provides a standard set of rules for how client browsers and backend servers communicate using everyday HTTP methods like get and post. It creates a predictable structure for fetching and saving information.
Think of it like using standard postal addresses so delivery drivers always know where to drop off parcels. This matters because a well-designed REST API makes it easy for front-end apps and mobile apps to talk to your server.
- Use GET to retrieve data safely
- Use POST to create new records
- Use clear URL paths for resources
- Learn how servers accept incoming data payloads, manage query parameters, and return appropriate status codes.
Read more
Handling requests and responses involves reading incoming data payloads, checking URL query parameters, and sending back the correct HTTP status codes. It ensures both sides of the application understand each other clearly.
For example, returning a 404 status code when a user requests a profile page that does not exist. This matters because proper status codes tell the client application whether an action succeeded or failed.
- Access request bodies and parameters
- Send appropriate status codes
- Return JSON data to clients
- Check incoming request data to ensure inputs are correct and prevent malformed data from breaking your application.
Read more
Server-side data validation checks incoming user inputs before processing them to ensure they meet your application rules. Never trust data coming directly from the client browser.
Imagine a hotel receptionist checking that a booking form has a valid email address before saving the reservation. This matters because validation stops broken or malicious data from crashing your server or database.
- Always validate inputs on the server
- Check for missing or empty fields
- Reject invalid data with clear messages
Step 3: Databases and Data Storage
- Relational databases store information in structured tables linked by keys, queried using standard SQL syntax.PostgreSQL Documentation (PostgreSQL)
Read more
Relational databases store information in structured tables with rows and columns, linked together using keys and queried with SQL. They keep data organised and consistent across your application.
Think of a spreadsheet where users have their own table linked to their specific orders. This matters because relational databases are reliable and ideal for managing complex, connected data.
- Tables organise data into rows
- Foreign keys connect related tables
- SQL queries retrieve specific records
- (optional)
- Document databases store flexible JSON-like records, which can be useful when your data structures change frequently.MongoDB Documentation (MongoDB)
Read more
Document databases store information as flexible JSON-like records rather than rigid tables, making them great for data that changes often. You can store nested details inside a single record easily.
Imagine a user profile where preferences or settings can change without needing to alter a strict database schema. This matters because it gives you flexibility when building rapid prototypes or handling unstructured data.
- Stores data in flexible JSON formats
- No rigid table schemas required
- Great for rapid product iteration
- Object-relational mappers let you query your database using regular JavaScript objects instead of writing raw SQL.Prisma Documentation (Prisma)
Read more
Object-relational mappers let you interact with your database using regular programming objects and methods instead of writing raw SQL queries. They bridge the gap between your code and your database.
Think of it as a translator who converts your everyday language into database commands. This matters because ORMs speed up development and help keep your database queries consistent.
- Use code objects instead of raw SQL
- Simplifies database queries and saves
- Handles data relationships smoothly
- Design clear database schemas that connect related data items, like users and their orders, without duplication.
Read more
Data modelling is the process of planning how your application data relates together and flows through your storage systems. Good models prevent duplicate information and keep queries fast.
Consider how an online shop links customers, products, and categories so items do not get mixed up. This matters because poor data models lead to slow applications and messy code as your project grows.
- Plan relationships before writing code
- Avoid duplicating stored data
- Keep schemas clean and scalable
Step 4: Authentication and Security
- Never store plain passwords. Use cryptographic hashing libraries to protect user credentials securely in your database.
Read more
Password hashing transforms user passwords into secure, scrambled strings before saving them to your database, making them unreadable even if data is leaked. It is a vital practice for user privacy.
Think of it like sending a message through a shredder that cannot be put back together in reverse. This matters because storing plain text passwords puts your users at severe risk if a security breach occurs.
- Never store plain text passwords
- Use strong hashing libraries like bcrypt
- Salting adds random data for security
- Track logged-in users across repeated requests using secure browser cookies or JSON Web Tokens.
Read more
Session management and JSON Web Tokens help your server remember who is logged in across multiple requests. Because HTTP is stateless, tokens act like digital wristbands at an event.
Imagine showing a festival pass to security guards each time you enter a new stage area. This matters because it allows users to navigate your app securely without logging in on every click.
- Tokens verify logged-in user identity
- Store tokens securely on the client
- Validate tokens on protected routes
- Protect your server against common security risks, including cross-origin requests, rate abuse, and injection attacks.OWASP Top Ten (OWASP)
Read more
Securing your web APIs involves protecting your server against common attacks such as malicious injections and cross-origin request abuse. It ensures your backend remains stable and trustworthy.
Think of putting security guards and metal detectors at the entrance of a public building. This matters because unprotected APIs are frequent targets for automated bot attacks and data theft.
- Sanitise inputs to prevent injection
- Configure CORS for trusted domains
- Limit request rates to stop abuse
- (optional)
- Control what authenticated users are allowed to see and modify based on their assigned permissions.
Read more
Authorisation checks whether an authenticated user has the correct permissions to perform specific actions or view certain pages. Authentication proves who you are, while authorisation proves what you can do.
Consider an office building where standard staff can enter workspaces, but only managers can access the finance room. This matters because it stops regular users from accessing admin controls or sensitive data.
- Check user roles before sensitive actions
- Separate regular users from admins
- Deny access by default
Step 5: Deployment and DevOps Basics
- Track code changes over time, collaborate cleanly with teammates, and safely revert unintended mistakes.Git Documentation (Git)
Read more
Git tracks changes to your source code over time, allowing you to experiment safely, revert mistakes, and collaborate with other developers. It acts as a reliable time machine for your project files.
Think of it as taking snapshots of a painting every time you add a new layer of detail. This matters because version control is an essential professional skill used on every modern development team.
- Commit changes with clear messages
- Use branches to test new features
- Push code to remote repositories
- Store sensitive secrets like database credentials and API keys outside your public code repository.
Read more
Environment configuration stores sensitive secrets like database passwords and API keys safely outside your public code repository. It keeps confidential data out of version control.
Think of keeping your house keys in a secure lockbox rather than taped to the front door. This matters because accidentally publishing API keys online can lead to stolen accounts or surprise cloud bills.
- Keep secrets in local env files
- Add env files to gitignore
- Access variables via process.env
- Deploy full-stack applications to modern cloud platforms to make them publicly accessible to real users.
Read more
Cloud hosting platforms take your full-stack application and make it accessible to real users over the internet via public web addresses. They manage the underlying servers so you do not have to.
Think of renting a furnished apartment instead of building a house from scratch. This matters because it is the final step in turning your local code project into a live product anyone can use.
- Deploy front end and back end
- Connect live cloud databases
- Monitor uptime and application logs
- (optional)
- Automate running tests and deploying updates every time you push new code to your repository.
Read more
Continuous integration and deployment pipelines automate running tests and publishing updates every time you push new code to your repository. They remove manual steps from releasing software.
Imagine an automated assembly line that checks car parts for defects before sending them to the showroom. This matters because automation saves time and catches bugs before they reach your live users.
- Automate running tests on push
- Streamline software release updates
- Catch deployment errors early