# Task Management Tool A simple and efficient task management API built with FastAPI and SQLite. ## Features - **CRUD Operations**: Create, read, update, and delete tasks - **Task Status Management**: Track tasks as pending, in progress, or completed - **Priority Levels**: Set task priorities (low, medium, high) - **Filtering**: Filter tasks by status and priority - **Pagination**: Support for skip/limit pagination - **Health Check**: Built-in health monitoring endpoint - **Interactive Documentation**: Automatic API documentation with Swagger UI ## API Endpoints ### Base - `GET /` - Service information and documentation links - `GET /health` - Health check endpoint ### Tasks - `POST /api/v1/tasks/` - Create a new task - `GET /api/v1/tasks/` - List all tasks (with filtering and pagination) - `GET /api/v1/tasks/{task_id}` - Get a specific task - `PUT /api/v1/tasks/{task_id}` - Update a task - `DELETE /api/v1/tasks/{task_id}` - Delete a task ### Query Parameters for GET /api/v1/tasks/ - `skip`: Number of tasks to skip (default: 0) - `limit`: Number of tasks to return (default: 100, max: 1000) - `status`: Filter by task status (pending, in_progress, completed) - `priority`: Filter by task priority (low, medium, high) ## Installation 1. Install dependencies: ```bash pip install -r requirements.txt ``` 2. Run the application: ```bash uvicorn main:app --host 0.0.0.0 --port 8000 ``` The application will be available at: - API: http://localhost:8000 - Documentation: http://localhost:8000/docs - Alternative Documentation: http://localhost:8000/redoc - OpenAPI Schema: http://localhost:8000/openapi.json ## Database This application uses SQLite as the database backend. The database file is stored at `/app/storage/db/db.sqlite`. Database migrations are handled with Alembic. The initial migration creates the tasks table with the following schema: - `id`: Primary key (integer) - `title`: Task title (string, max 200 characters) - `description`: Optional task description (text) - `status`: Task status enum (pending, in_progress, completed) - `priority`: Task priority enum (low, medium, high) - `created_at`: Creation timestamp - `updated_at`: Last update timestamp ## Development The codebase follows these conventions: - Code formatting with Ruff - SQLAlchemy for database ORM - Pydantic for data validation - FastAPI for the web framework - CORS enabled for all origins ## Task Model ```json { "id": 1, "title": "Sample Task", "description": "This is a sample task description", "status": "pending", "priority": "medium", "created_at": "2024-01-01T12:00:00Z", "updated_at": "2024-01-01T12:00:00Z" } ```