TaskView for agencies & outsourcing teams
Client projects kept separate, tracked time turned into reports, and a tool cost that stays flat while your team grows. On your own server.
Sound familiar?
The seat bill grows with every hire
A per-seat subscription quietly becomes one of your bigger line items — and you pay full price for a PM who opens the tracker twice a month.
Month-end reporting eats a day
Assembling "what we did for client X and how long it took" from chat logs and memory, every single month, for every single client.
Client work sits in someone else's cloud
NDAs and client security questionnaires get harder to answer when project data for every client lives in a third-party SaaS.
How TaskView helps
Each point below is a shipped feature, not a roadmap promise — the code is public.
Keep each client in its own project
Separate projects per client with their own lists, boards and members. Role-based permissions are set per project, so people see exactly the client work they are on.
Turn tracked work into invoices
Time tracking with timers and manual entries, time reports by project and period, per-person summaries. Tasks can carry a cost value (income or expense), so billable work is visible right on the board.
Bring in contractors without a pricing event
No license is priced per seat. Add a subcontractor for a six-week engagement and remove them after — your tooling cost does not change.
For dev shops: connect the repos
GitHub, GitLab and Gitea integrations sync repository issues as tasks both ways via webhooks — one board for the team, kept in step with the repo's issue tracker.
Answer clients from anywhere
Native iOS and Android apps: check a task status or log time from the road, not just from the office.
A tool cost you can put in a business plan
The Community Edition is free with no user limit. The paid edition is a one-time flat license per organization — not a subscription, not per seat.
Run one client project in it for a sprint
Free edition, docker compose install, no signup and no sales call. If it does not fit, docker compose down and you have lost an afternoon at most.
