
- Added TodoBoard model and BoardStatus enum
- Created migration for todo boards
- Added TodoBoard API endpoints
- Added board-related features to the README
🤖 Generated with BackendIM... (backend.im)
125 lines
4.0 KiB
Markdown
125 lines
4.0 KiB
Markdown
# Enhanced Todo API Application
|
|
|
|
This is an improved Todo API application built with FastAPI and SQLite, featuring advanced task management capabilities.
|
|
|
|
## Features
|
|
|
|
- Create, Read, Update, and Delete todos
|
|
- Todo prioritization (low, medium, high)
|
|
- Due dates for deadline tracking
|
|
- Tag/category support for organizing todos
|
|
- Advanced search and filtering capabilities
|
|
- Upcoming tasks view for planning
|
|
- Health endpoint for monitoring application status
|
|
- SQLite database for data persistence
|
|
- Alembic for database migrations
|
|
- Subtasks support for breaking down complex todos
|
|
- Task reminder functionality
|
|
- **NEW** Kanban-style board functionality
|
|
- **NEW** Task status tracking (todo, in progress, review, done)
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
simpletodoapplication/
|
|
├── app/
|
|
│ ├── __init__.py
|
|
│ ├── database.py
|
|
│ ├── models.py
|
|
│ └── schemas.py
|
|
├── migrations/
|
|
│ ├── versions/
|
|
│ │ ├── 001_create_todos_table.py
|
|
│ │ ├── 002_add_priority_and_due_date.py
|
|
│ │ ├── 003_add_tags_table_and_associations.py
|
|
│ │ ├── 004_add_subtasks_and_reminders.py
|
|
│ │ └── 005_add_todo_boards.py
|
|
│ ├── env.py
|
|
│ ├── README
|
|
│ └── script.py.mako
|
|
├── alembic.ini
|
|
├── main.py
|
|
└── requirements.txt
|
|
```
|
|
|
|
## API Endpoints
|
|
|
|
### Health
|
|
- `GET /health` - Check API health
|
|
|
|
### Todo Management
|
|
- `GET /todos` - Get all todos with optional filtering
|
|
- `POST /todos` - Create a new todo
|
|
- `POST /todos/with-tags` - Create a new todo with tags (creates tags if they don't exist)
|
|
- `GET /todos/{todo_id}` - Get a specific todo
|
|
- `PUT /todos/{todo_id}` - Update a todo
|
|
- `DELETE /todos/{todo_id}` - Delete a todo
|
|
|
|
### Search & Filtering
|
|
- `GET /todos/search` - Search todos by title, description, or tag
|
|
- `GET /todos/upcoming` - Get todos due in the next N days (defaults to 7)
|
|
- `GET /todos/reminders` - Get todos with reminders in the next N hours (defaults to 24)
|
|
- `GET /todos` - With query parameters for advanced filtering:
|
|
- `title` - Filter by title (partial match)
|
|
- `description` - Filter by description (partial match)
|
|
- `completed` - Filter by completion status
|
|
- `priority` - Filter by priority level
|
|
- `tag` - Filter by tag name
|
|
- `due_before` - Filter todos due before a specific date
|
|
- `due_after` - Filter todos due after a specific date
|
|
- `overdue` - Filter overdue todos
|
|
|
|
### Tag Management
|
|
- `GET /tags` - Get all tags
|
|
- `POST /tags` - Create a new tag
|
|
- `GET /tags/{tag_id}` - Get a specific tag
|
|
|
|
### Subtask Management
|
|
- `POST /todos/{todo_id}/subtasks` - Create a new subtask for a todo
|
|
- `GET /todos/{todo_id}/subtasks` - Get all subtasks for a todo
|
|
- `GET /subtasks/{subtask_id}` - Get a specific subtask
|
|
- `PUT /subtasks/{subtask_id}` - Update a subtask
|
|
- `DELETE /subtasks/{subtask_id}` - Delete a subtask
|
|
- `PUT /todos/{todo_id}/complete-all-subtasks` - Mark all subtasks of a todo as completed
|
|
|
|
### Reminder Management
|
|
- `PUT /todos/{todo_id}/set-reminder` - Set or update a reminder for a todo
|
|
|
|
### Board Management
|
|
- `GET /boards` - Get all boards
|
|
- `POST /boards` - Create a new board
|
|
- `GET /boards/{board_id}` - Get a specific board with all its todos
|
|
- `PUT /boards/{board_id}` - Update a board
|
|
- `DELETE /boards/{board_id}` - Delete a board
|
|
|
|
### Todo Board Operations
|
|
- `POST /boards/{board_id}/todos` - Create a new todo in a specific board
|
|
- `GET /boards/{board_id}/todos` - Get all todos in a board with optional status filter
|
|
- `PUT /todos/{todo_id}/move` - Move a todo to a different board and/or change its status
|
|
|
|
## Requirements
|
|
|
|
- Python 3.8+
|
|
- Dependencies listed in requirements.txt
|
|
|
|
## Installation and Setup
|
|
|
|
1. Clone the repository
|
|
2. Install dependencies:
|
|
```
|
|
pip install -r requirements.txt
|
|
```
|
|
3. Run database migrations:
|
|
```
|
|
alembic upgrade head
|
|
```
|
|
4. Start the server:
|
|
```
|
|
uvicorn main:app --reload
|
|
```
|
|
|
|
## API Documentation
|
|
|
|
Once the application is running, you can access:
|
|
- Swagger UI documentation at `/docs`
|
|
- ReDoc documentation at `/redoc` |