https://github.com/codingforentrepreneurs/video-membership
Create a Video Membership app using FastAPI & NoSQL
https://github.com/codingforentrepreneurs/video-membership
algolia astradb cassandra cassandra-driver datastax fastapi htmx http-only-cookies jinja2 jwt pydantic python3 tutorial user-authentication video-analytics video-membership youtube-player-api
Last synced: 18 days ago
JSON representation
Create a Video Membership app using FastAPI & NoSQL
- Host: GitHub
- URL: https://github.com/codingforentrepreneurs/video-membership
- Owner: codingforentrepreneurs
- Created: 2021-12-02T18:15:05.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2021-12-22T20:42:26.000Z (over 3 years ago)
- Last Synced: 2025-03-24T05:51:43.733Z (about 1 month ago)
- Topics: algolia, astradb, cassandra, cassandra-driver, datastax, fastapi, htmx, http-only-cookies, jinja2, jwt, pydantic, python3, tutorial, user-authentication, video-analytics, video-membership, youtube-player-api
- Language: Python
- Homepage: https://www.codingforentrepreneurs.com/projects/video-membership/
- Size: 92.8 KB
- Stars: 106
- Watchers: 5
- Forks: 32
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://www.codingforentrepreneurs.com/projects/video-membership)
# Video Membership
Create a Video Membership app using FastAPI & NoSQL. In this series, we're going to explore building a membership application using FastAPI and a managed Cassandra database called [AstraDB](https://dtsx.io/3lAUmnG).
In this one, we'll learn how to implement a number of key features in building a video membership site including:
- Creating Users (with custom fields) from scratch
- Saving Secure, Hashed, Passwords
- Authentication
- Video Analytics & Resumable Videos
- Search Engine
- And much more### Chapter Links
- [00:00:00 - Welcome](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=0)- [00:05:27 - Requirements](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=327)
- [00:06:51 - Setup VSCode & Python Virtual Environment](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=411)
- [00:12:12 - Hello World with FastAPI](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=732)
- [00:18:58 - Picking a Database](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=1138)
- [00:24:56 - Create our NoSQL Database with AstraDB](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=1496)
- [00:27:48 - Basic AstraDB Configuration for FastAPI](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=1668)
- [00:35:54 - Configuration & Environment Variables](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=2154)
- [00:43:30 - Create our User model with Python & Cassandra](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=2610)
- [00:51:08 - Sync Cassandra Tabels via FastAPI On Startup](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=3068)
- [00:58:40 - Create a user via shell](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=3520)
- [01:02:05 - List Stored Values on API Endpoint](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=3725)
- [01:05:15 - User Create Method & Email Valdiation](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=3915)
- [01:13:12 - Security & Password Hashing](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=4392)
- [01:22:45 - Interactive Notebook to Analyze New Features](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=4965)
- [01:32:18 - Automated Tests](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=5538)
- [01:50:25 - Jinja Templates to Render HTML](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=6625)
- [02:00:00 - Jinja Template Inheritance & More](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=7200)
- [02:06:44 - FastAPI Forms FastAPI Login & Sign Up Forms](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=7604)
- [02:15:16 - User Data Validation with pydantic](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=8116)
- [02:26:10 - Implement pydantic Data Validation](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=8770)
- [02:35:44 - Pydantic Valid Data or Error Method](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=9344)
- [02:44:06 - Experiment with JWT Tokens](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=9846)
- [02:58:02 - Implement Auth Methods for JWT Tokens](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=10682)
- [03:07:53 - Shortcut Method for Rendering Jinja Templates](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=11273)
- [03:19:53 - Using Cookies & httponly within FastAPI](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=11993)
- [03:27:54 - Login & Set JWT](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=12474)
- [03:37:09 - Redirect Shortcut](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=13029)
- [03:41:53 - Login Required Decorator](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=13313)
- [03:52:36 - Render a template for HTTP Errors](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=13956)
- [04:04:24 - Authentication Middleware Backend](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=14664)
- [04:20:50 - Video Model](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=15650)
- [04:27:57 - YouTube Video ID Extraction](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=16077)
- [04:35:17 - Notebook to Verify Video Add Feature ](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=16517)
- [04:41:51 - Custom Exception Classes for Videos](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=16911)
- [04:46:21 - Routers for Sub Modules in FastAPI](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=17181)
- [04:52:51 - Video Create Schema](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=17571)
- [05:02:59 - Video Create View](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=18179)
- [05:06:00 - Video Create View Form](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=18360)
- [05:18:52 - Video List View & Title Field](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=19132)
- [05:29:43 - Dynamic URL Routing & Video Detail View](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=19783)
- [05:40:50 - Render Video on Detail Page](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=20450)
- [05:46:56 - The YouTube JavaScript Player](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=20816)
- [06:34:13 - Video Watch Events Endpoint in FastAPI](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=23653)
- [06:45:17 - Watch Event Model](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=24317)
- [06:55:30 - Drop Table from Cassandra Database via Notebook](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=24930)
- [07:03:45 - More Watch Event Data](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=25425)
- [07:09:24 - Pydantic Model for Watch Event Data](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=25764)
- [07:17:40 - Watch Event Router](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=26260)
- [07:22:32 - Get Video Resume Time](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=26552)
- [07:30:07 - Playlist Model & Cassandra List Column](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=27007)
- [07:34:42 - Playlist Tests in Notebooks](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=27282)
- [07:45:25 - Playlist Routing & Templates](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=27925)
- [07:55:36 - HTMX, FastAPI, & Jinja](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=28536)
- [08:04:07 - Use HTMX to Handle Form Data](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=29047)
- [08:16:36 - Get or Create Video for Playlists](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=29796)
- [08:24:49 - Playlist Routers for Handling Video Additions](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=30289)
- [08:37:23 - Playlist Video Schema](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=31043)
- [08:48:58 - Remove Playlist Item via HTMX](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=31738)
- [09:01:13 - Edit or Remove Video](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=32473)
- [09:11:04 - Edit or Remove Video via HTMX](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=33064)
- [09:27:16 - Add Bootstrap & Improve Usablity](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=34036)
- [10:07:19 - Login Required HTMX Redirect Header](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=36439)
- [10:11:10 - Logout View](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=36670)
- [10:18:58 - Prepare our Search Index](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=37138)
- [10:33:00 - Implement Algolia Client & API](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=37980)
- [10:41:43 - Update Search Index](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=38503)
- [10:49:46 - Search View & Update Index Method](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=38986)
- [11:03:25 - Thank you and next steps](https://www.youtube.com/watch?v=KQ-u4RcFLBY&t=39805)