Skip to content

Latest commit

Β 

History

109 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ§ͺ 30-Day Enterprise Flask Masterclass

A production-grade, 30-day masterclass curriculum and deployable microservice repository spanning web architecture, SQLAlchemy 2.0, JWT RBAC auth, Celery background tasks, real-time WebSockets, automated Pytest suites, CI/CD pipelines, and multi-container Docker deployments.

CI/CD Pipeline Flask Version SQLAlchemy Python Version License: MIT Tests Passing


Welcome to the 30-Day Enterprise Flask Masterclass! This repository serves a dual purpose:

  1. A Complete 30-Day Step-by-Step Curriculum: Comprehensive concept deep-dives, beginner guides, memory cheatsheets, interview Q&A, and practice apps for all 30 days.
  2. A Production-Grade Deployable Software Repository (capstone/): A unified, containerized microservice equipped with modern SQLAlchemy 2.0 Mapped[] models, JWT authentication with token revocation, Celery background workers with Redis, Socket.IO real-time channels, K8s liveness/readiness probes (/healthz, /ready), Prometheus metrics, root automated test suites, and Docker Compose orchestration.

πŸ›οΈ Production System Architecture

flowchart TD
    subgraph ClientLayer["Client & Consumers"]
        Browser["🌐 Web Browser / SPA"]
        Mobile["πŸ“± Mobile App"]
        WSClient["⚑ WebSocket Client"]
    end

    subgraph ReverseProxy["Edge / Reverse Proxy Layer"]
        Nginx["πŸ›‘οΈ Nginx Reverse Proxy (Port 80)\n- SSL Termination\n- Rate Limiting (10 req/s)\n- Static Media Caching (/api/v1/media/)"]
    end

    subgraph ApplicationLayer["Application Core (Gunicorn WSGI)"]
        Flask["πŸ§ͺ Flask 3.x Application Factory\n- Blueprints (/api/v1/*)\n- JWT Auth & Revocation\n- Role-Based Access Control (RBAC)\n- Prometheus Metrics (/metrics)"]
        SocketIO["πŸ”Œ Flask-SocketIO Engine\n- Real-time Event Rooms\n- Task Broadcast Notifications"]
    end

    subgraph DataAndAsync["Persistence & Async Processing Layer"]
        Postgres[("🐘 PostgreSQL 16\n- User & Role Schemas (SQLAlchemy 2.0)\n- Async Task DB Records\n- Audit Trail Logs")]
        Redis[("⚑ Redis 7\n- Application Cache (Flask-Caching)\n- Celery Message Broker & Backend\n- Rate-Limiter Storage")]
        Worker["βš™οΈ Celery Worker\n- Async PDF Generation\n- Transactional Email Dispatch"]
        Beat["⏰ Celery Beat\n- Periodic Token Blocklist Cleanup"]
    end

    Browser -->|HTTP Requests| Nginx
    Mobile -->|REST API Calls| Nginx
    WSClient -->|WebSocket Handshake| Nginx

    Nginx -->|Proxy HTTP :5000| Flask
    Nginx -->|Upgrade /socket.io/| SocketIO

    Flask -->|SQLAlchemy 2.0 ORM| Postgres
    Flask -->|Cache & JWT Blacklist| Redis
    Flask -->|Dispatch .delay()| Redis

    Redis -->|Consume Tasks| Worker
    Beat -->|Schedule Jobs| Redis
    Worker -->|Update Status| Postgres
    Worker -->|Broadcast Progress| SocketIO
Loading

πŸš€ Quickstart: Running the Capstone Microservice

Option 1: Quickstart with Docker Compose (Recommended)

Spin up the entire stack (Flask API, PostgreSQL, Redis, Celery Worker, Celery Beat, and Nginx) with a single command:

# 1. Clone repository
git clone https://github.com/Shabber10/FLASK.git
cd FLASK

# 2. Configure environment
cp .env.example .env

# 3. Build and launch multi-container stack
docker-compose up -d --build

# 4. Check services status
docker-compose ps

The API is now live at http://localhost/ with Nginx reverse proxying to Gunicorn!


Option 2: Local Python Development

# 1. Create and activate virtual environment
python -m venv venv
# Windows:
venv\Scripts\activate
# Linux/macOS:
source venv/bin/activate

# 2. Install dependencies
pip install -r requirements.txt

# 3. Initialize database & seed test users
flask --app capstone.wsgi init-db
flask --app capstone.wsgi seed-db --count 10

# 4. Run application
python -m capstone.wsgi

πŸ§ͺ Automated Testing Suite (tests/)

Run the complete root-level automated test suite covering authentication, REST APIs, Celery workers, WebSockets, health probes, and model factories:

# Run all 27 automated tests
pytest -v

# Run with test coverage report
pytest -v --cov=capstone --cov-report=term-missing

πŸ“‘ Master Curriculum Index & Topic Syllabus

For a detailed topic-by-topic audit mapping every subtopic to file locations, see the dedicated FLASK_CURRICULUM_INDEX_AND_AUDIT.md and Modern Flask & SQLAlchemy 2.0 Guide.

 30-DAY ENTERPRISE FLASK MASTERCLASS
 β”‚
 β”œβ”€β”€ 🟒 Phase 1: Core Web & Flask Architecture (Days 01 – 05)
 β”œβ”€β”€ 🟑 Phase 2: Database Integration & ORMs (Days 06 – 10)
 β”œβ”€β”€ πŸ”΅ Phase 3: Modular Architecture & Design Patterns (Days 11 – 15)
 β”œβ”€β”€ 🟣 Phase 4: RESTful APIs, Microservices & JWT Auth (Days 16 – 20)
 β”œβ”€β”€ πŸ”΄ Phase 5: Async Processing, Caching & WebSockets (Days 21 – 25)
 β”œβ”€β”€ πŸ›‘οΈ Phase 6: Security, Observability & Performance (Days 26 – 28)
 └── πŸ§ͺ Phase 7: Testing, CI/CD & Production Capstone (Days 29 – 30)

πŸ“š Detailed Syllabus & Daily Subtopics

🟒 Phase 1: Core Web & Flask Architecture (Days 01 – 05)

Day Topic Name Subtopics Covered Link to Module
01 Introduction to Flask & Web Architecture Client-Server Model, HTTP Request/Response, WSGI Protocol, Virtual Environments, Minimal App, Debug Mode Day 01
02 Routing, Request & Response Objects Dynamic URLs, Converters (int, path, uuid), HTTP Methods, request.args, request.form, request.json, make_response, Custom Headers Day 02
03 Request Lifecycle & Context Locals Application Context (current_app, g), Request Context (request, session), Hooks (before_request, after_request, teardown_request) Day 03
04 Jinja2 Templating Engine Masterclass Jinja2 Delimiters ({{ }}, {% %}), if/else & for loops, Static files with url_for('static'), Template Inheritance (extends, block), Inclusion (include) Day 04
05 Web Forms, Validation & Flask-WTF CSRF Tokens, FlaskForm classes, Input Fields & Built-in Validators, Custom Field Validators, File Uploads with WTForms Day 05

🟑 Phase 2: Database Integration, ORMs & Migrations (Days 06 – 10)

Day Topic Name Subtopics Covered Link to Module
06 Database Fundamentals & Flask-SQLAlchemy ORM vs Raw SQL, db.Model, Column Types, Constraints, Table Creation, Database Sessions, CRUD Operations (add, commit, delete) Day 06
07 Advanced Querying, Filtering & Transactions Filter Operators (like, in_, between), Logical and_/or_, Ordering, Pagination (paginate), Aggregations (count, avg), Session Transactions & Rollback Day 07
08 Advanced Relationships, Cascades & Lazy Loading One-to-Many (db.ForeignKey), One-to-One, Many-to-Many Association Tables, Cascade Deletes (all, delete-orphan), Lazy Loading (select, joined, subquery, dynamic) Day 08
09 Database Migrations with Flask-Migrate Schema Evolution, Alembic Integration, Flask-Migrate CLI Workflow (init, migrate, upgrade, downgrade), Custom Migration Scripts Day 09
10 Multiple Databases, Binds & Raw SQL Execution SQLALCHEMY_BINDS, Model __bind_key__, Multi-Database Architecture, Executing Raw SQL (db.session.execute), Parameterized Queries & SQL Injection Prevention Day 10

πŸ”΅ Phase 3: Modular Architecture & Design Patterns (Days 11 – 15)

Day Topic Name Subtopics Covered Link to Module
11 Modular Development with Flask Blueprints Monolith vs Blueprints, Blueprint definition, Route Registration, url_prefix, Blueprint Template & Static Isolation, Subdomain Dispatching Day 11
12 Application Factory Pattern & Environment Config Application Factory (create_app), Circular Import Prevention, Config Classes (DevConfig, ProdConfig), Environment Variables (.env, .flaskenv) Day 12
13 Custom CLI Commands & Flask Extensions @app.cli.command, Click Command Arguments & Options, Authoring Custom Flask Extensions (init_app pattern) Day 13
14 Session Management & Cookie Security Signed Cookie Sessions (itsdangerous), Cookie Flags (HttpOnly, Secure, SameSite), Server-Side Redis Sessions (Flask-Session) Day 14
15 User Authentication & Password Hashing Cryptographic Hashing (Bcrypt, PBKDF2), Flask-Login (LoginManager, current_user, user_loader), Role-Based Access Control (RBAC) Decorators Day 15

🟣 Phase 4: RESTful APIs, Microservices & JWT Auth (Days 16 – 20)

Day Topic Name Subtopics Covered Link to Module
16 REST API Architecture & HTTP Status Codes REST Principles (Statelessness, Uniform Interface), HTTP Status Codes (2xx, 4xx, 5xx), Standardized JSON Response Envelopes Day 16
17 Data Serialization & Validation with Marshmallow Marshmallow Schemas, Dump vs Load, Field Types, Custom Validation (@validates), Nested Schemas, SQLAlchemyAutoSchema Day 17
18 RESTful Extensions (Flask-RESTful & Flask-Smorest) Class-Based Views (Resource), HTTP Verb Mapping, Flask-Smorest, Automatic Swagger UI OpenAPI Specs (@blp.response, @blp.arguments) Day 18
19 API Authentication with JWT (Flask-JWT-Extended) JWT Tokens (Header, Payload, Signature), @jwt_required(), Access vs Refresh Tokens, Redis Token Revocation & Blacklisting Day 19
20 CORS Handling & Rate Limiting Same-Origin Policy (SOP), Flask-CORS headers (Access-Control-Allow-Origin), Rate Limiting (Flask-Limiter), Redis Storage Backends Day 20

πŸ”΄ Phase 5: Asynchronous Operations, Caching & Real-Time Web (Days 21 – 25)

Day Topic Name Subtopics Covered Link to Module
21 Background Processing with Celery & Redis Async Queues, Celery Architecture (Producer, Broker, Worker, Result Backend), @celery.task, .delay(), Task State Tracking Day 21
22 Periodic Tasks & Scheduled Jobs with Celery Beat Celery Beat Scheduler, Cron Schedules (crontab), Task Retries with Backoff (autoretry_for), Dead Letter Error Callbacks Day 22
23 Application Caching Strategies with Flask-Caching In-Memory vs Redis Caching, Flask-Caching, View Caching (@cache.cached), Memoization (@cache.memoize), Cache Invalidation Triggers Day 23
24 Real-Time WebSockets with Flask-SocketIO HTTP Polling vs Full-Duplex WebSockets, Flask-SocketIO Event Handlers (@socketio.on, emit), Rooms & Namespaces, Redis Pub/Sub Broker Day 24
25 Asynchronous Flask (Async Routes & Quart) Async Views (async def), WSGI vs ASGI Limitations, Quart Framework, High-Concurrency Benchmarks (Flask vs Quart vs FastAPI) Day 25

πŸ›‘οΈ Phase 6: Enterprise Security, Observability & Performance Tuning (Days 26 – 28)

Day Topic Name Subtopics Covered Link to Module
26 Enterprise Flask Security Hardening OWASP Top 10, Security Headers (Flask-Talisman, CSP, HSTS), Dynamic CSP Nonces, HTML Sanitization (Bleach), Security Audits (bandit, pip-audit) Day 26
27 Error Handling, Logging & Observability Python Logging Levels, Structured JSON Logging (dictConfig), Request Correlation IDs (X-Request-ID), Centralized Error Handlers (@app.errorhandler) Day 27
28 Flask Performance Tuning & Database Optimization N+1 Query Problem, Eager Loading (joinedload, selectinload), Database Connection Pool Tuning, Gzip Response Compression (Flask-Compress), CPU Profiling (ProfilerMiddleware) Day 28

πŸ§ͺ Phase 7: Testing, CI/CD & Capstone Production Project (Days 29 – 30)

Day Topic Name Subtopics Covered Link to Module
29 Automated Testing Masterclass with Pytest Testing Pyramid, Pytest Fixtures (conftest.py), Route Testing (app.test_client()), Database Mocking (pytest-mock), Coverage (pytest-cov), GitHub Actions CI Day 29
30 Production Capstone & Enterprise Deployment 12-Factor App Rules, Production Stack (Nginx + Gunicorn + Flask), Docker Multi-Stage Builds, docker-compose.yml, Kubernetes Probes (/healthz, /ready), Capstone Microservice Day 30

πŸ›  Tech Stack & Tools

  • Core Framework: Flask 3.x, Werkzeug, Jinja2
  • ORMs & Database: Flask-SQLAlchemy, SQLAlchemy 2.0+, Flask-Migrate (Alembic), SQLite, PostgreSQL
  • Security & Auth: Flask-WTF, WTForms, Flask-Login, Flask-JWT-Extended, Flask-Talisman, Flask-Limiter, Passlib, Bcrypt
  • API Tools: Flask-RESTful, Marshmallow, Flask-CORS, Flask-Smorest (OpenAPI/Swagger)
  • Async & Realtime: Celery, Redis, Flask-SocketIO, Gevent / Eventlet
  • Testing & Deployment: Pytest, Pytest-Flask, Pytest-Cov, Factory-Boy, Gunicorn, Nginx, Docker, Docker Compose, GitHub Actions

πŸ“„ License

This repository is released under the MIT License.

About

A collection of Flask notes, concepts, examples, and practical implementations created while learning Flask and Python web development. This repository covers Flask fundamentals, routing, HTTP methods, templates, request handling, forms, APIs, database integration, and other essential concepts for building web applications with Flask.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages