Interactive roadmap
Frontend Developer roadmap
Everything you need to build fast, accessible websites and web apps people enjoy using.
- 1
Web basics
0 of 4 done
The building blocks of every website.
Take your time learning these foundations; every complex website is built using these exact same simple building blocks. - 2
JavaScript
0 of 4 done
Make pages interactive.
Practice writing small snippets of code every day to build muscle memory and confidence with logic. - 3
Tools of the trade
0 of 4 done
The everyday tools of a frontend developer.
Mastering your development tools will save you hours of frustration and speed up your workflow immensely. - 4
A modern framework
0 of 5 done
Build bigger apps with components.
Focus on learning one framework deeply before jumping around to try every new tool that appears. - 5
Quality and performance
0 of 4 done
Ship work you can be proud of.
Quality checks are not an afterthought; building accessible and performant sites benefits every single user.
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: Web basics
- Browsers, servers, URLs, HTTP and DNS: what happens when a page loads.An overview of HTTP (MDN)
Read more
When you type a web address into your browser, a request travels across the internet to a server, which sends back files for your browser to display. Imagine ordering food at a restaurant: your browser is the customer, the URL is the menu choice, and the server is the kitchen preparing your meal.
Understanding this request-and-response cycle helps you figure out why a page might fail to load or why images go missing. It is the invisible foundation for everything you will build as a frontend developer.
- Browsers request pages and servers reply
- URLs point to specific server locations
- DNS turns website names into IP addresses
- HTTP is the language browsers and servers use
- Structuring content with meaningful tags, forms and links.HTML reference and guides (MDN)
Read more
HTML uses tags like headings, paragraphs, and buttons to give raw text a meaningful structure. Think of it like the wooden frame of a house, deciding where the front door and windows go before any paint is applied.
Writing clean HTML ensures screen readers can understand your page, which is vital for users with visual impairments. It keeps your code tidy and makes styling much easier later.
- Use semantic tags like header and footer
- Always wrap paragraphs in p tags
- Connect labels properly to form inputs
- Structure content in a clear heading hierarchy
- Styling pages: the box model, selectors, colours and typography.Learn CSS (web.dev) · CSS reference (MDN)
Read more
CSS is the styling layer that turns plain HTML into an attractive interface by controlling colours, fonts, and spacing. Think of it like interior design, adding paint, rugs, and lighting to the wooden frame of our house.
Every element on a page sits inside an invisible box defined by padding, borders, and margins. Mastering these box model rules stops your layout from breaking unexpectedly.
- Selectors target specific HTML elements
- The box model controls spacing and sizing
- Colours can be set using hex codes or names
- Keep styles reusable and organized
- Layouts that adapt to phones, tablets and big screens.Learn CSS (web.dev)
Read more
Modern CSS layout tools like Flexbox and Grid let you arrange items in rows and columns with minimal effort. Think of Flexbox as aligning items along a single line, while Grid handles complex multi-column page layouts.
These tools are essential because people browse websites on everything from tiny mobile phones to huge desktop monitors. Responsive design ensures your content looks brilliant on all of them.
- Flexbox is ideal for one-dimensional layouts
- Grid handles two-dimensional rows and columns
- Media queries adapt designs for different screens
- Design mobile-first for simpler scaling
Step 2: JavaScript
- Variables, functions, arrays, objects and control flow.The Modern JavaScript Tutorial · JavaScript Guide (MDN)
Read more
JavaScript brings web pages to life by adding interactivity, storing data, and making decisions based on user input. Think of it like the electrical wiring and plumbing of a house, making things actually work when you flip a switch.
Variables store data, functions perform tasks, and control flow lets your code make choices. These fundamentals are the building blocks for every script you will ever write.
- Use let and const to declare variables
- Functions group reusable blocks of logic
- Arrays and objects store collections of data
- If statements help your code make decisions
- Reading and changing the page, and reacting to what users do.Introduction to the DOM (MDN)
Read more
The Document Object Model is a live tree representation of your HTML that JavaScript can read and modify. Think of it like a control panel that lets you swap out lightbulbs or repaint walls while the house is occupied.
Event listeners let your scripts wait for user actions like clicks or keystrokes, then update the page instantly. This is how websites feel fast and dynamic without needing full reloads.
- Select elements using querySelector
- Change content using textContent or innerHTML
- Listen for clicks with addEventListener
- Add and remove CSS classes dynamically
- Promises, async/await and loading data from APIs.Using the Fetch API (MDN)
Read more
Asynchronous JavaScript allows your app to request data from external servers without freezing the user interface. Think of it like ordering takeaway over the phone; you stay on the line or wait for a text while the kitchen cooks your meal.
Using async and await makes handling data requests straightforward and easy to read. This lets you build modern apps that load live weather, posts, or prices smoothly.
- Promises represent future completion of tasks
- Async and await make asynchronous code clean
- Fetch gets data from web APIs
- Always handle potential network errors gracefully
- Types that catch mistakes early and make code easier to change.TypeScript Handbook
Read more
TypeScript is a superset of JavaScript that adds static types to your code before it runs. Think of it like having a spellchecker in your text editor that flags typos before you publish your work.
By catching bugs right inside your editor rather than in the browser, TypeScript saves you hours of frustrating debugging. It makes working on large codebases much safer and more predictable.
- Define shapes of objects using interfaces
- Catch type errors during development
- Get better code completion in your editor
- Gradually adopt types in existing projects
Step 3: Tools of the trade
- Tracking changes and collaborating through pull requests.Pro Git book (free)
Read more
Git tracks the history of your code changes, while GitHub lets you store those projects online and collaborate with others. Think of Git as a magical video game save system where you can roll back time if you make a mistake.
Pull requests let you propose changes, review code with peers, and merge new features safely. Knowing these tools is essential for working on any professional development team.
- Commit often with clear, descriptive messages
- Create branches to test new features safely
- Push your code to GitHub for safekeeping
- Use pull requests to review changes
- Installing libraries and running project scripts.Learn Node.js (official)
Read more
npm is a package manager that lets you download and manage third-party code libraries created by other developers. Think of it like a massive hardware store where you can pick up pre-built door hinges rather than forging them yourself.
Project scripts help automate repetitive tasks like starting a development server or building your site for production. It is the central hub for managing project dependencies.
- Install packages using npm install
- Run custom tasks defined in package json
- Keep dependencies updated for security
- Share projects easily with a lock file
- Bundlers and dev servers such as Vite that turn your code into a fast site.Vite guide
Read more
Modern build tools like Vite take your source files, optimize them, and bundle them into lightning-fast assets for the browser. Think of it like a factory that packages raw ingredients into neat, ready-to-sell products.
Development servers give you instant feedback through hot module replacement, meaning your browser updates automatically as you save code. This keeps your workflow fast and enjoyable.
- Vite provides instant dev server startup
- Bundlers combine many files into optimized assets
- Code splitting reduces initial load times
- Production builds minify code for speed
- Inspecting elements, debugging scripts and checking network requests.Chrome DevTools
Read more
Browser DevTools are built right into your browser and let you inspect, edit, and debug your code live. Think of it like an X-ray machine for websites, showing you underlying HTML structures and network activity.
You can test mobile responsiveness, simulate slow network speeds, and track down stubborn JavaScript errors in seconds. It is arguably the most important debugging tool in your toolkit.
- Inspect elements to check styles and layout
- Use the console to log and test code
- Check network requests for failed loads
- Simulate mobile devices for testing
Step 4: A modern framework
- Components, props, state and hooks.Learn React (react.dev)
Read more
React is a popular JavaScript library for building user interfaces out of reusable pieces called components. Think of it like building with Lego bricks, where each brick manages its own appearance and behaviour.
Props pass data down to components, while state manages data that changes over time. Hooks let you add extra features like side effects or state to your functional components.
- Build UIs out of independent components
- Pass data between components using props
- Manage changing data with useState
- Handle side effects using useEffect
- Multi-page apps with shareable URLs.React Router docs
Read more
Routing allows single-page applications to show different views while keeping URLs shareable and clean. Think of it like the floor plan of a building, directing visitors to different rooms without leaving the structure.
Client-side routing swaps components instantly without triggering a full browser refresh, creating a smooth app-like feel. It helps users bookmark and share exact pages within your app.
- Map URL paths to specific components
- Enable smooth navigation without reloads
- Read dynamic parameters from the URL
- Handle missing pages with 404 routes
- Sharing data across components, and caching server data.Managing state (react.dev)
Read more
State management helps you share data across distant parts of your application without messy workarounds. Think of it like a central noticeboard in an office where everyone can read and update important team updates.
As apps grow, managing server cache and global UI settings becomes tricky. Tools like Context or dedicated data-fetching libraries keep your data synchronized cleanly.
- Lift state up when multiple components need it
- Use Context for app-wide settings like themes
- Cache server data to avoid redundant requests
- Keep local state close to where it is used
- Utility CSS like Tailwind, CSS modules and component libraries.Tailwind CSS docs
Read more
Scaling up your styling involves keeping CSS organized so styles do not accidentally clash across large teams. Think of it like setting building regulations so every shop in a mall has a consistent design standard.
Utility-first frameworks like Tailwind let you style elements directly in your markup using pre-made classes. This speeds up development and keeps your CSS bundle lean.
- Utility classes speed up rapid UI building
- CSS modules prevent accidental class name clashes
- Design systems keep branding consistent
- Keep responsive styles readable and maintainable
- (optional)
- Server rendering and routing with frameworks such as Next.js.Next.js docs
Read more
Meta-frameworks like Next.js add server-side rendering and file-based routing on top of your standard UI library. Think of it like upgrading from a tent to a fully serviced apartment with plumbing and electricity ready to go.
Server rendering improves initial page load speed and helps search engines index your content effectively. It provides a complete production-ready framework for serious web applications.
- File-based routing creates pages automatically
- Server rendering boosts initial page performance
- Optimize images and fonts out of the box
- Build full-stack apps with API routes
Step 5: Quality and performance
- Keyboard support, screen readers, contrast and good HTML first.Introduction to web accessibility (W3C)
Read more
Accessibility ensures people with visual, motor, or cognitive impairments can navigate and use your website comfortably. Think of it like adding wheelchair ramps and automatic doors to a physical public building.
Using proper HTML elements, keyboard support, and clear contrast ratios makes your site usable for everyone. It is a core responsibility of every professional frontend developer.
- Ensure full navigation using only a keyboard
- Add alt text to images for screen readers
- Maintain strong colour contrast for readability
- Use semantic HTML landmarks for structure
- Fast loading and smooth interaction, measured with Core Web Vitals.Web Vitals (web.dev)
Read more
Web performance is all about making your pages load instantly and respond smoothly to user interactions. Think of it like tuning a car engine so it accelerates quickly without stuttering or stalling.
Core Web Vitals measure loading speed, visual stability, and responsiveness. Optimizing images, reducing heavy scripts, and caching assets keeps users happy and engaged.
- Optimize and compress large image files
- Minimize unused JavaScript and CSS code
- Improve loading speed for mobile networks
- Measure performance using Lighthouse audits
- Unit tests for logic and end-to-end tests for key journeys.Jest: getting started · Playwright: getting started
Read more
Testing involves writing automated scripts to check that your code works correctly and does not break unexpectedly. Think of it like quality control checks in a factory before products are shipped to customers.
Unit tests check individual functions, while end-to-end tests simulate real users clicking through key journeys. Testing gives you the confidence to refactor and update your code safely.
- Unit tests verify small, isolated functions
- Component tests check UI rendering and events
- End-to-end tests simulate real user journeys
- Catch regressions before releasing to production
- Two or three polished, deployed projects that show what you can do.
Read more
A strong portfolio showcases polished, real-world projects that prove your ability to build functional websites. Think of it like an artist's gallery showing off their best paintings to potential clients or employers.
Deploying your projects live makes them easy for others to click and test on their own devices. Good documentation and clean code matter just as much as visual design.
- Build two or three complete, polished projects
- Deploy your apps live using hosting platforms
- Write clear README files explaining your work
- Highlight features, challenges, and tech stacks