A full-stack task management application built with:
- Backend: Python (Flask)
- Frontend: Flutter (Dart)
The app allows users to create, view, update, and delete tasks, with additional features like search, filtering, dependency tracking, and UI-based state handling.
-
Create, Read, Update, Delete (CRUD) tasks
-
Each task contains:
- Title
- Description
- Due Date
- Status (To-Do, In Progress, Done)
- Blocked By (optional dependency)
- Search tasks by title
- Filter tasks by status
- Highlight matching search text
- Debounced search (300ms delay)
- Visual indication for blocked tasks (greyed out)
- Draft persistence for task creation
- Loading indicators with simulated delay (2 seconds)
- Prevention of duplicate submissions
repo/
backend/
app.py
task_manager.db
schema/
frontend/
task_manager/
lib/
pubspec.yaml
git clone <your-repo-url>
cd <repo-name>
cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Run the server:
flask run --debug
The backend will run at:
http://localhost:5000
cd frontend/task_manager
flutter pub get
Run the app (web):
flutter run -d chrome
GET /tasks→ Fetch all tasksPOST /create→ Create a taskPOST /update→ Update a taskPOST /delete→ Delete a task
All endpoints accept and return JSON.
Track A: Full Stack
- Backend implemented using Flask
- Frontend implemented using Flutter
Debounced Autocomplete Search with Highlighting
- Search input is debounced (300ms)
- Matching text in task titles is highlighted in the UI
- ChatGPT
I used AI as a learning and implementation aid.
AI helped with:
- Understanding Flutter widget structure
- Implementing UI components (forms, dialogs, lists)
- Managing state (
setState, async handling)
-
The
blocked_byfeature is implemented with:- Foreign key constraints in the database
- UI dropdown selection in Flutter
- Visual distinction for blocked tasks
This project demonstrates:
- Full-stack development
- REST API design
- UI/UX considerations
- State management in Flutter
- Clean separation of concerns