🚀 Sign up for free Postgres now: https://kirr.co/j2bylk Learn to build a Django CRM from scratch in this comprehensive nearly 6-hour course. You'll integrate Google Contacts, implement time-series analytics with TimescaleDB, and use production-ready automation with modern Python tools. This project covers everything from initial setup to production-ready automation. Key Technologies 🕹️ Django - Full-stack web framework 🕹️ Tiger Cloud & TimescaleDB - Fast & time-series optimized PostgreSQL 🕹️ Google OAuth & People API - Authentication and contact syncing 🕹️ Tailwind CSS & Flowbite - Modern UI components 🕹️ Chart.js - Data visualization 🕹️ uv - Modern Python package management 🕹️ GitHub Actions - Automated workflows What You'll Learn ✅ Set up a modern Django project with uv and pre-commit ✅ Build Django models with foreign keys and relationships ✅ Implement Google OAuth authentication ✅ Create dynamic templates with Django templating system ✅ Track user events with Django signals and generic foreign keys ✅ Analyze time-series data with TimescaleDB ✅ Sync and parse data from Google People API ✅ Build custom Django management commands ✅ Visualize analytics with Chart.js ✅ Automate contact syncing with GitHub Actions ✅ Build a near-production-ready Django application ⭐️ Course Outline ⭐️ 1. Getting Started •• Project overview and setup •• Django project creation with uv •• Pre-commit hooks and automation •• Creating your first Django user 2. Django Fundamentals •• Models and database design •• Foreign key relationships •• Database migrations best practices •• Environment variable management 3. Authentication & Views •• Google Cloud setup and OAuth •• Django views and URL routing •• HTML templates and template inheritance •• Dynamic vs static content 4. Frontend & Static Files •• Managing static files with Whitenoise •• UI design with Tailwind and Flowbite •• Rendering database data in templates •• Custom Tailwind theme (optional) 5. Event Tracking System •• Event model for user activity tracking •• Generic foreign keys for flexible relationships •• Django signals for automated event creation •• Custom signals and event analytics 6. TimescaleDB Analytics •• Setting up TimescaleDB with Django •• Time-series event tracking •• Time bucket analysis and data aggregation •• Visualizing analytics with Chart.js 7. Google Contacts Integration •• Google People API setup and scopes •• Parsing Google API responses •• Contact sync service implementation •• Custom Django management commands 8. Automation with GitHub Actions •• Production-ready contact sync automation •• Scheduled workflow implementation 💻 Code: https://github.com/codingforentrepren... Chapters: 00:00:00 Welcome 00:03:34 Final Project & Code Overview 00:07:47 Python & Django Project Setup 00:14:48 Create a Django Project with uv 00:24:22 Install pre-commit 00:29:50 Automate requirements file with uv and pre-commit 00:35:04 Creating your first Django User 00:41:09 Using Django to Store Data 00:48:28 Connecting Data with Foreign Keys 00:55:58 The Good, the bad, and the Ugly of DB Migrations 01:02:18 Handling Secrets with Python Dotenv 01:07:01 Google Cloud & Sign in with Google 01:13:53 Sign in with django-googler 01:21:28 Handling URLs with Views 01:28:43 Django View to Valid HTML 01:32:59 HTML Templates with Pure Python 01:38:36 Using Django Templates 01:44:43 Django Template Inheritance 01:50:34 Dynamic vs Static Content 01:57:16 Manage Static Files with Django 02:02:32 Django and Whitenoise for Static Files 02:07:26 Dashboard Templates & rav Install 02:18:47 Render a User's Data from Models 02:24:00 Loop Database Data in Django Templates 02:25:54 Render Contacts through Flowbite Blocks 02:30:57 Custom Tailwind Theme Build (optional) 02:36:40 Contacts Detail Page and Get Absolute Url 02:45:50 Tracking Attention with an Event Model 02:55:40 Data Ownership through Foreign Keys 03:02:31 Generic Foreign Keys for Event Tracking 03:10:08 Using Django Signals to Create Events 03:15:52 Custom Django Signal To Track & Handle Events 03:28:04 Event Analytics Basics 03:33:04 Reverse Relationships in Generic Foreign Keys 03:37:14 TimescaleDB & Time-Series Postgres 03:38:40 Create TimescaleDB & Integrate to Django 03:46:38 Timescale Model for Event Tracking 03:51:05 Counting Event Types in Time Ranges 03:58:07 Using Timescale Time Buckets to Analyze Data 04:07:15 Fill Gaps in Data with Timescale 04:15:42 Group Event Types by Time Buckets 04:22:36 Django Template Tag for Analytics Data as JSON 04:30:25 Using Chartjs to Render Time Series Analytics Data 04:41:11 New Scopes for the Google People API 04:44:44 Helper Functions for the Google API 04:55:42 Verify the Google People API Functions 05:02:19 Parse Google API Results 05:05:24 Contact Sync Service Part 1 05:11:59 Contact Sync Service Part 2 05:19:05 Load Contacts with a Custom Django Management Command 05:26:18 Automate Google Contacts Sync with GitHub 05:47:27 Thank you and 2 Challenges