Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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: about 14 hours ago
JSON representation

Create a Video Membership app using FastAPI & NoSQL

Awesome Lists containing this project

README

        

[![Video Membership Logo](https://static.codingforentrepreneurs.com/media/projects/video-membership/images/share/Video_Membership_Share.jpg)](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)