
- Create FastAPI application with CORS support - Add SQLAlchemy models for Todo with timestamps - Set up SQLite database with proper configuration - Create CRUD operations for todo management - Add REST API endpoints for all todo operations - Configure Alembic for database migrations - Add Pydantic schemas for request/response validation - Include health check and root info endpoints - Set up proper project structure following best practices - Add comprehensive README with usage instructions
58 lines
1.4 KiB
Markdown
58 lines
1.4 KiB
Markdown
# Todo App Backend
|
|
|
|
A simple todo application backend built with FastAPI and SQLite.
|
|
|
|
## Features
|
|
|
|
- Create, read, update, and delete todos
|
|
- RESTful API endpoints
|
|
- SQLite database with SQLAlchemy ORM
|
|
- Database migrations with Alembic
|
|
- Automatic API documentation with Swagger UI
|
|
- CORS support for cross-origin requests
|
|
|
|
## API Endpoints
|
|
|
|
- `GET /` - Root endpoint with API information
|
|
- `GET /health` - Health check endpoint
|
|
- `POST /todos/` - Create a new todo
|
|
- `GET /todos/` - Get all todos (with pagination)
|
|
- `GET /todos/{todo_id}` - Get a specific todo
|
|
- `PUT /todos/{todo_id}` - Update a todo
|
|
- `DELETE /todos/{todo_id}` - Delete a todo
|
|
|
|
## Installation
|
|
|
|
1. Install dependencies:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
2. The application will automatically create the database tables when started.
|
|
|
|
## Usage
|
|
|
|
Start the application:
|
|
```bash
|
|
uvicorn main:app --reload
|
|
```
|
|
|
|
The API will be available at:
|
|
- Main API: http://localhost:8000
|
|
- Documentation: http://localhost:8000/docs
|
|
- Alternative docs: http://localhost:8000/redoc
|
|
|
|
## Database
|
|
|
|
The application uses SQLite database stored at `/app/storage/db/db.sqlite`. The database schema is managed with Alembic migrations.
|
|
|
|
## Todo Schema
|
|
|
|
Each todo has the following fields:
|
|
- `id`: Unique identifier
|
|
- `title`: Todo title (required)
|
|
- `description`: Optional description
|
|
- `completed`: Boolean status (default: false)
|
|
- `created_at`: Creation timestamp
|
|
- `updated_at`: Last update timestamp
|