Why not just use an off-the-shelf board
The studio's work is role-driven: a designer produces, a reviewer checks, an approver releases to the client. Generic tools flatten all of that into a single assignee field. We built the tracker around the roles themselves, so assignment, approval, and visibility match the way the team already works instead of fighting it.
What it does
A focused, complete project-management surface:
- Projects, tasks, and subtasks with kanban states (todo, doing, done)
- Role-based assignment with an approval flow for custom roles
- Watchers and auto-watch on assignment, so the right people stay informed
- Attachments with a per-task quota, comments with @mentions
- An activity log for every change, plus team-load and summary views
Real-time by default
Every change broadcasts over Socket.IO and the client keeps the board live with TanStack Query, so a status move or a new comment shows up on everyone's screen immediately, no refresh, no stale board.
One process to run
A React and TypeScript front end sits over a Python aiohttp API with MongoDB via Motor. The same process serves the API and the built app, so deployment is a single command to the studio's VPS. It is in production with an automated deploy and update flow.
