🎓 Capstone: Ship a Real Python Project

ক্যাপস্টোন — একটি বাস্তব Python প্রোজেক্ট তৈরি ও deploy করুন

10–20 hours Advanced 4 tracks · 1 ship Final project

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)

Track A — Web App
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-ভিত্তিক ওয়েব অ্যাপ।
Track B — Data Report
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-ভিত্তিক ডেটা রিপোর্ট।
Track C — ML Model + Demo
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।
Track D — Async Scraper + Dashboard
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.md with: what it is, screenshots/GIFs, install steps, usage, limitations.
  • A pinned requirements.txt or pyproject.toml.
  • At least 5 real tests (pytest) — not placeholders.
  • Type hints on all public functions; mypy passes at default strictness.
  • Code passes ruff and black with 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

layout.py
# 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

DimensionExcellent (A)Acceptable (C)
CorrectnessHandles edge cases; no known bugsHappy path works
Code qualityPEP 8, typed, small functionsRuns, mostly styled
TestsMeaningful coverage of core logicA few assertions
DocsREADME + docstrings + screenshotsBare README
DeploymentPublic URL or reproducible notebookLocal-only
CraftThoughtful names, UX, loggingWorks, 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 (শব্দভাণ্ডার)

TermMeaningবাংলায়
CapstoneFinal, cumulative project.চূড়ান্ত ও সামগ্রিক প্রোজেক্ট।
CIContinuous Integration — auto-run tests on push.push হলেই অটোমেটিক test চালানো।
ReproducibleAnyone can run it and get the same result.যে কেউ চালালেই একই ফল আসবে।
MVPMinimum Viable Product.Minimum Viable Product — সবচেয়ে ছোট কার্যকর সংস্করণ।
PortfolioPublic projects that show your skill.দক্ষতা প্রমাণকারী পাবলিক প্রোজেক্ট সংকলন।

8. Your Capstone Brief

  1. 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.

৪০টি module। Hello, Bangladesh! থেকে production software — বাংলা-প্রথম, কঠোর একটি পথ। এখন আপনার কাছে আছে শব্দভাণ্ডার, প্যাটার্ন ও টুল — যেকোনো ডোমেইনে (backend, data, ML, scripting, research) বাস্তব Python লেখার জন্য। ship করা চালিয়ে যান, অন্যদের কোড পড়ুন, open source-এ অবদান রাখুন।

Next step: push your capstone to GitHub, share the link on LinkedIn, and tag @abcltech. We will feature the best projects in our newsletter.

🚀 ABCL TECH — Anybody Can Learn Technology।