Automated Action 11dd11a6ff Fix database migration import path error
- Add project root to Python path in migrations/env.py
- Ensure all models are properly imported in base_models.py
- Fix import statements for proper module resolution
2025-06-08 18:16:20 +00:00
2025-06-08 17:52:29 +00:00

Task Manager API

A comprehensive task management API built with FastAPI and SQLite. This API provides a full-featured backend for task management applications, including user authentication, task CRUD operations, and task assignment functionality.

Features

  • User Management

    • User registration and authentication
    • JWT-based authentication
    • User profile management
  • Task Management

    • Create, read, update, and delete tasks
    • Task filtering and search
    • Task status tracking (todo, in_progress, completed, cancelled)
    • Task priority levels (low, medium, high, urgent)
  • Task Assignment

    • Assign tasks to multiple users
    • View tasks assigned to you
    • Task ownership and permission controls
  • API Documentation

    • Interactive API documentation with Swagger UI and ReDoc
    • Detailed endpoint descriptions

Technical Stack

  • Framework: FastAPI
  • Database: SQLite with SQLAlchemy ORM
  • Migration Tool: Alembic
  • Authentication: JWT with OAuth2
  • Password Hashing: Bcrypt

Project Structure

taskmanagerapi/
├── alembic.ini                 # Alembic configuration
├── main.py                     # Application entry point
├── migrations/                 # Database migrations
│   ├── env.py
│   ├── README
│   ├── script.py.mako
│   └── versions/               # Migration versions
│       └── 001_initial_tables.py
├── app/                        # Application package
│   ├── api/                    # API endpoints
│   │   └── v1/                 # API version 1
│   │       ├── api.py          # API router
│   │       └── endpoints/      # API endpoint modules
│   │           ├── auth.py
│   │           ├── health.py
│   │           ├── task_assignments.py
│   │           ├── tasks.py
│   │           └── users.py
│   ├── core/                   # Core modules
│   │   ├── config.py           # Application configuration
│   │   ├── deps.py             # Dependencies
│   │   ├── docs.py             # API documentation
│   │   └── security.py         # Security utilities
│   ├── db/                     # Database
│   │   ├── base.py             # Base models
│   │   ├── base_class.py       # Base class for models
│   │   ├── base_models.py      # Import all models
│   │   └── session.py          # Database session
│   ├── models/                 # SQLAlchemy models
│   │   ├── task.py
│   │   └── user.py
│   ├── schemas/                # Pydantic schemas
│   │   ├── task.py
│   │   ├── token.py
│   │   └── user.py
│   ├── services/               # Business logic
│   └── utils/                  # Utility functions
└── requirements.txt            # Project dependencies

Getting Started

Prerequisites

  • Python 3.8+
  • pip (Python package installer)

Installation

  1. Clone the repository:

    git clone <repository-url>
    cd taskmanagerapi
    
  2. Install dependencies:

    pip install -r requirements.txt
    
  3. Set environment variables:

    # For production use, set a secure secret key
    export SECRET_KEY="your-secure-secret-key"
    # Optional: Set the JWT token expiration time in minutes
    export ACCESS_TOKEN_EXPIRE_MINUTES=30
    
  4. Run database migrations:

    alembic upgrade head
    
  5. Start the application:

    uvicorn main:app --host 0.0.0.0 --port 8000 --reload
    
  6. Access the API documentation:

Environment Variables

Variable Description Default
SECRET_KEY JWT secret key "your-super-secret-key-for-development-only"
ACCESS_TOKEN_EXPIRE_MINUTES JWT token expiration in minutes 30

API Endpoints

Authentication

  • POST /api/v1/auth/login - Login and get access token

Users

  • POST /api/v1/users - Register a new user
  • GET /api/v1/users/me - Get current user info
  • PUT /api/v1/users/me - Update current user
  • GET /api/v1/users/{user_id} - Get user by ID (admin or self only)
  • PUT /api/v1/users/{user_id} - Update user by ID (admin only)

Tasks

  • GET /api/v1/tasks - List tasks (owned or assigned to current user)
  • POST /api/v1/tasks - Create a new task
  • GET /api/v1/tasks/{task_id} - Get task by ID
  • PUT /api/v1/tasks/{task_id} - Update task by ID
  • DELETE /api/v1/tasks/{task_id} - Delete task by ID (soft delete)

Task Assignments

  • GET /api/v1/tasks/{task_id}/assignees - Get task assignees
  • POST /api/v1/tasks/{task_id}/assignees/{user_id} - Assign user to task
  • DELETE /api/v1/tasks/{task_id}/assignees/{user_id} - Remove user from task

Health

  • GET /api/v1/health - API health check
  • GET /health - General health check

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Description
Project: Task Manager API
Readme 51 KiB
Languages
Python 98.7%
Mako 1.3%