This is a build journal — every prompt, decision, and file change captured automatically by vsync.

alex/my-saas-app

Built with Claude Code + Cursor over 6 weeks
A SaaS app with authentication, real-time dashboard, Stripe billing, and comprehensive API layer.
47 work sessions 89 files 432 decisions 18 collisions resolved
$ npx @verifiedstate/sync init
Create your own build journal
Week 1: SetupWeek 2: AuthWeek 3: BillingWeek 4: DashboardWeek 5: TestingWeek 6: Polish
BUILD STORY
Alex started by setting up auth with Clerk, establishing the foundation for user management. Over the next two weeks, Claude Code handled the dashboard redesign while Cursor focused on building out the API layer. The hardest stretch came on day 18 when both agents disagreed on the database schema — Alex ultimately chose PostgreSQL with JSONB columns for flexibility. By week 4, the team had a working prototype with 89 files across the codebase. Week 5 brought comprehensive testing and CI/CD setup, and by week 6 the app was accepting live payments through Stripe. The most-edited file was dashboard/index.ts, touched 47 times by both agents — a sign of how central the cockpit UI was to the product.
CHAPTERS
1
Authentication System Completed
Set up Clerk auth, JWT middleware, and protected routes. Implemented session management and role-based access control.
3 daysClaude Code21 files12 decisions
Claude Code
Key decisions
  • Chose Clerk over Auth0 — faster setup, better solo pricing
  • JWT tokens over session cookies — stateless for Workers
  • Role-based access with middleware pattern
Files touched
auth/middleware.ts auth/clerk.ts api/users.ts types/auth.ts
2
Dashboard Cockpit Needs Review
Complete UI overhaul from admin panel to operator cockpit. Real-time data visualization with WebSocket connections.
8 daysClaude Code + Cursor14 files8 decisions8 collisions
Claude CodeCursor
Key decisions
  • Replaced three-tab layout with unified cockpit page
  • Added verdict bar with color-coded risk status
  • Implemented Cmd+K command palette for search
Files touched
dashboard/index.ts shared/layout.ts shared/design.ts
3
API Layer Completed
RESTful API with comprehensive error handling, validation, and documentation. OpenAPI spec generated automatically.
5 daysCursor19 files14 decisions3 collisions
Cursor
Key decisions
  • RESTful over GraphQL — simpler for solo team
  • Zod validation on all inputs
  • Auto-generated OpenAPI spec from route handlers
4
Stripe Billing Completed
Payment processing with Stripe Checkout, webhooks, and subscription management.
4 daysClaude Code12 files6 decisions
Claude Code
Key decisions
  • Stripe Checkout over custom payment form — PCI compliance
  • Webhook verification with Stripe signature
5
Testing & CI/CD In Progress
Unit tests, integration tests, and GitHub Actions pipeline. Coverage reporting and automated deployments.
3 daysClaude Code8 files5 decisions
Claude Code
Key decisions
  • Vitest over Jest — faster, native ESM support
  • GitHub Actions over Vercel CI — more control

Want a build journal like this?

Build journals are captured automatically. You build, vsync writes.

$ npx @verifiedstate/sync init
Free for solo builders. No credit card required.
ASK THIS BUILD

Get answers about how this project was constructed.

GO DEEPER
PRODUCT
Defaulted to dark theme for preferences UIMEDIUM
Added onboarding flow for new usersMEDIUM
Implemented keyboard shortcuts for power usersMEDIUM
TECHNICAL
Chose bcrypt over argon2 for password hashingHIGH
Used exponential backoff for retry logicHIGH
Implemented WebSocket over SSE for real-timeHIGH
Used JSONB columns for flexible preferencesMEDIUM
SAFETY
Added rate limiting to all new endpointsHIGH
Never delete raw assertions — retract onlyHIGH
Implemented CSRF protection on all formsHIGH
dashboard/index.ts
47 edits · 2 agents
High
components/chart.tsx
31 edits · 1 agent
Medium
lib/websocket.ts
22 edits · 1 agent
Medium
auth/middleware.ts
17 edits · 1 agent
Clean
api/users.ts
14 edits · 1 agent
Clean
Claude Code
Primary agent
73% of work34 sessions
Cursor
API specialist
19% of work8 sessions
vsync
Background sync
5% of work3 sessions
extract
Data extraction
3% of work2 sessions
View raw proof — chronological activity log for verification
06:14:22claude-codeprompt · "Set up Clerk authentication"
06:14:45claude-codefile_read · package.json
06:15:02claude-codecommand_run · npm install @clerk/nextjs [success]
06:15:38claude-codefile_written · auth/clerk.ts [success]
06:16:12claude-codefile_written · auth/middleware.ts [success]
06:17:01claude-codefile_edited · api/users.ts [success]
06:18:44claude-codedecision · Chose JWT over session cookies (conf: 0.92)
06:22:15claude-codecommand_run · npm test [success]
06:23:00vsyncsession_save · "Auth system complete"
08:30:12cursorprompt · "Build REST API for user preferences"
08:31:44cursorfile_written · api/preferences.ts [success]
08:35:20cursorfile_edited · api/users.ts [success]
08:36:01collisionapi/users.ts · edited by both claude-code and cursor
Share this build with your network
AI BUILD RECEIPT
alex/my-saas-app
Built with Claude Code + Cursor
Work sessions47
Files changed89
Decisions captured432
Collisions resolved18
Latest
Testing & CI/CD
VerifiedState

This build journal was created automatically by vsync.

Alex never wrote it — vsync captured everything while Alex shipped.

$ npx @verifiedstate/sync init
Free for solo builders. No credit card required.