← All drillsBuild a Budget Tracker App
What you'll be able to do- ✓Use Python's core datatypes, control flow, and data structures to build working, real logic
- ✓Design a class hierarchy with real encapsulation, inheritance, abstraction, and polymorphism
- ✓Structure a growing script into a real package of modules
- ✓Raise and handle custom exceptions that carry real meaning, not just prevent crashes
- ✓Persist application state to a file and recover gracefully from a missing or corrupted one
- ✓Build a working Streamlit UI and understand why a rerun-based framework needs session_state to hold onto anything
- ✓Run a slow operation on a background thread without freezing the interface, and without the thread ever touching the UI
- ✓Handle exceptions correctly in a Streamlit app's main script and inside a background thread — two genuinely different mechanisms, not one
Build a real, deployable application from first principles in Python — not four disconnected topics, but one tool that gets more capable, one lesson at a time, that you can actually keep using and share a link to.
⌁ Every real budget app — Mint, YNAB, GnuCash among them — is built from exactly this stack: a class model for the domain, persistence, a UI, and background work that doesn't freeze the interface. Streamlit itself (owned by Snowflake) is a widely-used real-world way teams build and ship exactly this kind of tool today.
Start this internshipCreate an account to unlock the 11 sections, the workbench, and askThili.
BeginSections
1. Build a Budget Tracker App
🔒 locked2. Lesson 1 - From Script to Structure
🔒 locked3. Lesson 2 - Encapsulation
🔒 locked4. Lesson 3 - Inheritance and Abstraction
🔒 locked5. Lesson 4 - Polymorphism, and a Package Taking Shape
🔒 locked6. Lesson 5 - Exceptions That Mean Something
🔒 locked7. Lesson 6 - Persistence
🔒 locked8. Lesson 7 - A Real Interface
🔒 locked9. Lesson 8 - Multithreading, the Way Streamlit Needs It
🔒 locked10. Lesson 9 - Exceptions in a GUI and in a Thread
🔒 locked11. Lesson 10 - Ship It
🔒 lockedDig deeper
🔗Object-Oriented Analysis and Design with Applications (Booch, 1991, Addison-Wesley) — landmark reference for the OOP framing
book🔗PEP 3119 — Introducing Abstract Base Classes
docs🔗Python threading — official documentation
docs🔗Streamlit — Session State documentation
docs🔗Streamlit — Multithreading (read alongside lesson 8: the course shows why a thread should not write to session_state)
docs🔗thilibudget — the reference implementation you build in this course
code