Most of Basecamp is lists and threads: to-do lists with assignees, a message board with comments, documents and files, a schedule and recurring check-in questions. One agent session can build a version of that for a handful of people. The weekend goes on what makes it a team tool rather than a database: invitations and permissions on every route, email notifications that arrive, safe file uploads, and a server others can reach over HTTPS. 37signals publishes its Campfire chat and Fizzy kanban for self-hosting, so those pieces exist. You give up mobile apps, email-in and guest access.
Before you buildBasecamp Free gives one project and up to five users at no cost. If you run a single project with a few people, you may not need to pay.
Build me a small-team project hub to replace Basecamp. Requirements: - Node.js 22 + TypeScript: Fastify with server-rendered pages (Eta) and a little vanilla JS. `npm start` serves http://localhost:4860. - Storage: better-sqlite3 in ./data/hub.db and uploads in ./data/files/ under hashed names (50 MB limit). Tables: users, projects, memberships, to-do lists, to-dos (assignee, due date, done), messages, comments, Markdown documents, files, schedule entries, check-in questions and answers. - Projects: each has a to-do page grouped by list, a message board, docs and files, and a schedule. A page "assigned to me" lists open to-dos across projects, soonest due first. - Accounts: up to 20 people, added by one-time invite links from an admin. Email and password hashed with `argon2`, a signed session cookie, roles admin and member, and a member list per project. Every route checks project membership. - Comments: Markdown with @mentions, rendered with `marked` and cleaned with `sanitize-html`. `nodemailer` sends email for mentions, assignments and new messages; each user can switch it off. - Check-ins: a recurring question per project (daily or weekly) emailed at a set time; answers collect on one page. - Schedule: dated entries plus an iCalendar feed per user at /calendar/<token>.ics. - Search: FTS5 over to-dos, messages, comments and docs the signed-in user can see. - No telemetry. Out of scope: group chat, Kanban card tables, time tracking, mobile apps, client or guest accounts, billing. - README: setup, the .env keys (BASE_URL, SECRET, SMTP_*), HTTPS with Caddy, a backup of ./data, and `npm run export` that writes each project as plain HTML.
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 Basecamp.
Add project chat to the project hub in this folder. Requirements: - One chat room per project, served over WebSockets with `ws`, with messages saved in SQLite and the last 200 shown on load. - Only project members can connect: check the session cookie on the upgrade request. - @mentions use the same notification code as comments, with email only if the user was offline for 10 minutes. - Escape all message text, limit messages to 2,000 characters and rate-limit each user. - Update the README, and mention that 37signals' Campfire is a ready-made alternative.
Add an importer for a Basecamp HTML export to the project hub in this folder. Requirements: - A command `npm run import-basecamp <export-folder>`. The export is HTML only, so first print the structure of one project's files and confirm the parsing plan before writing anything. - Create projects, to-do lists, to-dos with done state, messages with comments and docs; copy attached files into ./data/files/. - Match people by name to existing users, or create placeholder users without passwords. - Print counts of imported and skipped items per project, and make the command safe to re-run. - Update the README with the export steps.
Add a weekly report to the project hub in this folder. Requirements: - A command `npm run report` that writes an HTML email per user: to-dos completed this week, to-dos due next week, new messages, and check-in answers, for projects they belong to. - Send it with nodemailer on Monday 08:00 local time through an in-process scheduler. - Skip users with nothing to report and respect the per-user email switch. - Update the README.
A flat bill that does not grow with headcount on Studio and up, one place for tasks, talk and files, and a vendor with a long record. Reviewers praise how simple it is; the usual complaints are missing Gantt charts and budget tools and a free plan with a single project.
Estimate · A $5 VPS runs it; SMTP at this volume fits free tiers. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | 1 project, 1 GB storage, up to 5 users. |
| Freelancer | $25 | — | 3 active projects, 5 GB storage, up to 20 users, project templates, time tracking, AI agent connectors, 24/7 support. |
| Studio | $59 | — | 10 active projects, 25 GB storage, unlimited users and tools per project. |
| Pro | $99 | — | 25 active projects, 100 GB storage, unlimited users. |
| Unlimited | — | $299 | Unlimited projects, 1 TB storage, unlimited users, priority support and personalized onboarding. |
Free covers one project, 1 GB of storage and up to five users.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Campfire group chat and Pings (37signals publishes Campfire to self-host), Card Tables and the Kanban view (37signals publishes Fizzy for that).
About $25 a month on the Freelancer plan, $300 a year (checked 2026-10-19).
Campfire group chat and Pings (37signals publishes Campfire to self-host); Card Tables and the Kanban view (37signals publishes Fizzy for that); Mobile and desktop apps, push alerts and email-in; Client and guest access with Basecamp's permission rules; 24/7 support, the uptime record and the ChatGPT and Claude connectors. If any of those matter to you, keep paying.
Yes: Leantime (open source), OpenProject (open source), Kanboard (open source).