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
-
Clone the repository
-
Create a virtual environment and activate it
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Run database migrations
alembic upgrade head
-
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 userPOST /auth/login
- Login and get access token
Users
GET /users/me
- Get current user informationPUT /users/me
- Update current user information
Tasks
GET /tasks
- List all tasks (with optional filtering and sorting)POST /tasks
- Create a new taskGET /tasks/{task_id}
- Get a specific taskPUT /tasks/{task_id}
- Update a specific taskDELETE /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
Languages
Python
98.3%
Mako
1.7%