
- Implement Todo model with SQLAlchemy - Create Pydantic schemas for request/response validation - Add complete CRUD API endpoints (/api/v1/todos) - Include proper error handling and HTTP status codes - Set up proper project structure with organized modules - All code linted and formatted with ruff
Todo App API
A simple Todo application API built with FastAPI and SQLite.
Features
- FastAPI web framework
- SQLite database with SQLAlchemy ORM
- Alembic database migrations
- CORS enabled for all origins
- Health check endpoint
- Interactive API documentation
Project Structure
todoapp-ns86xt/
├── main.py # FastAPI application entry point
├── requirements.txt # Python dependencies
├── alembic.ini # Alembic configuration
├── migrations/ # Database migration files
│ ├── env.py
│ ├── script.py.mako
│ └── versions/
├── app/ # Application modules
│ ├── db/ # Database configuration
│ │ ├── base.py # SQLAlchemy Base
│ │ └── session.py # Database session management
│ ├── models/ # SQLAlchemy models
│ └── api/ # API endpoints
└── storage/ # Application storage directory
└── db/ # SQLite database files
Installation
- Install dependencies:
pip install -r requirements.txt
Running the Application
Start the development server:
uvicorn main:app --reload --host 0.0.0.0 --port 8000
The application will be available at:
- API: http://localhost:8000
- Interactive API docs (Swagger): http://localhost:8000/docs
- Alternative API docs (ReDoc): http://localhost:8000/redoc
- OpenAPI JSON: http://localhost:8000/openapi.json
API Endpoints
GET /
- Root endpoint with application informationGET /health
- Health check endpointGET /docs
- Interactive API documentation (Swagger UI)GET /redoc
- Alternative API documentation (ReDoc)
Database
The application uses SQLite database stored at /app/storage/db/db.sqlite
. Database migrations are managed with Alembic.
Database Migrations
To run database migrations:
# Upgrade to latest migration
alembic upgrade head
# Check current migration status
alembic current
# Create a new migration (after modifying models)
alembic revision --autogenerate -m "Description of changes"
# Downgrade by one migration
alembic downgrade -1
The initial migration creates the todos
table with the following structure:
id
(Integer, Primary Key)title
(String, Required)description
(Text, Optional)completed
(Boolean, Default: False)created_at
(DateTime, Auto-generated)updated_at
(DateTime, Auto-updated)
Environment Variables
Currently, no environment variables are required for basic operation.
Development
The project uses Ruff for code linting and formatting. Make sure to run linting before committing changes.
Health Check
The /health
endpoint provides information about:
- Application status
- Database connectivity
- Service version
Description
Languages
Python
95%
Mako
5%