Automated Action d4b0ceed9c Implement Task Manager API with FastAPI and SQLite
- Setup project structure and FastAPI application
- Configure SQLite database with SQLAlchemy ORM
- Setup Alembic for database migrations
- Implement user authentication with JWT
- Create task models and CRUD operations
- Implement task assignment functionality
- Add detailed API documentation
- Create comprehensive README with usage instructions
- Lint code with Ruff
2025-06-08 18:02:43 +00:00

167 lines
5.2 KiB
Markdown

# 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:
```bash
git clone <repository-url>
cd taskmanagerapi
```
2. Install dependencies:
```bash
pip install -r requirements.txt
```
3. Set environment variables:
```bash
# 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:
```bash
alembic upgrade head
```
5. Start the application:
```bash
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
```
6. Access the API documentation:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
### 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.