A multi-tenant work-management platform built around one loop most tools ignore: a manager delegates a piece of work, the assignee moves it forward, and someone with authority approves it. Boards render as table, kanban, calendar or timeline, all projected from a single snapshot of the data.
The problem
General project tools track that work exists but not who owes what to whom. The moment a team needs real delegation with an approval step, the process leaks into spreadsheets and chat — and nothing stops a person from quietly approving their own work.
What I built
Feature-complete and green across typecheck, lint, tests and production build. Runs with zero configuration locally — install, start, and a dev quick-login drops you into a seeded two-organisation demo.
How it works
Delegation is modelled as an explicit seven-state machine with a single mutator function, so every transition is validated in one place and no-self-approval is enforced for every role including owners. Flexible per-board columns use a typed entity-attribute-value model rather than dynamic schema changes. Tenant isolation runs through one authorisation chokepoint, backed by a custom ESLint rule that fails the build if a component reaches for the database directly. The same code runs on an embedded Postgres locally and a hosted Postgres in production, with migrations serialised by an advisory lock so cold-starting instances can't race.
Highlights
- Seven-state delegation machine with no-self-approval enforced for every role
- Table, kanban, calendar and timeline views all projected from one board snapshot
- Multi-tenant isolation through a single authorisation chokepoint, guarded by a custom ESLint rule
- Typed EAV model gives per-board custom columns without dynamic schema migrations
- Dual database driver — embedded Postgres locally, hosted Postgres in production, one codebase
- Advisory-lock migrations stop cold-starting serverless instances racing each other
Let's build yours.
Tell me what you're trying to ship — you'll get a scoped plan and a straight answer.