# Task Manager API A comprehensive Task Manager API built with FastAPI, featuring user authentication, task management, and SQLite database integration. ## Features - User registration and authentication with JWT tokens - Task CRUD operations (Create, Read, Update, Delete) - Task filtering by status and priority - User profile management - SQLite database with SQLAlchemy ORM - Database migrations with Alembic - API documentation with Swagger UI - Health check endpoint - CORS enabled for all origins ## Project Structure ``` ├── main.py # FastAPI application entry point ├── requirements.txt # Python dependencies ├── alembic.ini # Alembic configuration ├── alembic/ # Database migrations ├── app/ │ ├── api/ # API route handlers │ │ ├── auth.py # Authentication endpoints │ │ ├── tasks.py # Task management endpoints │ │ └── users.py # User management endpoints │ ├── core/ # Core application logic │ │ ├── auth.py # Authentication dependencies │ │ ├── config.py # Application configuration │ │ └── security.py # Security utilities │ ├── db/ # Database configuration │ │ ├── base.py # SQLAlchemy base class │ │ └── session.py # Database session management │ ├── models/ # SQLAlchemy models │ │ ├── task.py # Task model │ │ └── user.py # User model │ ├── schemas/ # Pydantic schemas │ │ ├── task.py # Task schemas │ │ └── user.py # User schemas │ └── services/ # Business logic layer │ ├── task.py # Task service │ └── user.py # User service └── storage/ └── db/ # SQLite database storage ``` ## Installation 1. Install dependencies: ```bash pip install -r requirements.txt ``` 2. Run database migrations: ```bash alembic upgrade head ``` 3. Start the application: ```bash uvicorn main:app --reload ``` The API will be available at `http://localhost:8000` ## Environment Variables Set the following environment variables for production: - `SECRET_KEY`: Secret key for JWT token signing (default: "your-secret-key-here") Example: ```bash export SECRET_KEY="your-super-secret-key-here" ``` ## API Endpoints ### Authentication - `POST /auth/register` - Register a new user - `POST /auth/login` - Login and get access token ### Tasks - `GET /tasks/` - Get all tasks for authenticated user - `POST /tasks/` - Create a new task - `GET /tasks/{task_id}` - Get a specific task - `PUT /tasks/{task_id}` - Update a task - `DELETE /tasks/{task_id}` - Delete a task ### Users - `GET /users/me` - Get current user profile - `PUT /users/me` - Update current user profile ### System - `GET /` - API information - `GET /health` - Health check endpoint ## API Documentation - Swagger UI: `http://localhost:8000/docs` - ReDoc: `http://localhost:8000/redoc` - OpenAPI JSON: `http://localhost:8000/openapi.json` ## Task Management ### Task Status Options - `pending` - Task is pending - `in_progress` - Task is in progress - `completed` - Task is completed - `cancelled` - Task is cancelled ### Task Priority Options - `low` - Low priority - `medium` - Medium priority - `high` - High priority - `urgent` - Urgent priority ## Authentication The API uses JWT (JSON Web Tokens) for authentication. After registration or login, include the token in the Authorization header: ``` Authorization: Bearer ``` ## Database The application uses SQLite as the database with the following features: - Database file stored at `/app/storage/db/db.sqlite` - Automatic table creation on startup - Database migrations managed by Alembic - Relationships between users and tasks ## Development ### Running Tests To run tests (when available): ```bash pytest ``` ### Code Formatting The project uses Ruff for code formatting and linting: ```bash ruff check . ruff format . ``` ### Database Operations Create a new migration: ```bash alembic revision --autogenerate -m "description" ``` Apply migrations: ```bash alembic upgrade head ``` ## Health Check The application provides a health check endpoint at `/health` that returns: ```json { "status": "healthy", "service": "Task Manager API", "version": "1.0.0" } ``` ## License This project is generated by BackendIM, the AI-powered backend generation platform.