Course Contents
Intro
Project Overview
Mac Python Installation
Mac VS Code install and setup
Windows Python Installation
Windows VS Code install and setup
Python virtual Env Basics
Virtual Env on windows
Virtual Env on Mac
Install dependencies w/ pip
Starting FastAPI
Path Operatio
Intro toman
HTTP Requests
Schema Validation with Pydantic
CRUD Operations
Storing in Array
Creating
Postman Collections & saving requests
Retrieve One
Path order Matters
Changing response Status Codes
Deleting
Updating
Automatic Documentation
Python packages
Database Intro
Postgres Windows Install
Postgres Mac Install
Database Schema & Tables
Managing Postgres with PgAdmin GUI
Your first SQL Query
Filter results with “where”
SQL Operators
IN
Pattern matching with LIKE
Ordering Results
LIMIT & OFFSET
Modifying Data
Setup App Database
Connecting to database w/ Python
Database CRUD
ORM intro
SQLALCHEMY setup
Adding CreatedAt Column
Get All
Create
Get by ID
Delete
Update
Pydantic vs ORM Models
Pydantic Models Deep Dive
Response Model
Creating Users Table
User Registration Path Operation
Hashing Passwords
Refractor Hashing Logic
Get User by ID
FastAPI Routers
Router Prefix
Router Tags
JWT Token Basics
Login Process
Creating Token
OAuth2 PasswordRequestForm
Verify user is Logged In
Fixing Bugs
Protecting Routes
Test Expired Token
Fetching User in Protected Routes
Postman advanced Features
SQL Relationship Basics
Postgres Foreign Keys
SQLAlchemy Foreign Keys
Update Schema to include User
Assigning Owner id when creating new
Delete and Update only your own
Only Retrieving Logged in User’s
Sqlalchemy Relationships
Query Parameters
Cleanup our main.py file
Env Variables
Vote/Like Theory
Votes Table
Votes Sqlalchemy
Votes Route
SQL Joins
Joins in SqlAlchemy
Get One with Joins
What is a database migration tool
Alembic Setup
Disable SqlAlchemy create Engine
What is CORS?
Git PreReqs
Git Install
Github
Heroku intro
Create Heroku App
Heroku procfile
Adding a Postgres database
Env Variables in Heroku
Alembic migrations on Heroku Postgres instance
Pushing changed to production
Create an Ubuntu VM
Update packages
Install Python
Install Postgres & setup password
Postgres Config
Create new user and setup python evironment
Env Variables
Alembic migrations on production database
Gunicorn
Creating a Systemd service
NGINX
Setting up Domain name
SSL/HTTPS
NGINX enable
Firewall
Pushing code changes to Production
Dockerfile
Docker Compose
Postgres Container
Bind Mounts
Dockerhub
Production vs Development
Testing Intro
Writing your first test
The -s & -v flags
Testing more functions
Parametrize
Testing Classes
Fixtures
Combining Fixtures + Parametrize
Testing Exceptions
FastAPI TestClient
Pytest flags
Test create user
Setup testing database
Create & destroy database after each test
More Fixtures to handle database interaction
Trailing slashes in path
Fixture scope
Test user fixture
Test/validate token
Conftest.py
Testing
CI/CD intro
Github Actions
Creating Jobs
setup python/dependencies/pytest
Env variables
Github Secrets
Testing database
Building Docker images
Deploy to heroku
Failing tests in pipeline
Deploy to Ubuntu
