Personal project · SaaS product
FreeFlow
Project management connecting tasks, dependencies, time and finances for small teams and consultancies.

Problem: delivery and finances in separate tools
Freelancers and small teams usually track tasks in one tool and time, budget and cost in spreadsheets. It is hard to tell whether a late project is also becoming expensive.
FreeFlow organizes projects by mode (development, support or general) with a Kanban board, a visual dependency flow, checklists, time tracking, cycles and per-project management finances.
Decision: monorepo with shared domain rules
The project is a Bun monorepo with the React/Vite interface, the Elysia API and shared packages for the database schema (Drizzle), API contracts and pure domain rules. The same business rule runs in the browser and on the server, and types flow across both ends.
Architecture decisions are recorded as ADRs, such as separating management finances from real billing and the deployment topology.

Teams, access and collaboration
The API scopes data by workspace, with teams and role-based access control. Authentication uses Better Auth with HttpOnly cookie sessions and rate limiting.
Comments with mentions trigger notifications, and updates reach the interface through Server-Sent Events. An MCP integration lets coding agents read and update project tasks.

Quality and delivery
GitHub Actions CI blocks integration on lint, type, migration or test failures and also builds the API Docker image. Tests cover the interface (Vitest and Testing Library), the API and PostgreSQL integration, including a permission matrix.
The frontend runs on Vercel and the API on Railway, with the database on a private network. Production deployment includes a post-release smoke test and a rollback path.
Building with AI agents
I built FreeFlow on my own, working with Claude Code and Codex. I define the product, each sprint's scope, architecture decisions and acceptance criteria; the agents implement from those plans, and I review and integrate every delivery.
The process is documented in the repository: ADRs, sprint plans with a Definition of Done and a rules file for the agents. In the last sprint, three Claude Code sessions worked in parallel, each in its own worktree, with file ownership per track, queued migrations and integration only through pull requests. CI blocks anything that fails lint, types or tests, regardless of who wrote the code.
Current status
The core works end to end in production. Without an account, the app opens in demo mode: you can create projects saved in the browser or explore a sample project with a board, dependencies and a finance panel. Accounts, teams and sync use the API, in early access.