
Features: - User authentication with JWT tokens - Task and project CRUD operations - Task filtering and organization generated with BackendIM... (backend.im)
155 lines
3.5 KiB
Markdown
155 lines
3.5 KiB
Markdown
# Task Management System
|
|
|
|
A RESTful API for managing tasks and projects, built with FastAPI and SQLite.
|
|
|
|
## Features
|
|
|
|
- User authentication with JWT tokens
|
|
- CRUD operations for tasks and projects
|
|
- Task prioritization and status tracking
|
|
- Project organization for tasks
|
|
- Filter tasks by status, priority, and project
|
|
|
|
## API Endpoints
|
|
|
|
- `GET /health` - Health check endpoint
|
|
- `POST /token` - Login and get access token
|
|
- `POST /users/` - Register a new user
|
|
- `GET /users/me` - Get current user info
|
|
- `GET /tasks/` - List all tasks (with filters)
|
|
- `POST /tasks/` - Create a new task
|
|
- `GET /tasks/{task_id}` - Get a specific task
|
|
- `PUT /tasks/{task_id}` - Update a task
|
|
- `DELETE /tasks/{task_id}` - Delete a task
|
|
- `GET /projects/` - List all projects
|
|
- `POST /projects/` - Create a new project
|
|
- `GET /projects/{project_id}` - Get a specific project
|
|
- `PUT /projects/{project_id}` - Update a project
|
|
- `DELETE /projects/{project_id}` - Delete a project
|
|
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
|
|
- Python 3.8 or higher
|
|
|
|
### Installation
|
|
|
|
1. Clone the repository:
|
|
```
|
|
git clone https://github.com/yourusername/task-management-system.git
|
|
cd task-management-system
|
|
```
|
|
|
|
2. Install dependencies:
|
|
```
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
3. Run database migrations:
|
|
```
|
|
alembic upgrade head
|
|
```
|
|
|
|
4. Start the application:
|
|
```
|
|
uvicorn main:app --reload
|
|
```
|
|
|
|
5. Access the API documentation at `http://localhost:8000/docs`
|
|
|
|
## Usage
|
|
|
|
### Authentication
|
|
|
|
1. Create a new user:
|
|
```
|
|
curl -X 'POST' \
|
|
'http://localhost:8000/users/' \
|
|
-H 'Content-Type: application/json' \
|
|
-d '{
|
|
"username": "testuser",
|
|
"email": "user@example.com",
|
|
"password": "password123"
|
|
}'
|
|
```
|
|
|
|
2. Get an access token:
|
|
```
|
|
curl -X 'POST' \
|
|
'http://localhost:8000/token' \
|
|
-H 'Content-Type: application/x-www-form-urlencoded' \
|
|
-d 'username=testuser&password=password123'
|
|
```
|
|
|
|
3. Use the token for authenticated requests:
|
|
```
|
|
curl -X 'GET' \
|
|
'http://localhost:8000/users/me' \
|
|
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
|
|
```
|
|
|
|
### Task Management
|
|
|
|
1. Create a new task:
|
|
```
|
|
curl -X 'POST' \
|
|
'http://localhost:8000/tasks/' \
|
|
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
|
|
-H 'Content-Type: application/json' \
|
|
-d '{
|
|
"title": "Task Title",
|
|
"description": "Task Description",
|
|
"priority": "HIGH",
|
|
"status": "TODO"
|
|
}'
|
|
```
|
|
|
|
2. Get all tasks:
|
|
```
|
|
curl -X 'GET' \
|
|
'http://localhost:8000/tasks/' \
|
|
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
|
|
```
|
|
|
|
3. Filter tasks by status:
|
|
```
|
|
curl -X 'GET' \
|
|
'http://localhost:8000/tasks/?status=TODO' \
|
|
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
|
|
```
|
|
|
|
### Project Management
|
|
|
|
1. Create a new project:
|
|
```
|
|
curl -X 'POST' \
|
|
'http://localhost:8000/projects/' \
|
|
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
|
|
-H 'Content-Type: application/json' \
|
|
-d '{
|
|
"name": "Project Name",
|
|
"description": "Project Description"
|
|
}'
|
|
```
|
|
|
|
2. Create a task in a project:
|
|
```
|
|
curl -X 'POST' \
|
|
'http://localhost:8000/tasks/' \
|
|
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
|
|
-H 'Content-Type: application/json' \
|
|
-d '{
|
|
"title": "Task Title",
|
|
"description": "Task Description",
|
|
"priority": "HIGH",
|
|
"status": "TODO",
|
|
"project_id": 1
|
|
}'
|
|
```
|
|
|
|
## API Documentation
|
|
|
|
- Swagger UI: `http://localhost:8000/docs`
|
|
- ReDoc: `http://localhost:8000/redoc`
|