This course is for YOU if...
You’re a programmer, tech entrepreneur, or you're learning how to build backends. This course will help lay the foundation of your knowledge base. It will give you the tools to advance your skills with some of the most in-demand programming languages today.
Why APIs?
APIs drive the technologies that we all love and use every day.
One of the most critical components for any tech-based business or service is an API. So knowing how to create an API from start to finish is a vital skill to have as a developer.
You cannot build a successful app without a backend REST API!
In this course I’ll show you how to build an advanced API that handles creating and updating user profiles, changing passwords, creating objects, uploading images, filtering and searching objects, and more.
Recipe API
The project you will build is a recipe API. Think of it as a virtual recipe box that allows you to upload and store some of your favourite recipes from photos or the web. You’ll learn how to create objects (i.e. recipes) with titles, price points, cooking times, ingredients and tags like “comfort food”, “vegan” or “dessert”.
Test Driven Development
TDD is a software development practice that separates the good from the great. This is because it vastly improves the reliability and robustness of the code you write. Any of the top tech companies or serious professional development teams will expect you to use TDD in any code you produce. You'll learn how to implement it properly in this course.
Deployment
In this course you’ll learn crucial backend development skills like setting up a project with Docker and Docker-Compose, configuring a Postgres database, automating your documentation, and creating a simple deployment with AWS.
Last but not least...
We offer our students a bespoke tool to check their code in real-time. Have an issue with your project? Code not working? Plug it into codechecker.app and you'll get instant feedback, comparing your code to the course code. No more waiting for the instructor to reply.
The Curriculum
- New project overview (6:26)
- Create GitHub project [Follow Along] (5:27)
- Docker and Django (4:25)
- Define Python requirements [Follow Along] (3:46)
- Create project Dockerfile [Follow Along] (17:46)
- Quiz: Docker and Docker Compose
- Create Docker Compose configuration [Follow Along] (4:03)
- Linting and Tests (3:04)
- Configure flake8 [Follow Along] (10:04)
- Create Django project [Follow Along] (2:39)
- Run project with Docker Compose [Follow Along] (1:58)
- Project setup overview (1:03)
- Database architecture overview (4:51)
- Add database service [Follow Along] (6:47)
- Database configuration with Django (8:13)
- Install PostgreSQL database adaptor [Follow Along] (5:29)
- Configure database in Django [Follow Along] (2:53)
- Fixing database race condition (6:27)
- Create core app [Follow Along] (2:05)
- Write tests for wait_for_db command [Follow Along] (19:45)
- Add wait_for_db command [Follow Along] (9:14)
- Database migrations (7:54)
- Update Docker Compose and CI/CD [Follow Along] (4:21)
- Summary (0:57)
- The Django user model (5:16)
- Design custom user model (2:08)
- Add user model tests [Follow Along] (7:01)
- Implement user model [Follow Along] (17:27)
- Normalize email addresses [Follow Along] (6:10)
- Require email input [Follow Along] (2:50)
- Add superuser support [Follow Along] (4:29)
- Test user model [Follow Along] (2:40)
- Summary of Create User Model (0:24)
- User API design (2:03)
- Create user app [Follow Along] (2:13)
- Write tests for create user API [Follow Along] (14:03)
- Implement create user API [Follow Along] (13:47)
- Authentication (7:59)
- Quiz: Authentication
- Write tests for token API [Follow Along] (7:11)
- Implement token API [Follow Along] (13:49)
- Write tests for manage user API [Follow Along] (10:11)
- Implement manage user API [Follow Along] (9:20)
- Review user API in browser [Follow Along] (7:00)
- Summary (0:53)
- Recipe API design (1:54)
- APIView vs Viewsets (3:58)
- Write test for recipe model [Follow Along] (5:57)
- Implement recipe model [Follow Along] (9:13)
- Create recipe app [Follow Along] (1:30)
- Write tests for listing recipes [Follow Along] (16:26)
- Implement recipe listing API [Follow Along] (11:53)
- Write tests for recipe detail API [Follow Along] (4:03)
- Implement recipe detail API [Follow Along] (6:26)
- Write tests for creating recipes [Follow Along] (6:11)
- Implement create recipe API [Follow Along] (2:31)
- Add additional tests [Follow Along] (16:07)
- Review recipe API in browser [Follow Along] (8:34)
- Summary (0:25)
- Tags API design (1:27)
- Add tag model [Follow Along] (7:14)
- Write tests for listing tags [Follow Along] (14:01)
- Implement tag listing API [Follow Along] (7:28)
- Write tests for updating tags [Follow Along] (4:15)
- Implement update tag API [Follow Along] (1:45)
- Write tests for deleting tags [Follow Along] (2:38)
- Implement delete tag API [Follow Along] (1:12)
- Nested serializers (2:16)
- Write tests for creating tags [Follow Along] (11:40)
- Implement create tag feature [Follow Along] (7:36)
- Write tests for updating recipe tags [Follow Along] (9:56)
- Implement update recipe tags feature [Follow Along] (7:03)
- Review tags API in browser [Follow Along] (7:28)
- Summary (0:28)
- Ingredients API Design (2:20)
- Add ingredient model [Follow Along] (5:53)
- Write tests for listing ingredients [Follow Along] (12:51)
- Implement ingredient listing API [Follow Along] (6:32)
- Write tests for updating ingredients [Follow Along] (4:05)
- Implement update ingredient API [Follow Along] (1:31)
- Write tests for deleting ingredients [Follow Along] (3:16)
- Implement delete ingredient API [Follow Along] (0:50)
- Write tests for creating ingredients [Follow Along] (11:44)
- Implement create ingredients feature [Follow Along] (6:51)
- Write tests for updating recipe ingredients [Follow Along] (10:04)
- Implement update recipe ingredients feature [Follow Along] (2:29)
- Refactoring (12:51)
- Refactor recipe views [Follow Along] (5:21)
- Review ingredient API in browser [Follow Along] (5:12)
- Summary (0:36)
- Recipe image API design (2:04)
- Add image handling dependencies [Follow Along] (2:54)
- Static files with Django and Docker (8:11)
- Configure project for static files [Follow Along] (8:49)
- Modify recipe model [Follow Along] (10:11)
- Write tests for uploading images [Follow Along] (12:30)
- Implement image API [Follow Along] (10:08)
- Review image uploading in browser [Follow Along] (5:27)
- Summary (0:24)
- Filtering design (4:45)
- Add tests for filtering recipes [Follow Along] (9:54)
- Implement recipe filter feature [Follow Along] (12:21)
- Add tests for filtering tags and ingredients [Follow Along] (13:25)
- Implement tag and ingredient filtering [Follow Along] (5:38)
- Review filtering in browser [Follow Along] (7:30)
- Summary (0:26)
- Deployment plan (3:28)
- Django deployment overview (11:37)
- Add uWSGI to project [Follow Along] (9:14)
- Create proxy configs [Follow Along] (11:52)
- Create proxy Dockerfile [Follow Along] (9:18)
- Handling configuration (1:41)
- Create docker compose config [Follow Along] (8:38)
- Update Django settings [Follow Along] (8:59)
- Creating a virtual server (3:16)
- Create AWS account [Follow Along] (4:56)
- Upload SSH Key to AWS [Follow Along] (4:29)
- Create EC2 instance [Follow Along] (4:57)
- Setup GitHub deploy key [Follow Along] (2:21)
- Install Docker, Compose and Git [Follow Along] (3:14)
- Clone and configure project [Follow Along] (3:19)
- Run service [Follow Along] (2:50)
- Updating service [Follow Along] (8:33)
- Deployment overview (0:38)
Featured Courses
Interested in learning more? Check out our other comprehensive courses. There's something for every skill level.