A FastAPI-based service that lets users upload, store, and download CSV files.
This project is built with:
- FastAPI – for the web API
- uv – for Python dependency and environment management
- Alembic – for database migrations
- Taskfile – to simplify common commands (like setup, running, and testing)
‼️ You don’t need to worry about installing or configuring those manually as Taskfile takes care of everything for you 👉 Follow the steps in 🚀 Getting Started
- ✅ 1. Install Task (if you haven’t already). Installation guide → https://taskfile.dev/installation
- ✅ 2. Run setup to install all dependencies and prepares database:
task setup- ✅ Once the project is initialized, you can run the app with:
task devThis repository uses pre-commit to run CI-like checks locally before pushing code. The checks mirror the GitHub Actions workflow and help catch issues early.
To install pre-commit hooks (one-time setup):
# Make sure project dependencies installed:
uv sync --locked --all-extras --dev
# Install pre-commit:
uv run pre-commit install --hook-type pre-pushTo manually run the pre-push (without pushing):
uv run pre-commit run --hook-stage pre-push --all-filesTests are written with pytest and can be run with:
task testFull interactive API docs are available at:
- http://localhost:8000/docs – Swagger UI
- http://localhost:8000/redoc – ReDoc
A helper script is included to analyze performance telemetry logs saved by the app. By default, the script reads all .jsonl log files in the logs/ directory and compute request count and average processing time per endpoint. Run the script directly from the project root:
uv run scripts/log_telemetry_stats.py