Principles
- Phase 1 must be deployable. Even if minimal, ship something real.
- No task > 4 hours. If it's bigger, break it down.
- Dependencies are explicit. Don't start a task until its prerequisites are done.
- Every task has acceptance criteria. "Done" is defined before you start.
- Every task lists specific files. No ambiguity about what to create or modify.
Example Task (for reference)
This shows the level of detail expected for every task below.
| Field | Value |
|---|---|
| Task | Create users table with auth sync |
| Phase | 1 — Foundation |
| Dependencies | #1 (project setup) |
| Files to create | convex/schema.ts, convex/users.ts |
| Files to modify | none |
| Description | Define users table in Convex schema with fields: clerkId (string, indexed), email (string, indexed), name (string), imageUrl (optional string), plan (string, default "free"), stripeCustomerId (optional string), createdAt (number). Create query getByClerkId and mutation create with full Convex v validators. |
| Acceptance criteria |
- Schema defines users table with all fields and correct types
by_clerkIdindex exists and is used ingetByClerkIdquerycreatemutation validates all inputs withvvalidatorsnpx convex devruns without schema errors
Phase 1: Foundation
Goal: Working skeleton with auth, database, and basic UI. Deployable at the end of this phase.
Task 1: Project scaffolding
- Dependencies: None
- Files to create: Project root files
- Files to modify: None
- Description: Initialize project with [framework]. Install core dependencies: [list them]. Configure TypeScript strict mode. Set up Tailwind with custom design tokens. Initialize [database].
- Acceptance criteria:
- [ ] npm run dev starts without errors
- [ ] TypeScript strict mode enabled
- [ ] Tailwind styles working
- [ ] [Database] connected and syncing
Task 2: Database schema + seed data
- Dependencies: #1
- Files to create: [schema file, seed file]
- Files to modify: None
- Description: Define all tables from ARCHITECTURE.md. Add indexes for every query pattern. Include a seed script with test data for development.
- Acceptance criteria:
- [ ] All tables defined with correct field types
- [ ] Every query pattern has a matching index
- [ ] Seed script populates test data
- [ ] No schema validation errors
Task 3: Authentication setup
- Dependencies: #1
- Files to create: [auth config, webhook route, user sync function]
- Files to modify: [layout file, middleware]
- Description: Set up [auth provider]. Configure sign-in/sign-up pages. Create webhook handler for user.created, user.updated, user.deleted events. Sync auth users to database.
- Acceptance criteria:
- [ ] Can sign up with email and OAuth
- [ ] User record created in database on signup
- [ ] Protected routes redirect to sign-in
- [ ] Sign-out clears session and redirects
Task 4: App layout + navigation
- Dependencies: #1, #3
- Files to create: [layout, sidebar, header components]
- Files to modify: [root layout]
- Description: Create app layout with sidebar navigation, header with user menu, and responsive mobile menu. Marketing pages use a separate layout with no sidebar.
- Acceptance criteria:
- [ ] Sidebar shows navigation items
- [ ] Header shows user avatar and sign-out
- [ ] Mobile menu works on small screens
- [ ] Marketing pages don't show app chrome
Task 5: Deploy skeleton
- Dependencies: #1-#4
- Files to create: None
- Files to modify: [deployment config]
- Description: Deploy to production. Set all environment variables. Verify auth works on production domain. This is the "walking skeleton" — everything after this builds on a working deployed app.
- Acceptance criteria:
- [ ] Production URL loads without errors
- [ ] Can sign up and sign in on production
- [ ] All environment variables set
- [ ] SSL certificate active
Phase 2: Core Feature
Goal: The main value proposition works end-to-end.
Task 6: [Core entity] data model + CRUD
- Dependencies: #2
- Files to create: [backend file, type definitions]
- Files to modify: [schema if not done in #2]
- Description: [Specific description of what to build, referencing your data model]
- Acceptance criteria:
- [ ] [Specific testable criterion]
- [ ] [Specific testable criterion]
- [ ] [Specific testable criterion]
Task 7: [Core entity] list page
- Dependencies: #6, #4
- Files to create: [page file, component files]
- Files to modify: [sidebar nav to add link]
- Description: [Specific description]
- Acceptance criteria:
- [ ] [Specific testable criterion]
- [ ] [Specific testable criterion]
- [ ] Empty state shown when no items exist
Task 8: [Core entity] detail page
- Dependencies: #6, #4
- Files to create: [page file, component files]
- Files to modify: [list page to add links]
- Description: [Specific description]
- Acceptance criteria:
- [ ] [Specific testable criterion]
- [ ] [Specific testable criterion]
- [ ] Loading skeleton shown while data fetches
Task 9: [Core entity] create/edit flow
- Dependencies: #6, #7
- Files to create: [form component, modal or page]
- Files to modify: [list page to add create button]
- Description: [Specific description]
- Acceptance criteria:
- [ ] [Specific testable criterion]
- [ ] Form validation with inline error messages
- [ ] Success toast on create/edit
Task 10: [Secondary feature]
- Dependencies: [list]
- Files to create: [list]
- Files to modify: [list]
- Description: [Specific description]
- Acceptance criteria:
- [ ] [Specific testable criterion]
- [ ] [Specific testable criterion]
Phase 3: Monetization
Goal: Users can pay and get premium features.
Task 11: Stripe setup + checkout
- Dependencies: #3, #5
- Files to create: [stripe utility, checkout action, pricing page]
- Files to modify: [user schema to add stripeCustomerId]
- Description: Install Stripe SDK. Create checkout action that generates a Stripe Checkout session URL. Build pricing page with plan comparison. Handle redirect back from Stripe.
- Acceptance criteria:
- [ ] Pricing page shows Free vs Pro comparison
- [ ] Clicking "Upgrade" opens Stripe Checkout
- [ ] Successful payment redirects back to app
- [ ] Works with Stripe test cards
Task 12: Stripe webhooks
- Dependencies: #11
- Files to create: [webhook route handler]
- Files to modify: [user mutations to handle plan changes]
- Description: Create webhook handler for: checkout.session.completed, invoice.paid, customer.subscription.deleted. Verify webhook signature. Update user plan in database.
- Acceptance criteria:
- [ ] Webhook signature verified before processing
- [ ] User plan updated to "pro" on successful checkout
- [ ] User plan reverted to "free" on subscription deletion
- [ ] Duplicate events handled idempotently
Task 13: Plan gating
- Dependencies: #12
- Files to create: [gate component, plan check utility]
- Files to modify: [all pro-only features]
- Description: Create a gate wrapper and utility function that checks the user's plan. Apply to all Pro-only features. Free users see an upgrade prompt instead of the feature.
- Acceptance criteria:
- [ ] Pro features hidden behind plan check
- [ ] Free users see upgrade prompt with CTA
- [ ] Plan check runs on both client and server
Phase 4: Polish + Launch
Goal: Production-ready with error handling, SEO, and pre-launch checks.
Task 14: Error handling + loading states
- Dependencies: #1-#13
- Files to create: [error boundary, 404 page, loading components]
- Files to modify: [every page/component that fetches data]
- Description: Add loading skeletons to every data-fetching component. Add error boundaries. Create 404 page. Add toast notifications for all async actions. Ensure no blank screens or unhandled errors.
- Acceptance criteria:
- [ ] Every page shows a skeleton during load
- [ ] API errors show user-friendly toast messages
- [ ] 404 page renders for unknown routes
- [ ] No unhandled promise rejections in console
Task 15: SEO + meta tags
- Dependencies: #4
- Files to create: [sitemap, robots.txt, OG image]
- Files to modify: [every marketing page for metadata]
- Description: Add unique title and meta description to every page. Add Open Graph tags for social sharing. Generate sitemap.xml and robots.txt. Add structured data where appropriate.
- Acceptance criteria:
- [ ] Every page has unique title and description
- [ ] Social sharing preview works (test with sharing debugger)
- [ ] Sitemap lists all public pages
- [ ] Robots.txt allows crawling
Task 16: Final review + testing
- Dependencies: All
- Files to create: None
- Files to modify: [anything found during review]
- Description: Run through the full Review Checklist (Day 7 template). Test every user flow. Check auth on every route. Verify Stripe in live mode. Test on mobile.
- Acceptance criteria:
- [ ] All Review Checklist items pass
- [ ] npm run build succeeds with zero errors
- [ ] Core flows work on mobile
- [ ] Stripe live mode tested with real card
Task 17: Launch
- Dependencies: All
- Files to create: None
- Files to modify: [environment config for production]
- Description: Final production deploy. Verify all environment variables. Test signup → core feature → checkout → pro feature flow in production. Post announcement.
- Acceptance criteria:
- [ ] Production deploy successful
- [ ] Full user journey works on production
- [ ] Monitoring/error tracking active
- [ ] Launch announcement posted
Critical Path
The longest chain of dependent tasks that determines the minimum build time. If any of these slip, the whole project slips.
#1 (Setup) → #2 (Schema) → #6 (Core CRUD) → #7 (List) → #9 (Create/Edit) → #11 (Stripe) → #12 (Webhooks) → #13 (Gating) → #16 (Review) → #17 (Launch)Parallel work possible:
- #3 (Auth) and #2 (Schema) can run in parallel after #1
- #4 (Layout) can start after #1, doesn't need #2
- #14 (Error handling) and #15 (SEO) can run in parallel after Phase 3
Progress Tracker
| Phase | Tasks | Completed |
|---|---|---|
| Foundation | #1-#5 | 0/5 |
| Core Feature | #6-#10 | 0/5 |
| Monetization | #11-#13 | 0/3 |
| Polish + Launch | #14-#17 | 0/4 |
| Total | 17 | 0/17 |
Want the AI to generate task-specific Claude Code prompts for each task? Try Build a Startup →