PiTime
Development Plan Progress
Last updated: 2026-04-05
Overall Plan Completion 89%
8 of 9 phases complete
1 phase remaining (Xero)
168 tests passing
Phase 0 · Foundation
Netlify → Vercel Migration
100%
Next.js 15 scaffold with Turbo, Tailwind CSS 4
Hero section with gradient text
6 service cards (Distressed Project Turnaround, etc.)
About section with stats (20+ years, $67M+ recovered)
Contact section with form, phone, email, Grace AI
Responsive navbar with PiTime link
Footer with brand and navigation
14 unit tests passing
Phase 1 · Foundation
Auth + DB Foundation
100%
Turso database created (Mumbai region)
Full Drizzle schema deployed (10 tables)
Google OAuth via NextAuth v5 (JWT sessions, 24h)
Email allowlist access control
Route protection middleware (/app/* requires auth)
Dev login for local testing
12 unit tests passing
Phase 2 · Core
Core Time Entry
100%
CRUD actions: createEntry, getEntriesByDate, updateEntry, deleteEntry
Voice parser with fuzzy/Levenshtein matching
Word-form number parsing (one through hundreds)
PascalCase/camelCase name splitting, prefix matching
Voice input + manual form wired to server actions
Client/project dropdown filtering (active projects only)
Entry list with delete confirmation
34 unit tests passing
Phase 3 · Core
Clients & Projects
100%
Full CRUD: add, edit, delete clients with validation
Per-client project management (add project with name + code)
Rate types: hourly/daily with AUD amount
Delete guard (cannot delete client with time entries)
Expandable client cards with contact details
Project status badges (active/completed/on_hold)
16 unit tests passing
Phase 4 · Core
Invoices
100%
Invoice number generation (INV-YYYYMM-NNN, atomic sequence)
Create invoice form (client, dates, notes)
Invoice list with status badges (draft/sent/paid/overdue/void)
Status transitions (draft→sent, sent→paid, void)
GST calculation (10% on subtotal including mileage)
Auto-detect overdue invoices
10 unit tests passing
Phase 5 · Features
Dashboard & Charts
100%
Stat cards wired: today's hours, week total, unbilled, outstanding
Recent entries list (last 5 from the week)
Quick Time Entry card with auto-open form link
6 unit tests passing
Phase 6 · Polish
Settings & Polish
100%
Business profile (name, ABN, address, email, phone)
Invoice settings (day hours, mileage rate, GST, prefix, terms)
Bank details (bank name, BSB, account number)
Keyboard shortcuts (Ctrl+N, ?, Esc) + help modal
Logout modal with sign-out server action
8 unit tests passing
Phase 7 · Integration
Xero Integration
0%
OAuth2 connect flow (granular scopes)
Contact sync (clients → Xero contacts)
Invoice push (PiTime → Xero)
Payment webhook (Xero payment → mark paid)
Token refresh management
Phase 8 · Quality
E2E Verification
100%
Playwright E2E: 21 tests (auth, nav, all pages, forms, validation)
Mobile responsive verification (iPhone viewport)
Edge cases covered in unit tests (GST, voice parsing, validation)
Complete
Not Started