What I built8
- Built collaborative workflows for task assignment, progress tracking, and deadline notifications.
- Developed a Flask REST API with SQLAlchemy for persistence.
- Designed the React interface and implemented JWT authentication.
- Enforced permissions in the query rather than the view: a task list is scoped to the projects a user belongs to at the database layer, so a forgotten UI check cannot leak another team's board.
- Modelled status as a state machine with declared transitions, so a task cannot go from done back to unassigned and skip the reopen that would have notified its owner.
- Made deadline notifications idempotent per task and per day, because a scheduler that runs every hour will otherwise mail someone seven times about one overdue item.
- Added optimistic UI updates with rollback on failure, so reassigning a task feels instant but a rejected write does not leave the board showing a lie.
- Indexed the list query on (project_id, status, due_date), the three columns every board view filters on, after the first version scanned the whole table to render one column.
Tools
- React
- Flask
- SQLAlchemy
- JWT
- Docker
- AWS
- PostgreSQL