A small order-tracking API, built from the ground up. Merchants create orders via REST, query status, and receive webhook notifications when orders change state.
Built as a fundamentals project: raw SQL before ORMs, hand-rolled auth before Auth0, a VPS with nginx before managed cloud. Each phase forces one layer of the stack.
- Phase 1 (current): Data & SQL. Hand-designed Postgres schema, no ORM. See
phase1/. - Phase 2: REST API in FastAPI. API keys, then OAuth 2.0 client credentials with JWTs (hand-rolled locally as a learning exercise; a proper library for anything deployed). HMAC-signed webhooks with retries. Reproducible failure drills built alongside each feature.
- Phase 3: Deployed the manual way. Raw EC2, nginx reverse proxy, DNS, TLS via Let's Encrypt, plus deliberate break-and-debug drills.
- Phase 4: Deployed the production way. Core: Dockerize on the same EC2. Stretch: ECS Fargate + RDS + ALB, GitHub Actions CI/CD.
- Phase 5: The SE engagement layer. Architecture diagram, discovery dossier, exec and technical demos, proof-of-value criteria, security questionnaire, Stripe-style quickstart docs.
| File | What it is |
|---|---|
phase1/SETUP.pdf |
Local Postgres setup |
phase1/schema-worksheet.pdf |
Design questions worked before writing DDL |
phase1/schema.sql |
The schema, written by hand |
phase1/seed.py |
Seeds ~10k realistic orders with event histories |
phase1/drills.pdf |
Daily SQL practice log |
build-log.md |
Session-by-session notes |