Task Management Tool

A RESTful API for managing tasks, built with FastAPI and SQLite.

Features

  • User registration and authentication with JWT
  • CRUD operations for tasks
  • Task filtering, sorting, and pagination
  • Health check endpoint

Requirements

  • Python 3.8+
  • Dependencies listed in requirements.txt

Environment Variables

The application uses the following environment variables:

  • SECRET_KEY - Secret key for JWT token generation (default: a development key, must be changed in production)
  • ACCESS_TOKEN_EXPIRE_MINUTES - Expiration time for JWT tokens in minutes (default: 30)

Installation and Setup

  1. Clone the repository

  2. Create a virtual environment and activate it

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. Install dependencies

    pip install -r requirements.txt
    
  4. Run database migrations

    alembic upgrade head
    
  5. Start the server

    uvicorn main:app --host 0.0.0.0 --port 8000 --reload
    

API Documentation

The API documentation is available at /docs or /redoc when the server is running.

Base URL

http://localhost:8000/api/v1

Authentication

The API uses JWT for authentication. To obtain a token, send a POST request to /api/v1/auth/login with your email and password.

curl -X 'POST' \
  'http://localhost:8000/api/v1/auth/login' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'username=your@email.com&password=yourpassword'

Endpoints

Authentication

  • POST /auth/register - Register a new user
  • POST /auth/login - Login and get access token

Users

  • GET /users/me - Get current user information
  • PUT /users/me - Update current user information

Tasks

  • GET /tasks - List all tasks (with optional filtering and sorting)
  • POST /tasks - Create a new task
  • GET /tasks/{task_id} - Get a specific task
  • PUT /tasks/{task_id} - Update a specific task
  • DELETE /tasks/{task_id} - Delete a specific task

Filtering and Sorting Tasks

Tasks can be filtered and sorted using query parameters:

  • is_completed - Filter by completion status (true/false)
  • priority - Filter by priority (1=Low, 2=Medium, 3=High)
  • sort_by - Sort by field (created_at, due_date, priority, title)
  • sort_order - Sort order (asc/desc)
  • skip - Number of items to skip (for pagination)
  • limit - Maximum number of items to return (for pagination)

Example:

GET /tasks?is_completed=false&priority=3&sort_by=due_date&sort_order=asc&skip=0&limit=10

Health Check

The API provides a health check endpoint at /health.

Development

Running Tests

pytest

Database Migrations

Create a new migration:

alembic revision --autogenerate -m "Description of changes"

Apply migrations:

alembic upgrade head

Revert migrations:

alembic downgrade -1
Description
Project: Task Management Tool
Readme 48 KiB
Languages
Python 98.3%
Mako 1.7%