Anatomy of a Scalable Python Project | Issue #73


Hi there,

When you start a new Python project, it often begins as a single file. Before you know it, that file turns into a tangle of routes, configs, and ad-hoc fixes. Scaling that into something a team can maintain is tough.

In my latest video, I show you the anatomy of a scalable Python project. We’ll cover folder structure, config management, logging, testing, and how to set up pyproject.toml, .python-version, Docker, and docker-compose for smooth local and production environments. I’ll also talk about dependency injection frameworks: when they make sense, and why for this example I stick with FastAPI’s built-in DI to keep things lean.

This is the blueprint I wish I had when I started building larger systems.

Enjoy the video and wish you a great weekend!

Cheers,

Arjan


Do you enjoy my content on YouTube and would you like to dive in deeper?

🚀 Check out my online courses

My courses have helped thousands of developers take the next step in their careers. Check out these courses to help grow your skills and become a senior developer:

👕 Clean code and clean clothes

The ArjanCodes merch store features T-shirts, hoodies, hats, and more for the clean-code-obsessed. Careful though: you'll look dangerously professional while reviewing PRs.

👉 Check out the store here and grab something before your stand-up call starts.

🔧 Need help with a complex codebase?

If your team is struggling with tech debt, unclear architecture, or cloud costs that keep creeping up, my team and I can help. We don’t just review, we get in and fix things. We’re only working with a few companies at a time to stay focused, so if it sounds like a fit:

Unsubscribe | Send by ArjanCodes

Wolvenplein 25, Utrecht, UT 3512 CK

The Friday Loop

Every Friday, you'll get a recap of the most important and exciting Python and coding news. The Friday Loop also keeps everyone posted on new ArjanCodes courses and any limited offers coming up.

Read more from The Friday Loop

Hi there, Most apps only store the final result: the current balance, the current inventory, the current status. But what if you could track every change that led to that result? That’s exactly what the event sourcing pattern allows you to do. Instead of overwriting state, you store a sequence of immutable events and derive the current state by replaying them. It’s like Git (kinda), but for your domain logic. In this week’s video, I show you how to implement event sourcing in Python from...

Hi there, If you’ve been learning Python for a while and still feel like you’re not improving, you’re not alone. Python feels easy at first. The syntax is clean, the barrier to entry is low, and you can build something useful in your first hour. But then… things get weird. You hit a wall. There’s object-oriented programming. Then functional programming. Then decorators, dunder methods, typing, Protocol, mypy, async… And somehow Python lets you write the same thing five different ways, and...

Hi there, You’ve probably heard developers say "That’s not very Pythonic…" But what is Pythonic code, really? Is it about using list comprehensions? Avoiding for-loops? Dressing up like Guido van Rossum? In this week’s video, I answer that question by taking a small, messy Python script and refactoring it step-by-step using the principles behind idiomatic Python. Along the way, I’ll show you what it means to think like a Python developer, using things like: Functions instead of unnecessary...