For a freelancer or a three-person studio, the center of Teamwork is clients, projects, task lists, a timer, a budget and an invoice made from logged time. That fits SQLite and an agent can build it over a weekend. The hours go into the money logic: retainers, rates per person and per client, timesheet approval, and invoices that mark entries as billed. What stays behind is the part agencies buy it for: client users who comment and approve files, capacity planning across a team, hundreds of connectors and the phone apps. Solo or in a tiny team, it works; for a growing agency, it doesn't.
Before you buildCheck Teamwork Free first: 5 users and 5 projects at no charge. Past that, Basics needs at least 3 paid users.
Build me a self-hosted client-work tracker for a small agency to replace Teamwork. Requirements: - Node.js 22 + TypeScript: a Fastify API and a React front end built with Vite. `npm start` builds the UI and serves everything on http://localhost:4810. - Storage: better-sqlite3 in ./data/work.db. Clients own projects, projects hold task lists, lists hold tasks. A task has Markdown notes, one assignee, start and due dates, an estimate in minutes, subtasks, tags and "blocked by" links. - Views per project: list, board and a Gantt drawn with frappe-gantt that shows dependencies. A My Work page lists everything assigned to me, sorted by due date. - Time: a start/stop timer on every task, manual entries, a billable flag, an hourly rate per person and per client, and a weekly timesheet that someone approves before it locks. - Budgets and billing: a project has a fixed budget or a monthly retainer, in hours or money, and shows burn against it with a warning at 80%. "Create invoice" turns unbilled billable time into a PDF (`pdfkit`) with margin and tax lines and marks those entries as invoiced. - Templates and intake: save a project as a template and create a copy with dates shifted from a chosen start; a public request form per client (honeypot field, rate limit) adds a task to that client's request list. - People are added with `npm run user:add <email>`; argon2 hashes, signed-cookie sessions; email through nodemailer (SMTP in .env) on assignment. No telemetry, local-first. - Out of scope: client logins and file proofing, chat, capacity planning across people, QuickBooks or HubSpot sync, mobile apps, AI features. - README: setup, backing up ./data, and importing tasks and time entries from CSV.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Teamwork.
Add a Teamwork importer to the tracker in this folder. Requirements: - A command `npm run import:teamwork` that takes a task list CSV from a project's task list report and a CSV from Reports > Time. - Show a column mapping step (task, list, assignee email, dates, estimate, hours, billable, invoiced) and remember it, then print counts of new, changed and skipped rows before writing. - Match people by email and create missing ones as inactive users; match projects by name and ask before creating any. - Keep the invoiced flag from the export so old hours don't land on new invoices. - Update the README with the Teamwork export steps.
Add client status emails to the tracker in this folder. Requirements: - Per client, an optional weekly email on Fridays at 16:00 listing tasks completed this week, tasks due next week and budget used so far, built from SQLite. - Recipients are plain email addresses stored on the client; every email has an unsubscribe link signed with an HMAC token. - Preview and "send test to me" buttons in the UI; nothing is ever sent without the per-client switch on. - Log each send with its recipient and a hash of the body. - Update the README with SMTP setup.
Add a workload view to the tracker in this folder. Requirements: - A page with one row per person and one column per week for the next 8 weeks, showing hours of estimated work from open tasks against a weekly capacity set per person (default 32 hours). - Spread a task's estimate evenly across the working days between its start and due date; skip weekends and a per-person list of days off. - Colour cells green under 80%, amber to 100%, red above; clicking a cell lists the tasks. - Drag a task to another person to reassign it, with an activity log entry. - Update the README with how the spreading works.
Agencies bill by the hour and defend budgets to clients, so they want tasks, time and money in one place where the numbers agree. Teamwork also lets clients into projects, which a private tracker can't, and it connects to the accounting tool the finance person already uses.
Estimate · Runs on a machine you own, or a $5 VPS for a team. Compare it with three Basics seats at $41.97 a month. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | Up to 5 users and 5 projects, 100 MB storage, 100 automations, list, board, Gantt and table views, time logging, client organisation, chat-tool connections. |
| Basics | $13.99 | $9.99 | Minimum 3 users, 300 projects, 100 GB storage, 5,000 automations, unlimited project templates, billable time tracking and reports. |
| Accelerate | $29.99 | $24.99 | Minimum 5 users, 600 projects, 250 GB storage, 20,000 automations, smart intake forms, workload planning, time budgets and retainers, invoices from logged time, HubSpot and QuickBooks connections. |
| Optimize | custom | — | Accelerate plus quotes, 100,000 automations, CRM pipeline to projects, resourcing by role or skill, multi-currency budgets, profitability reports, Salesforce and NetSuite connections. |
| Enterprise | custom | — | Optimize plus advanced security enforcement, single sign-on, a dedicated success manager and priority support. |
Free covers up to 5 users, 5 projects, 100 MB of storage and 100 automations.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Client users who can comment, approve and see project status without a licence, Capacity and workload planning across a team, with live utilisation.
About $13.99 a month on the Basics plan per seat, $167.88 a year (checked 2026-10-19).
Client users who can comment, approve and see project status without a licence; Capacity and workload planning across a team, with live utilisation; QuickBooks, HubSpot, Slack and Google Drive connections; Desktop and mobile apps with a timer; Free expert training, a support team and the AI teammates. If any of those matter to you, keep paying.
Yes: OpenProject (open source), Leantime (open source), Plane (open source).