🎓 Capstone: Ship a Real Python Project
ক্যাপস্টোন — একটি বাস্তব Python প্রোজেক্ট তৈরি ও deploy করুন
1. Congratulations — You Made It
You started this course writing print("Hello, Bangladesh!"). Forty modules later, you know Python's
data model, OOP, functional style, async, the standard library, testing, data science, web backends, scraping,
and ML. Now it is time to combine everything into a single end-to-end project you can show the world.
print("Hello, Bangladesh!") দিয়ে শুরু করেছিলেন। ৪০টি module পরে আপনি Python-এর data model, OOP, functional style, async, standard library, testing, data science, web backend, scraping ও ML শিখেছেন। এবার সব একত্র করে একটি end-to-end project তৈরি করে বিশ্বকে দেখানোর সময়।
2. Choose Your Track (Pick ONE)
A FastAPI or Flask app backed by a real DB: task manager, URL shortener, mini blog, bKash-style wallet demo. Deploy with Docker to Fly.io/Railway.
Bangla: বাস্তব DB-ভিত্তিক ওয়েব অ্যাপ।
Take a public Bangladesh dataset (WorldBank, BBS, traffic data) and ship a Jupyter notebook + PDF report with cleaning, EDA, at least five charts, and a written narrative.
Bangla: বাস্তব dataset-ভিত্তিক ডেটা রিপোর্ট।
Train a scikit-learn model on a real dataset (loan default, customer churn, product review sentiment) and wrap it in a small FastAPI
/predict endpoint.Bangla: scikit-learn model + FastAPI demo।
Scrape a public data source (news headlines, cricket scores, job postings) with httpx async, store to SQLite, render a live dashboard with FastAPI or Streamlit.
Bangla: Async scraper + dashboard।
3. Mandatory Deliverables (All Tracks)
- A GitHub repository with a clear commit history.
- A
README.mdwith: what it is, screenshots/GIFs, install steps, usage, limitations. - A pinned
requirements.txtorpyproject.toml. - At least 5 real tests (
pytest) — not placeholders. - Type hints on all public functions;
mypypasses at default strictness. - Code passes
ruffandblackwith no warnings. - A public demo URL (for Tracks A, C, D) or a rendered notebook (Track B).
- A 2-minute Loom video (or GIF) walking through the project.
4. Suggested Project Structure
# Example: a Track A URL shortener
print("""
urlsh/
├── urlsh/
│ ├── __init__.py
│ ├── app.py # FastAPI app + routes
│ ├── models.py # pydantic + SQLAlchemy
│ ├── db.py # engine, session
│ └── shortener.py # pure-Python hashing logic
├── tests/
│ ├── test_shortener.py
│ └── test_app.py
├── .github/workflows/
│ └── ci.yml # lint + test on push
├── Dockerfile
├── docker-compose.yml
├── pyproject.toml
├── README.md
└── LICENSE
""")
5. Rubric — How It Will Be Judged
| Dimension | Excellent (A) | Acceptable (C) |
|---|---|---|
| Correctness | Handles edge cases; no known bugs | Happy path works |
| Code quality | PEP 8, typed, small functions | Runs, mostly styled |
| Tests | Meaningful coverage of core logic | A few assertions |
| Docs | README + docstrings + screenshots | Bare README |
| Deployment | Public URL or reproducible notebook | Local-only |
| Craft | Thoughtful names, UX, logging | Works, rough edges |
6. Deployment in 10 Minutes
Using Fly.io as an example (Railway and Render are nearly identical):
# One-time setup curl -L https://fly.io/install.sh | sh fly auth login # In your project folder fly launch # detects Python, writes Dockerfile + fly.toml fly deploy # builds and ships # Logs and diagnostics fly logs # stream app logs fly status # health + regions
For a ML model (Track C), consider Hugging Face Spaces — free, simple, and designed for model demos with Gradio.
7. Vocabulary (শব্দভাণ্ডার)
| Term | Meaning | বাংলায় |
|---|---|---|
| Capstone | Final, cumulative project. | চূড়ান্ত ও সামগ্রিক প্রোজেক্ট। |
| CI | Continuous Integration — auto-run tests on push. | push হলেই অটোমেটিক test চালানো। |
| Reproducible | Anyone can run it and get the same result. | যে কেউ চালালেই একই ফল আসবে। |
| MVP | Minimum Viable Product. | Minimum Viable Product — সবচেয়ে ছোট কার্যকর সংস্করণ। |
| Portfolio | Public projects that show your skill. | দক্ষতা প্রমাণকারী পাবলিক প্রোজেক্ট সংকলন। |
8. Your Capstone Brief
-
Your only task for this module is to ship your chosen track. Write a one-page design document first: the problem, the user, the data, your chosen track, the API/UI sketch, the tech stack, and what is explicitly out of scope for this version.এই module-এর একমাত্র কাজ — আপনার বেছে নেওয়া track-টি ship করা। প্রথমে এক-পৃষ্ঠার design document লিখুন: সমস্যা, ব্যবহারকারী, ডেটা, চয়ন-করা track, API/UI sketch, tech stack এবং এই version-এ যা scope-এর বাইরে।
✨ Show a sample brief (উদাহরণ দেখুন)
Project: URLShort — tiny URL shortener Track: A (Web App) Problem ------- Users need short, shareable URLs with click analytics. Users ----- Small businesses posting on Facebook/WhatsApp; Content creators in Bangla/English. Tech Stack ---------- - FastAPI (async) - SQLite dev / PostgreSQL prod - SQLAlchemy ORM - pydantic for schemas - pytest + httpx for tests - Docker + Fly.io for deploy Endpoints (MVP) --------------- POST /shorten { url } -> { code, short_url } GET /{code} -> 302 redirect GET /api/stats/{code} -> { clicks, created_at } Out of scope (v1) ----------------- - User accounts / auth - Custom slugs - Team analytics dashboard Milestones ---------- Day 1: project scaffold + /shorten route Day 2: redirect + DB persistence Day 3: stats + tests + CI Day 4: Docker + deploy Day 5: polish README + record demo video
You Did It — Welcome, Pythonista 🎉
Forty modules. A rigorous, Bangla-first path from Hello, Bangladesh! to production software. You now have the vocabulary, the patterns, and the tools to write real Python for any domain — backend, data, ML, scripting, or research. Keep shipping, keep reading other people's code, keep contributing to open source.
🚀 ABCL TECH — Anybody Can Learn Technology।