- Context
- Car owners collect workshop invoices as photos and files with no single timeline of what was done or when the next service is due. Constraint: one set of service rules shared by web and mobile; identity via magic link; OCR quality is not finished yet.
- Intervention
-
Started a monorepo where Next.js web and Expo mobile share service rules, with Prisma + PostgreSQL and Auth.js magic link.
Phase 1 — Capture and timeline
Scan/upload an invoice into a repair timeline so each workshop visit becomes a dated event, not a lost photo.
Phase 2 — OCR (honestly incomplete)
OCR is wired to read invoice fields but is still in progress — extraction quality is not production-ready yet, so the UI marks OCR as assistive, not authoritative.
Phase 3 — Shared rules + magic link
Service rules live once in the monorepo for web and Expo. Auth.js magic link covers sign-in without a password store to maintain.
- Risks & how they were handled
-
- OCR overconfidence → label OCR as in progress; keep human edit of extracted fields.
- Rule drift between web and mobile → shared service-rule package in the monorepo.
- Auth friction → magic link via Auth.js instead of a custom password flow.
- What I'd do differently
-
- Ship a manual-entry-first MVP before investing more in OCR.
- Add fixture invoices early for regression on the parser.
- Outcome
- Before: invoices scattered as photos with no repair timeline. After (MVP in progress): a monorepo Next.js + Expo app with shared service rules, Prisma + PostgreSQL, Auth.js magic link, invoice capture into a timeline, next-service hints, and OCR that is explicitly still in progress.
System map
Workshop invoice photo
OCR (in progress)
assistive only
Repair timeline
dated events
Next-service hints
shared rules
Web and mobile
Next.js · Expo
Turns invoices into a repair timeline
Surfaces hints for the next service
Keeps OCR editable — not authoritative yet
What shipped
- Web + mobile monorepo One repair timeline and shared service rules on web and phone — Next.js, Expo, Prisma + PostgreSQL, Auth.js magic link.
- Repair timeline Scanned invoices become dated workshop events with next-service hints.
- OCR path (honest) Extraction is wired but still in progress — the UI marks it assistive, not final.
Stack Next.js Expo Prisma PostgreSQL Auth.js shared rules
MVP in progress