Full stack development means building both the frontend (what users see and interact with in the browser) and the backend (the server, database, and logic that power the application behind the scenes). A full stack developer can build a complete working application from scratch. It is the most common developer job title because most companies need people who can work across the whole system rather than only one layer of it.
Every web application you have ever used has three layers. Understanding these three layers is understanding full stack development. The layers are the same whether you are looking at Twitter, an M-Pesa portal, a small e-commerce site built by a developer in Nairobi, or a hospital records system in Lagos.
Layer 1: The Frontend (what you see). Open any website right now. Everything on the screen is the frontend. The navigation bar at the top. The text you are reading. The images. The buttons. The login form. The loading spinner that appears when data is being fetched. All of it. The frontend is built with HTML (the structure of the page), CSS (the styling and layout), and JavaScript (the interactivity), usually with a framework like React to make building complex interfaces faster and more maintainable. The frontend runs entirely in the user's browser. When you visit a website, your browser downloads the frontend code and renders it on your screen.
Layer 2: The Backend (what you do not see). When you type your password and click "Log In," something needs to check whether that password is correct. That something is the backend. It is a program running on a server (a computer sitting in a data centre, usually in a different city or even a different country) that receives requests from the frontend, processes them, and sends back responses. The backend handles all the logic: Is this user allowed to see this page? How much should this order cost after the discount is applied? Has the M-Pesa payment actually gone through, or did the transaction fail? The backend is typically built with JavaScript (Node.js), Python, Go, or Java.
Layer 3: The Database (where data lives permanently). When you create an account, your name and email and hashed password need to be stored somewhere so the system remembers you next time. When you post something on social media, it needs to be saved so it is still there tomorrow. When a shop owner adds a product to their catalogue, that product information needs to persist. That "somewhere" is the database. The most common type for web applications is a relational database like PostgreSQL, which organises data in tables (think spreadsheets with rows and columns). The backend talks to the database to save, read, update, and delete data on behalf of the user.
A full stack developer understands all three layers and can build across them. That does not mean being equally brilliant at everything. It means being able to take an idea and turn it into a working application, end to end.
Abstract definitions only go so far. Let us trace something concrete. When you send money via an M-Pesa-integrated web application, all three layers are working together. Here is exactly what happens.
You open the payment page. Your browser sends a request to the backend: "Give me the payment form for this order." The backend checks the order details in the database (what items, what total, what currency) and sends that information to the frontend. The frontend renders a clean payment page showing the order summary and a "Pay with M-Pesa" button. Everything you see on screen is frontend work.
You enter your phone number and click "Pay." The frontend sends your phone number and the order ID to the backend via an API call. The frontend shows a loading spinner and a message: "Check your phone for the M-Pesa prompt." This is frontend handling user experience while the backend does the heavy lifting.
The backend processes the payment. It receives the request, validates the phone number format, retrieves the order total from the database, and calls the Safaricom Daraja API to trigger an STK Push on your phone. You see the M-Pesa prompt on your phone, enter your PIN, and confirm. Safaricom processes the transaction and sends a callback to the backend with the result: success or failure. The backend receives that callback, updates the order status in the database from "pending" to "paid," and records the transaction reference number.
You see the confirmation. The frontend has been polling the backend (asking "is the payment done yet?" every few seconds). When the backend responds with "yes, paid," the frontend replaces the loading spinner with a green checkmark and the message "Payment received. Your order is confirmed." The order details are pulled from the database and displayed.
In this single flow, frontend, backend, and database all worked together. A full stack developer built all of it. That is what full stack means in practice: you can trace any user action from the button they click, through the server that processes it, to the database record it creates, and back to the confirmation they see on screen.
Get weekly developer tips
Join 25,000+ developers. Practical guides, job tips, and new content — straight to your inbox.
No spam. Unsubscribe anytime.
The frontend and backend are separate systems. The frontend runs in your browser. The backend runs on a server, potentially thousands of kilometres away. They need a way to communicate. That way is called an API (Application Programming Interface).
The restaurant analogy works well here. You (the frontend) are sitting at a table. The kitchen (the backend) is behind a closed door. The waiter (the API) takes your order to the kitchen and brings the food back to your table. You never go into the kitchen. You do not need to know how the food is prepared. The waiter handles all the communication between you and the kitchen.
In technical terms, the frontend sends an HTTP request to a specific URL on the backend (called an endpoint). Something like GET https://api.myshop.com/products. The backend receives the request, queries the database for products, and sends back a response containing the data, usually formatted as JSON (JavaScript Object Notation). The frontend takes that JSON data and renders it as product cards on the screen.
Here is what a real API call looks like in code:
// Frontend code: ask the backend for products
const response = await fetch('https://api.myshop.com/products');
const products = await response.json();
// Now you have the data, display it
products.forEach(product => {
console.log(product.name, product.price);
});
And here is what the backend sends back:
[
{ "id": 1, "name": "Laptop Stand", "price": 2500 },
{ "id": 2, "name": "USB-C Hub", "price": 3200 },
{ "id": 3, "name": "Webcam", "price": 4800 }
]
The frontend takes this JSON array and turns it into a beautiful product grid with images, prices, and "Add to Cart" buttons. The user sees a polished interface. Behind the scenes, data flowed from the database, through the backend API, across the internet, to the frontend, all in a fraction of a second.
Understanding APIs is the single most important skill for connecting frontend and backend. It is the bridge that turns two separate systems into one complete application. For a hands-on walkthrough, see our guide on making your first API call.
Search for developer jobs in Kenya, Nigeria, Rwanda, or anywhere in Africa. You will notice a pattern: "Full Stack Developer" and "Software Engineer" (which usually means full stack) appear far more often than "Frontend Developer" or "Backend Developer" as standalone roles. This is not random. It reflects how African companies are actually built.
Startups need generalists who can build entire products. A 5-person startup in Nairobi cannot hire a frontend developer, a backend developer, a database administrator, and a DevOps engineer. That is four salaries for four people. They need one or two developers who can build the whole product. The person who can create the React interface, set up the Node.js server, design the PostgreSQL database, and integrate M-Pesa payments is worth their weight in gold to any early-stage company.
Smaller teams move faster with full stack developers. When a full stack developer finds a bug in the frontend, they can trace it through the API to the database query and fix it without waiting for a backend colleague. When a new feature needs both a UI component and an API endpoint, one person builds both. Less coordination, fewer meetings, fewer handoffs, faster delivery. This speed advantage is significant at companies where shipping fast determines whether the company survives.
Even large companies value full stack understanding. At a big company like Safaricom, Andela, or a major bank, you might have dedicated frontend and backend teams. But developers who understand the full stack are more effective even in specialised roles. A frontend developer who understands the backend makes better API design decisions. A backend developer who understands the frontend builds APIs that are actually pleasant to consume. The best developers at large companies tend to be people who started full stack and then specialised.
Remote work amplifies the advantage. Many African developers work remotely for international companies. Remote teams tend to be smaller, and they rely on individual developers to own larger pieces of the system. Being full stack means you can take on more work independently, which makes you more valuable to remote employers and gives you access to higher-paying contracts.
The practical takeaway: if you are choosing what to learn, full stack gives you the widest range of job opportunities, the fastest path to your first income, and the most flexibility for your career. You can always specialise later once you have enough experience to know which layer you enjoy most.
A "tech stack" is the specific set of tools and languages used to build an application. Hundreds of valid combinations exist, but here is the most popular full stack combination in 2026 and the one McTaba teaches:
Frontend: React (JavaScript/TypeScript). React is a library for building user interfaces. It breaks your UI into reusable components (a NavBar component, a ProductCard component, a LoginForm component) that you compose together like building blocks. React is the most in-demand frontend technology both globally and across the African continent. TypeScript (JavaScript with type safety) is the standard in most professional React codebases.
Backend: Node.js with Express (JavaScript/TypeScript). Node.js lets you run JavaScript on the server. Express is a lightweight framework that makes creating API endpoints straightforward. The huge advantage of this combination: you use the same language on both the frontend and backend. One language, two environments. That cuts your learning curve significantly because you are not context-switching between different syntaxes while you are still learning fundamentals.
Database: PostgreSQL. A free, reliable, battle-tested SQL database. PostgreSQL works with every major web framework, scales to massive applications, and is what most employers expect you to know. Supabase provides hosted PostgreSQL with extras like authentication, real-time subscriptions, and a REST API out of the box.
Other stacks you will hear about:
Do not stress about picking the "right" stack. The underlying concepts transfer across all of them. If you learn React + Node.js + PostgreSQL and later join a company using Django + Vue + MySQL, you will adapt in weeks because the patterns (components, APIs, SQL queries, authentication) are the same everywhere.
You do not learn all three layers simultaneously. That would be overwhelming and ineffective. Each layer builds on the one before it. Here is the realistic sequence that works for most people.
Months 1 to 2: Frontend fundamentals. Learn HTML (structure), CSS (styling), and JavaScript (interactivity). Build static web pages, then add interactivity. Learn how to fetch data from a public API and display it on a page. At this point, you are consuming other people's APIs (weather data, news feeds, random facts), not building your own. You are a frontend developer in training.
Months 3 to 4: React. Learn component-based architecture, state management, props, hooks, and routing. Build real projects: a to-do app, a weather dashboard, a portfolio site. You are still frontend at this stage, but now you are building interfaces that feel like real applications rather than simple web pages.
Months 4 to 5: Backend fundamentals. Learn Node.js and Express. Build your first API. Understand routes, middleware, request/response cycles, and error handling. Then connect your React frontend to your own API instead of someone else's. This is the moment you cross the line into full stack development. The first time your frontend fetches data from a backend you personally wrote is a milestone worth celebrating.
Months 5 to 6: Database. Learn PostgreSQL and basic SQL (SELECT, INSERT, UPDATE, DELETE, WHERE, JOIN). Create tables, define relationships, and connect your database to your backend. Now your application can store data permanently. Build a CRUD application (Create, Read, Update, Delete) that has a React frontend, a Node.js backend, and a PostgreSQL database. This is a complete full stack application.
Months 6 onward: Real-world skills. Authentication (login and registration systems), deployment (putting your application on the actual internet), payment integration (M-Pesa Daraja, Paystack, Flutterwave), testing, error handling, and file uploads. These are the skills that separate someone who has completed tutorials from someone who can build production software for real users.
This is a 6 to 9 month path with consistent daily study (2 to 4 hours per day). It is not easy, but it is completely achievable. The key is building projects at every stage. Do not just watch tutorials. Build things, break them, debug them, fix them. That cycle is how programming skills are actually acquired.
Let us clear up some misconceptions that trip people up.
"Full stack means you are an expert at everything." Not even close. Full stack means you can work across all layers and build a complete application. Most full stack developers are stronger on one side. Some are frontend-leaning (they are excellent at React and solid at Node.js). Others are backend-leaning (they love database design and APIs but their CSS is functional rather than beautiful). That is normal and perfectly fine. The point is that you can build a working product, not that every layer is equally polished.
"Full stack means you also handle DevOps, mobile, and UI design." No. Full stack in the web development context means frontend + backend + database. DevOps (server infrastructure, CI/CD pipelines, container orchestration) is a related but separate discipline. Mobile development (React Native, Flutter, Swift) is another. UI/UX design (Figma, user research, wireframing) is another. Some full stack developers pick up skills in these areas over time, but they are not part of the core definition and nobody expects a full stack developer to be a DevOps engineer on the side.
"Full stack is too much to learn." It feels that way when you look at the whole mountain from the bottom. But you climb it one step at a time. You learn HTML, and that feels manageable. Then you add CSS, and that is one more thing. Then JavaScript. Then React. Then Node.js. Then PostgreSQL. Each step builds naturally on the previous one. By the time you are writing SQL queries, HTML feels like second nature. The mountain looks huge from the bottom. From the middle, looking back, you realise you have already covered most of the distance.
"Full stack is going away because of AI." AI tools are making developers faster, not replacing them. A full stack developer who uses AI to generate boilerplate code, debug errors, and automate repetitive tasks ships software faster than ever before. The role is evolving (AI integration is now part of the toolkit), but the core skill of understanding how frontend, backend, and database work together remains fundamental and is not something AI can substitute for. See our article on whether you should still learn to code in the AI era for a deeper look at this.
KES 2,999
Not sure where to begin? This beginner-friendly course covers how computers work, the internet, Git, and your first lines of code — everything you need before picking a stack. 10 modules, 89 lessons.
Start Tech Foundations