2.1 KiB
2.1 KiB
Micro-API
Lightweight FastAPI micro-service foundation. Docker-ready, zero-cost deployment.
Stack
- Python 3.12 — slim Docker image
- FastAPI — async web framework
- Uvicorn — ASGI server
- SQLite — local database (swap to Postgres via
DATABASE_URL) - Docker + Docker Compose — containerized deployment
Quick Start
Local dev
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt -r requirements-dev.txt
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
Open http://localhost:8000/api/health
Docker
docker compose up --build
Tests
pytest -v
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | / |
Service info |
| GET | /api/health |
Health check |
Environment
Copy .env.example to .env and adjust:
| Variable | Default | Description |
|---|---|---|
DATABASE_URL |
sqlite:///data/app.db |
Database connection |
DEBUG |
false |
Enable debug mode |
API_PORT |
8000 |
Host port binding |
Deployment
See ARCHITECTURE.md for the full deployment plan.
# On the VPS
git clone <repo-url> /opt/micro-api
cd /opt/micro-api
docker compose up -d --build
Project Structure
micro-api/
├── app/
│ ├── __init__.py
│ ├── main.py # FastAPI app entry point
│ ├── routes.py # API routes
│ ├── models.py # Pydantic schemas
│ ├── database.py # SQLite utilities
│ └── config.py # App settings
├── tests/
│ ├── __init__.py
│ └── test_main.py # API tests
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── requirements-dev.txt
├── .env.example
├── .gitignore
├── README.md
└── ARCHITECTURE.md