
- 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)
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 filteringPOST /todos
- Create a new todoPOST /todos/with-tags
- Create a new todo with tags (creates tags if they don't exist)GET /todos/{todo_id}
- Get a specific todoPUT /todos/{todo_id}
- Update a todoDELETE /todos/{todo_id}
- Delete a todo
Search & Filtering
GET /todos/search
- Search todos by title, description, or tagGET /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 statuspriority
- Filter by priority leveltag
- Filter by tag namedue_before
- Filter todos due before a specific datedue_after
- Filter todos due after a specific dateoverdue
- Filter overdue todos
Tag Management
GET /tags
- Get all tagsPOST /tags
- Create a new tagGET /tags/{tag_id}
- Get a specific tag
Subtask Management
POST /todos/{todo_id}/subtasks
- Create a new subtask for a todoGET /todos/{todo_id}/subtasks
- Get all subtasks for a todoGET /subtasks/{subtask_id}
- Get a specific subtaskPUT /subtasks/{subtask_id}
- Update a subtaskDELETE /subtasks/{subtask_id}
- Delete a subtaskPUT /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 boardsPOST /boards
- Create a new boardGET /boards/{board_id}
- Get a specific board with all its todosPUT /boards/{board_id}
- Update a boardDELETE /boards/{board_id}
- Delete a board
Todo Board Operations
POST /boards/{board_id}/todos
- Create a new todo in a specific boardGET /boards/{board_id}/todos
- Get all todos in a board with optional status filterPUT /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
- Clone the repository
- Install dependencies:
pip install -r requirements.txt
- Run database migrations:
alembic upgrade head
- 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
Description
Languages
Python
98.4%
Mako
1.6%