Interactive roadmap
Backend Developer roadmap
Learn to build the servers, APIs and databases that power modern apps.
- 1
Foundations
0 of 4 done
What every backend developer needs first.
Take these basics steady. Every brilliant backend engineer builds their career on solid daily habits with the terminal and Git. - 2
Building APIs
0 of 4 done
Let apps talk to your server.
Design your APIs clearly as if someone else has to use them tomorrow without asking you any questions. - 3
Databases
0 of 4 done
Store and query data well.
Treat database design with care. Fixing a messy database structure later is much harder than fixing application code. - 4
Security
0 of 3 done
Protect users and their data.
Never trust input from users or clients. Always verify who is asking and what they are allowed to do. - 5
Production
0 of 5 done
Run your service reliably.
Automate your testing and deployments so you can release updates with confidence and peace of mind.
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: Foundations
- Get comfortable with one server language, such as JavaScript (Node.js), Python, Java or Go.Learn Node.js (official) · The Python tutorial (official)
Read more
Choosing your first server-side language is your gateway to backend development. Unlike web design, where users see buttons and text, your code will run quietly behind the scenes to process logic, handle data, and talk to databases. Popular choices like Python, JavaScript with Node.js, Java, or Go let you turn raw computer logic into useful services.
Think of this language as your primary toolkit. If you are building an online shop, your chosen language handles the instructions that calculate discounts and save customer details safely. Picking just one language to start helps you focus on learning core programming ideas instead of getting distracted by syntax differences.
Mastering your first language matters because it forms the bedrock of everything else you will build. Once you know how to write loops, functions, and handle data structures in one tongue, learning a second one later becomes much simpler.
- Pick just one language and stick with it
- Focus on logic, variables, and functions first
- JavaScript and Python are great beginner choices
- Your language is the tool to solve business problems
- Requests, responses, headers, cookies and status codes.An overview of HTTP (MDN)
Read more
The web runs on a simple conversation protocol called HTTP. When your phone asks a server for a webpage, it sends a request message. The server replies with a response containing the data and a status code, like the famous 404 for missing pages. Headers and cookies carry extra details like browser types or user login status along the way.
Imagine ordering food at a counter. You make a request with specific choices, the kitchen processes it, and you get back a response with your meal and a receipt status. In backend coding, understanding this back-and-forth exchange is vital because your server spends all its time reading these requests and sending back correct responses.
HTTP knowledge is essential because it is the common language of the internet. No matter what database or language you use, your app must speak standard HTTP to talk to web browsers and mobile apps.
- Requests ask for data or action
- Responses return data and status codes
- Headers pass metadata alongside the payload
- Status codes tell clients if things worked
- Running servers and tools from the command line.The Linux command line for beginners (Ubuntu)
Read more
The terminal is a text-based window used to control your computer without clicking menus. Most servers live in the cloud and do not have screens or mice, so administrators rely entirely on Linux and the command line to manage files, run programs, and check system health.
Picture running a restaurant kitchen from a control panel where you type short commands to turn on ovens or check inventory. Instead of hunting through folders, you type quick text commands to jump between directories, create files, and launch your server instantly.
Becoming comfortable with the terminal matters because professional backend tools live there. Knowing your way around Linux commands saves you time and keeps your remote servers running smoothly.
- Command line replaces graphical desktop menus
- Linux runs most cloud servers worldwide
- Navigate folders and run apps using text commands
- Essential for managing remote cloud environments
- Version control and team workflows.Pro Git book (free)
Read more
Git is a version control system that tracks every change you make to your code files over time. It lets you save working checkpoints, experiment with new features safely, and work alongside other developers without accidentally overwriting each other's work.
Think of Git as an ultimate undo history combined with a collaborative notebook. If you break your code while trying something new, you can instantly roll back to yesterday's working version. When working in a team, everyone shares their updates through a central hub like GitHub.
Git is a non-negotiable skill for any developer job. Employers expect you to know how to save your work safely and collaborate cleanly with teammates on shared projects.
- Tracks history of all code changes
- Allows safe experimentation with branches
- Makes teamwork and code reviews possible
- Integrates with platforms like GitHub
Step 2: Building APIs
- Resource-based URLs, HTTP methods and consistent JSON responses.HTTP request methods (MDN)
Read more
REST stands for Representational State Transfer, a popular style for designing web APIs. It uses standard HTTP methods like GET to read data, POST to create it, PUT to update it, and DELETE to remove it. URLs represent resources, and data travels back and forth neatly formatted as JSON.
Imagine a library catalog system where books are resources. A GET request to the books URL fetches the list, while a POST request adds a new book title. By following these predictable patterns, any frontend app or mobile client knows exactly how to interact with your system.
REST is the standard design pattern you will encounter on most jobs. Building clean REST APIs ensures your backend service is easy to understand, test, and connect to user-facing applications.
- Uses standard HTTP methods for actions
- URLs represent nouns or resources
- Data is exchanged using JSON format
- Predictable structure helps client developers
- Routing, middleware and validation with Express, NestJS, Django or similar.Express getting started
Read more
A web framework provides a structural skeleton so you do not have to write a server from scratch every time. It handles tedious tasks like routing incoming URLs to the right code function, running middleware security checks, and validating incoming user data.
Think of building a house with prefabricated walls and plumbing connections instead of chopping down trees for timber. The framework gives you rooms and hallways out of the box, letting you focus on painting the walls and adding your unique business logic.
Using a framework saves you countless hours of development time. It provides tested patterns for security and performance, keeping your backend code organised as your project grows.
- Provides ready-made routing for URLs
- Middleware handles cross-cutting tasks like logging
- Validation protects against malformed user data
- Speeds up professional app development
- (optional)
- Letting clients ask for exactly the data they need.Learn GraphQL
Read more
GraphQL is an alternative to REST created by Meta that lets clients request exact data shapes. Instead of calling multiple endpoints to gather related info, a client sends a single query specifying every field it needs, and the server returns precisely that.
Imagine going to a buffet where you pick only the exact items you want on your plate, rather than being handed a fixed set meal with food you might not eat. If a mobile app only needs a user's name and avatar, GraphQL fetches just those two fields without wasting bandwidth.
Learning GraphQL matters because modern apps often deal with complex, nested data needs. It reduces network traffic and gives frontend teams more flexibility to build features quickly.
- Clients ask for exact data fields
- Single endpoint handles all query requests
- Prevents over-fetching and under-fetching data
- Strong typing defines what data is available
- Describing your API with OpenAPI so others can use it.OpenAPI: getting started
Read more
API documentation explains how your server works to other developers who need to connect to it. Using specification standards like OpenAPI, you describe your endpoints, expected parameters, and response formats in a machine-readable format that generates interactive user guides.
Think of it as an instruction manual and parts catalogue for an appliance you manufactured. Without clear guides, nobody will know which buttons to press or what power plug to use.
Good documentation saves your team endless support questions. When your API is well-documented, frontend developers and external partners can integrate your service smoothly on their own.
- OpenAPI standardises how APIs are described
- Generates interactive testing web pages
- Clarifies required parameters and data types
- Essential for team collaboration and public APIs
Step 3: Databases
- Tables, keys, joins and transactions in PostgreSQL or MySQL.PostgreSQL tutorial
Read more
Relational databases store data in structured tables with rows and columns, much like spreadsheets. Using Structured Query Language, or SQL, you can create tables, filter records, join related information together across tables, and ensure transactions either complete fully or roll back safely.
Picture a bank ledger where accounts and transactions must balance perfectly. If a transfer fails halfway, SQL transactions ensure money is never lost in limbo. Tables link together using keys so you can connect customers to their orders.
SQL is one of the most durable skills in tech. Almost every major enterprise application relies on a relational database to store critical business data reliably.
- Data stored in structured tables
- SQL used to query and modify records
- Joins connect related data across tables
- Transactions guarantee safe data operations
- Working with data from code and changing schemas safely.Prisma docs
Read more
An Object-Relational Mapper, or ORM, lets you interact with your database using your programming language objects instead of writing raw SQL strings. Migrations act as version control scripts for your database structure, helping you safely alter tables over time.
Imagine translating languages on the fly so you can speak to a database using your native programming dialect. Instead of writing text queries, you write code methods like user dot find, and the ORM handles the SQL translation behind the scenes.
ORMs and migrations speed up daily development and keep database changes synchronised across your team's computers without manual error.
- Maps database tables to programming objects
- Avoids writing raw SQL for simple tasks
- Migrations track schema changes over time
- Keeps team database environments consistent
- Making slow queries fast, and reading a query plan.Indexes (PostgreSQL docs)
Read more
As your database grows, searching through millions of rows without a guide makes queries slow. Database indexes act like the alphabetical index at the back of a textbook, letting the database engine find specific rows instantly without scanning every single page.
Think of looking for a word in a huge dictionary. Without alphabetical ordering, you would read every page from start to finish. With an index, you jump straight to the correct letter section in milliseconds.
Understanding indexes is crucial for performance tuning. When users complain that an app feels sluggish, improper indexing is often the root cause you will need to fix.
- Speeds up data retrieval dramatically
- Works like a book index for database rows
- Can slow down writes if overused
- Query plans show how databases search data
- (optional)
- Document stores and Redis for speed.Redis documentation
Read more
NoSQL databases store data as flexible documents rather than strict tables, making them great for rapid prototyping and unstructured data. Caching tools like Redis keep frequently accessed data in fast computer memory instead of hitting the hard disk every time.
Picture a filing cabinet with loose folders containing different forms, compared to a rigid spreadsheet. NoSQL lets you store varied data shapes easily. Redis acts like a quick scratchpad on your desk for phone numbers you need to dial right now.
Knowing when to use document stores or memory caches helps you build high-performance systems capable of handling sudden traffic spikes smoothly.
- Document stores offer flexible data schemas
- Redis stores fast data in system memory
- Great for caching and real-time counters
- Complements traditional relational databases
Step 4: Security
- Passwords, sessions, tokens and sign-in with Google.Authentication Cheat Sheet (OWASP)
Read more
Authentication is the process of verifying who a user is. This involves hashing and checking passwords securely, issuing session cookies or cryptographic tokens like JWTs, and often integrating with third-party sign-in providers like Google.
Think of checking a passport at an airport gate. The system confirms your identity once, and hands you a boarding pass or token that proves who you are for the rest of your journey through the terminal.
Security failures here lead to account takeovers and data leaks. Knowing how to handle passwords and tokens safely protects your users and builds trust in your application.
- Verifies user identity during sign-in
- Never store plain text passwords always hash them
- Tokens or cookies maintain login state
- OAuth enables secure third-party login
- Making sure each user can only see and change what they should.
Read more
Authorisation checks whether an authenticated user has permission to perform a specific action or view particular data. Just because someone logged in successfully does not mean they are allowed to edit system settings or view another user's private messages.
Imagine working in an office building. Your keycard authenticates that you are an employee, but it only opens the door to your specific department floor, not the safe room or the director's office.
Proper authorisation stops regular users from accessing admin tools or private data belonging to others, keeping your application safe from internal breaches.
- Determines what actions a user can perform
- Happens after successful authentication checks
- Prevents unauthorized access to sensitive data
- Role-based rules simplify permission management
- Injection, broken access control and the rest of the OWASP Top 10.OWASP Top 10
Read more
The OWASP Top 10 is a standard awareness document that highlights the most critical security risks to web applications, such as injection attacks, broken access control, and insecure data handling.
Think of it as a safety manual listing the most common ways burglars try to break into houses, along with instructions on how to lock your doors and windows properly.
Studying these vulnerabilities helps you write defensive code from day one. Avoiding common pitfalls keeps your servers secure against automated web attacks.
- Highlights top web application security risks
- Injection flaws let attackers run malicious code
- Broken access control exposes private records
- Guides defensive programming habits
Step 5: Production
- Unit and integration tests for your API.Jest: getting started
Read more
Testing involves writing automated code to check that your backend features work correctly. Unit tests check individual functions, while integration tests verify that your API endpoints and database talk to each other without errors.
Think of a car factory running automated safety checks on every engine block before it gets installed into a vehicle. These tests run in seconds and catch mistakes before the product reaches customers.
Automated tests save you from manual clicking and breaking things when you update code. They give you the confidence to refactor and add new features safely.
- Unit tests check individual code functions
- Integration tests verify API and database interactions
- Catches bugs before code reaches users
- Makes refactoring code safe and easy
- Packaging your service with Docker.Docker: get started
Read more
Docker is a tool that packages your application and everything it needs into a standardized container. This ensures your code runs identically on your laptop, your teammate's computer, and the cloud server in production.
Picture shipping goods in standard metal freight containers. No matter what ship or truck carries them, the container protects the contents and fits standard loading equipment perfectly.
Docker eliminates the classic headache of code working on your local machine but failing on the server, making deployments reliable and straightforward.
- Packages app and dependencies together
- Ensures consistent behavior across environments
- Isolates applications from host systems
- Standardizes cloud server deployments
- Automatic tests and deployments on every change.GitHub Actions documentation
Read more
Continuous Integration and Continuous Deployment systems automate your workflow. Whenever you push new code to your repository, automated servers run your tests and deploy the updated app to production without manual intervention.
Think of an automated assembly line in a factory. As soon as a worker drops off a new part, robots test it and install it onto the vehicle immediately.
CI/CD pipelines save time and eliminate human errors during releases, letting your team ship small updates frequently and safely.
- Automates testing on every code push
- Deploys updates without manual steps
- Catches broken builds immediately
- Speeds up the software release cycle
- Knowing when something breaks and why.
Read more
Observability means having clear visibility into what your server is doing in production. This involves collecting structured logs, tracking error rates, and monitoring system resource usage like memory and CPU.
Imagine the dashboard of an airplane cockpit. Pilots need flashing warning lights and dials to tell them if an engine is overheating before smoke starts filling the cabin.
Good logging and monitoring let you spot and fix problems quickly, often before your users even notice anything is wrong with the service.
- Logs record events and errors over time
- Metrics track CPU, memory, and request rates
- Alerts notify you when systems fail
- Essential for debugging live production issues
- (optional)
- Queues, caching and load balancing as traffic grows.
Read more
Scaling basics involve preparing your backend to handle growth in traffic and data volume. When a single server gets overwhelmed, you introduce load balancers to spread traffic across multiple servers, background queues for heavy tasks, and caching layers.
Think of opening extra checkout tills in a supermarket when a long queue forms at the front, while moving bulky stock sorting tasks to the back warehouse.
Understanding scaling concepts helps you design resilient architectures that stay fast and online even when user traffic surges unexpectedly.
- Load balancers distribute traffic across servers
- Background queues handle slow tasks asynchronously
- Caching reduces database read pressure
- Keeps apps fast during traffic spikes