A web application for tracking your progress through the Learn to Cloud guide.
Note: This project is open source under the MIT License.
- 📚 All 7 phases of the Learn to Cloud curriculum
- ✅ Progress tracking with steps, questions, and hands-on projects
- 🔐 Authentication via GitHub OAuth
- 📊 Dashboard with progress visualization
- 🐙 GitHub integration for project submissions
| Layer | Technology |
|---|---|
| Backend | Python 3.13+, FastAPI, SQLAlchemy (async), PostgreSQL |
| Frontend | HTMX, Jinja2 templates, Alpine.js, Tailwind CSS v4 |
| Auth | GitHub OAuth (Authlib) |
| Infra | Azure Container Apps, Azure PostgreSQL, Terraform |
| CI/CD | GitHub Actions |
- Python 3.13+ with uv
- Node.js 20+ (for Tailwind CSS build)
- Docker (for PostgreSQL)
1. Start the database (Docker)
docker compose up -d db2. API setup
cd api
uv venv # Create virtual environment
uv sync # Install Python dependencies
cp .env.example .env # Create environment config (edit if needed)Run database migrations:
# macOS/Linux
.venv/bin/alembic upgrade head
# Windows
.venv\Scripts\alembic upgrade headStart the API:
# macOS/Linux
.venv/bin/python -m uvicorn main:app --reload --port 8000
# Windows
.venv\Scripts\python -m uvicorn main:app --reload --port 8000Or use VS Code's debugger with the "API: FastAPI (uvicorn)" launch configuration.
Notes:
- The API does not start Postgres for you. Run
docker compose up -d dbfirst. - Manage the database with
docker compose start db/docker compose stop db.
├── api/ # FastAPI backend (serves HTML + JSON API)
│ ├── main.py # App entry point
│ ├── models.py # SQLAlchemy models
│ ├── schemas.py # Pydantic schemas
│ ├── routes/ # API + page endpoints
│ ├── services/ # Business logic
│ ├── repositories/ # Database queries
│ ├── core/ # Config, auth, database
│ ├── templates/ # Jinja2 templates (HTMX)
│ ├── static/ # CSS, JS, images
│ └── tests/
├── content/ # Course content (YAML)
│ └── phases/ # Phase and topic definitions
├── infra/ # Terraform (Azure)
└── .github/
├── workflows/ # CI/CD
├── instructions/ # Copilot custom instructions
└── skills/ # Copilot agent skills
Push to main triggers automated deployment via GitHub Actions → Terraform → Azure Container Apps.
MIT License. See LICENSE.