# How to Vibe Code Your Own Harvest (and Stop Paying for It)

> Time Tracking Software With Invoicing

- Site: https://harvestapp.com
- Category: SaaS / Time Tracking & Invoicing
- Platforms: Web app, macOS app, Windows app, iOS app, Android app
- Verdict: **Solid side project** (70/100 vibecodeable)
- Estimated effort: 3-4 weeks of focused development

## Verdict

You can build a fully functional personal time tracking and invoicing web app for yourself, but the multi-platform desktop/mobile footprint and complex rate calculation engine require deliberate scoping.

The core CRUD loop of clients, projects, tasks, and timesheet timers is straightforward to generate using an AI coding agent. However, Harvest's value lies in its exact calculation engine—resolving whether a specific task on a specific project for a specific person uses a default rate, a staff member's custom rate, or a task override requires rigorous database constraints and transaction logic. Replicating the web app is a rewarding side project, but attempting to clone its native menu bar apps and mobile suite simultaneously is a recipe for scope creep.

### What you can't replicate

- Brand equity and 20 years of customer trust
- Pre-built certified integrations with QuickBooks, Xero, and dozens of enterprise PM tools

## What it does

Harvest helps professional teams track time, bill clients, optimize team time, and measure performance with confidence.

### Core features

- One-click timers and weekly/daily timesheets
- Client, project, and task hierarchy management
- Multi-tiered billing rates (person, project, task)
- Expense tracking with digital receipt attachments
- Project profitability and team utilization analytics
- Automated invoice generation from tracked hours and expenses
- Retainer hour and fee tracking with budget alerts

## The business

### Pricing

- Free: $0/mo
- Teams: $9/seat/mo

Founded 2006.
Team size: 400-500.

## The hard parts

- Complex billing calculation engine resolving overlapping per-person, per-project, and per-task rates
- Multi-platform footprint (Web app + macOS/Windows menu bar helpers + iOS/Android apps)
- Reliable two-way calendar sync (Google/Outlook) and accounting tool webhooks
- Real-time retainer and budget threshold consumption rollups

## How to vibe code Harvest

### Prerequisites

- Node.js (free): Required runtime for Next.js and modern full-stack web development
- GitHub (free): Version control and deployment pipeline for Vercel and Cloudflare

### Recommended AI tools

- Claude Code: Best-in-class multi-file agentic coding agent for scaffolding the database schema, API routes, and dashboard UI
- Cursor: Ideal AI code editor for fine-tuning complex data tables, modal forms, and timesheet grid interactions

### Stack

- Frontend: Next.js (React) with Tailwind CSS and shadcn/ui
- Backend: Next.js Server Actions / API Routes
- Database: Turso (SQLite at the edge, perfect for single-user or small team personal tracking)
- Auth: better-auth
- Payments: Stripe
- Other: Resend for email notifications, PostHog for product analytics

### Hosting

- Vercel (Hosting the Next.js frontend and serverless API functions): $0/mo (Hobby Tier)
- Turso (Serverless SQLite database storage): $0/mo (Free Tier)

### Build guide

1. **Project Scaffolding & Database Schema** — Initialize a Next.js project with Tailwind CSS, shadcn/ui, and better-auth, then define the core relational schema for clients, projects, tasks, time entries, and expenses using Turso.

```
Create a new Next.js project using App Router, TypeScript, Tailwind CSS, and shadcn/ui. Configure better-auth with email/password authentication backed by a Turso SQLite database using Drizzle ORM. Set up the foundational database schema for a time-tracking application: tables for users, clients (id, name, currency, address), projects (id, client_id, name, code, budget_type, budget_hours, hourly_rate), tasks (id, name, default_billable), time_entries (id, user_id, project_id, task_id, date, hours, notes, billable, invoiced), and expenses (id, user_id, project_id, category, amount, notes, receipt_url, invoiced). Ensure all foreign key constraints, indexes, and timestamps are properly configured with migration scripts.
```

2. **Core Navigation & Organization Dashboard** — Build the foundational layout, navigation sidebar, and CRUD management screens for Clients, Projects, and Tasks.

```
Build a responsive dashboard layout in Next.js using shadcn/ui sidebar, header, and card components. Create dedicated management pages for Clients, Projects, and Tasks with clean data tables, search filters, and modal creation/edit forms. Implement server actions to handle CRUD operations safely with Zod validation. Ensure projects allow configuring billing methods (Fixed Fee, Time & Materials, Non-Billable) and budget thresholds (Hours per month, Total fees). Add toast notifications for successful state changes.
```

3. **Timesheet & Live Timer Engine** — Implement the interactive daily/weekly timesheet grid and the persistent real-time running timer component.

```
Build an interactive timesheet view supporting both daily and weekly grid layouts. Users should be able to select a client and project, assign a task, and log hours across days of the week with optional notes. Implement a global persistent timer widget in the header with a live counter, start/stop controls, and a quick-select project/task dropdown that automatically records a time entry when stopped. Store active timer state in local storage and sync with the database via server actions.
```

4. **Expense Tracking & Receipt Uploads** — Build the expense logging interface with category management and receipt file attachments stored via object storage.

```
Create an expense tracking module allowing users to log project-associated costs with fields for category, amount, date, notes, and whether the expense is billable and reimbursable. Integrate file upload handling for digital receipts (PNG/PDF) using Cloudflare R2 or UploadThing. Build an expense list view grouped by project with filter and export capabilities, plus a toggle indicating whether an expense has been attached to an invoice.
```

5. **Reporting, Project Profitability & Budgets** — Develop analytics dashboards calculating project profitability, team utilization, and real-time budget consumption alerts.

```
Build a reporting and analytics dashboard showing time reports, project profitability margins, and budget threshold tracking. Compute total billable hours versus non-billable hours, actual spend against project budgets, and visual progress bars that change color (green to yellow to red) as projects approach their hour or fee limits. Implement export utilities for CSV timesheet data and summary views filtered by client, project, or date range.
```

6. **Invoicing & Payment Generation** — Implement automated invoice generation pulling unbilled time entries and expenses into professional client invoices.

```
Build an invoicing module that allows users to select a client and date range to automatically compile unbilled time entries and billable expenses into a professional invoice layout. Include line item adjustments, tax calculations, and status tracking (Draft, Sent, Paid, Overdue). Integrate Stripe Checkout to enable online payment collection via webhook listeners that update invoice statuses automatically upon successful charge completion.
```

### Cost vs paying

**Starting costs (one-time):**

- AI Coding Assistant (Claude Pro / Cursor): $20.00
- Total: $20.00 one-time

**Ongoing costs (monthly):**

- Vercel Hobby & Turso Free Tier: $0.00
- Total: $0.00/mo

- Paying for the SaaS instead: $9 - $17.50 / seat / mo
- Build time: 40-60 hours
- AI tool credits: $20 one-time (Claude Pro / Cursor)
- Break-even: Free forever (personal self-hosted build)

## Sources

- [Harvest Official Website](https://harvestapp.com)
- [Wikipedia - Harvest (software)](https://en.wikipedia.org/wiki/Harvest_(software))
- [Bending Spoons Acquisition Coverage](https://www.tradingview.com/news/tradingview:https---www-tradingview-news-item-1:446077553/)