2025-06-11 17:21:30 +00:00

3.2 KiB

Task Manager API

A FastAPI-based Task Manager API with SQLite database and JWT authentication.

Features

  • User management (register, login, update profile)
  • Task management (create, read, update, delete)
  • Task assignment to other users
  • Task filtering by status
  • JWT authentication
  • Role-based access control (regular users and superusers)

Tech Stack

  • Framework: FastAPI
  • Database: SQLite with SQLAlchemy ORM
  • Migrations: Alembic
  • Authentication: JWT tokens (via python-jose)
  • Password Hashing: Bcrypt
  • Validation: Pydantic

Project Structure

├── app/
│   ├── api/
│   │   └── v1/
│   │       ├── endpoints/
│   │       │   ├── auth.py
│   │       │   ├── tasks.py
│   │       │   └── users.py
│   │       └── api.py
│   ├── core/
│   │   ├── auth.py
│   │   └── config.py
│   ├── crud/
│   │   ├── task.py
│   │   └── user.py
│   ├── db/
│   │   ├── base_class.py
│   │   ├── base.py
│   │   └── session.py
│   ├── models/
│   │   ├── task.py
│   │   └── user.py
│   ├── schemas/
│   │   ├── task.py
│   │   ├── token.py
│   │   └── user.py
│   └── storage/
│       └── db/
├── migrations/
│   └── versions/
├── alembic.ini
├── main.py
├── README.md
└── requirements.txt

Environment Variables

This application uses the following environment variables:

Variable Description Default
SECRET_KEY JWT secret key supersecretkey
ACCESS_TOKEN_EXPIRE_MINUTES JWT token expiration time in minutes 60

Getting Started

Prerequisites

  • Python 3.8 or higher

Installation

  1. Clone the repository

  2. Install dependencies

    pip install -r requirements.txt
    
  3. Run the application

    uvicorn main:app --reload
    
  4. Access the API documentation

Database Migrations

Apply migrations to create the database schema:

alembic upgrade head

API Endpoints

Authentication

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

Users

  • GET /api/v1/users/me - Get current user
  • PUT /api/v1/users/me - Update current user
  • GET /api/v1/users/{user_id} - Get user by ID
  • GET /api/v1/users/ - List all users (superuser only)
  • POST /api/v1/users/ - Create a new user (superuser only)
  • PUT /api/v1/users/{user_id} - Update a user (superuser only)

Tasks

  • GET /api/v1/tasks/ - List tasks (with optional status filter)
  • POST /api/v1/tasks/ - Create a new task
  • GET /api/v1/tasks/{task_id} - Get a task by ID
  • PUT /api/v1/tasks/{task_id} - Update a task
  • DELETE /api/v1/tasks/{task_id} - Delete a task
  • POST /api/v1/tasks/{task_id}/assign/{user_id} - Assign a task to a user

Health Check

  • GET /health - Check API health

License

This project is licensed under the MIT License.