FastAPI is one of the best Python web frameworks available today — fast, async-native, and backed by excellent tooling. But when you move beyond a single main.py file, you quickly realize that FastAPI gives you the engine , not the car . Structuring a production-ready application is entirely up to you.
Let's walk through what that looks like in practice.
Starting from Scratch
1. Project Layout
A typical "real" FastAPI project ends up looking something like this:
my_app/ ├── app/ │ ├── __init__.py │ ├── main.py │ ├── config.py │ ├── database.py │ ├── logger.py │ ├── dependencies.py │ ├── routers/ │ │ ├── __init__.py │ │ ├── users.py │ │ └── posts.py │ └── models/ │ ├── __init__.py │ ├── user.py │ └── post.py ├── tests/ ├── .env ├── .env.production ├── pyproject.toml └── README.md
Enter fullscreen mode
Exit fullscreen mode
Already a lot of scaffolding — and we haven't written a single route yet.
2. Loading Environment Variables
FastAPI has no built-in env loading.…