app/ — application package
FastAPI application code for the Asset Extractor API. Monolith-modular
layout: the HTTP layer (routers/) is kept separate from business logic
(services/), with shared Pydantic models in schemas.py and central
settings in config.py.
Files
| File | Purpose |
|---|---|
main.py |
Assembles the FastAPI app and registers the assets router. |
config.py |
Central settings (fetch timeouts, size caps, SSRF block-list). |
schemas.py |
Pydantic request/response models. |
routers/ |
HTTP layer: assets.py (POST /assets). |
services/ |
Business logic: fetcher, resolver, asset_service, and extractors/. |
Adding a new endpoint
- Add request/response models to
schemas.py. - Create a router under
routers/(HTTP + error mapping only). - Put the real logic in a
services/module. - Register the router in
main.py.
Keep routers thin and services testable — that keeps the monolith modular and easy to grow.