Phase 7: Capstone · ~60 minutes · Docker · Render · deployment
Ship It
This is the professional-practice counterpart to Course 01's capstone tool: not just working code, but working code anyone else could actually pick up — deployed, documented, and debuggable by someone who wasn't there when it was built.
Hiring signal: Ships something a stranger could actually run, debug, and understand without asking the original author anything
What you will learn
- Containerize a real service using Phase 02's Dockerfile discipline
- Deploy it to a real, publicly reachable URL using Phase 06's deployment practice
- Write documentation a stranger could actually use: setup instructions and a real incident-response note
- Add a stretch feature (structured logging or a health check) and explain what monitoring gap it closes
Introduction
Type: Project Languages: Docker, deployment, documentation Prerequisites: Lesson 02 (Build It) Time: ~60 minutes
Objective
Learning objectives
- Containerize a real service using Phase 02's Dockerfile discipline
- Deploy it to a real, publicly reachable URL using Phase 06's deployment practice
- Write documentation a stranger could actually use: setup instructions and a real incident-response note
- Add a stretch feature (structured logging or a health check) and explain what monitoring gap it closes
What you're building
Your capstone service, fully shipped:
- A correct, working
Dockerfile, built and run locally at least once to confirm it works before deploying - Deployed to a real platform with a real, confirmed-working public URL — every endpoint exercised against the real deployment, not just locally
- A
README.md with real run instructions, required config, the deployed URL, and a specific incident-response note - The stretch challenge (structured logging or a real health check), with a paragraph explaining the monitoring gap it closes
- A final git history that's genuinely clean — meaningful commit messages (Phase 01), no committed secrets (Phase 03)
A capstone's README says only "Run python main.py." The service actually requires DATABASE_PATH to be set, and fails with an unhelpful error if it isn't. What's the most accurate assessment?
This is exactly this lesson's README A vs. B distinction, applied to a real omission. An "unhelpful error" is explicitly described — meaning a stranger following the one documented instruction will hit a real failure with no documented path forward, needing to read source code or guess to discover DATABASE_PATH is required at all. This is precisely the real cost incomplete documentation imposes — not a style preference, a genuine, measurable amount of someone else's time and frustration, exactly what this lesson's incident-response note and complete setup instructions exist to prevent.
Unlock the full lesson
You've read the first 2 sections. The rest of this lesson covers The Problem, Check Yourself, Key Terms & Next — plus a hands-on lab, quiz, and project artifact.
Create a free account to unlock Phase 0 and Phase 1 of every course — no credit card.
Browse all courses · View pricing · DeVenture Academy