# Simple Todo App A simple Todo application backend built with FastAPI and SQLite. ## Features - CRUD operations for Todo items - SQLite database with SQLAlchemy ORM - Alembic for database migrations - Health check endpoint - OpenAPI documentation ## Prerequisites - Python 3.8+ - pip ## Installation 1. Clone the repository: ```bash git clone cd simpletodoapp-t3firn ``` 2. Install the dependencies: ```bash pip install -r requirements.txt ``` 3. Run database migrations: ```bash alembic upgrade head ``` ## Usage Start the application with: ```bash uvicorn main:app --reload ``` The API will be available at http://localhost:8000 ## API Documentation OpenAPI documentation is available at: - Swagger UI: http://localhost:8000/docs - ReDoc: http://localhost:8000/redoc ## API Endpoints | Endpoint | Method | Description | |----------|--------|-------------| | `/api/v1/todos` | GET | List all todos | | `/api/v1/todos/{id}` | GET | Get a specific todo by ID | | `/api/v1/todos` | POST | Create a new todo | | `/api/v1/todos/{id}` | PUT | Update an existing todo | | `/api/v1/todos/{id}` | DELETE | Delete a todo | | `/health` | GET | Health check endpoint | ## Todo Item Structure ```json { "id": 1, "title": "Task title", "description": "Task description", "completed": false, "created_at": "2023-12-01T12:00:00", "updated_at": "2023-12-01T12:00:00" } ``` ## Database Schema The application uses a SQLite database with the following schema: ### Todos Table | Column | Type | Constraints | |--------|------|-------------| | id | Integer | Primary Key, Auto Increment | | title | String | Not Null, Indexed | | description | String | Nullable | | completed | Boolean | Default: False | | created_at | DateTime | Not Null | | updated_at | DateTime | Not Null |