Construction document platform
Documents, forms and trackers for construction teams · Built from scratch, solo
Updated
Before
Documents, forms and site reports lived in Google Sheets and Docs. Site updates reached the office late.
After
Documents, forms, trackers and reports run on one platform with roles. Clients follow progress in their portal.
- 1Person:Owner
Sets up a project with sections, trackers and a team.
- 2Person:Project manager
Builds a form or picks a template, then sends it to the site.
- 3Person:Field crew
Fills it on site with photos and a signature. Typed answers survive a lost signal.
- 4Person:Project manager
Approves it or sends it back.
Software:PlatformTurns the approved form into a PDF and updates the tracker.
- 5Software:Platform
Keeps documents in versioned folders and exports reports to PDF and Excel.
Person:ClientFollows folders and trackers in their own portal.
Always on
- Each company sees only its own data.
- Each role sees only what it should. The database enforces it.
- File links expire, so a forwarded link stops working.
- Every change goes to the audit log.
Problem
Construction teams ran documents, forms and trackers by hand in Google Sheets and Docs. Site updates came in late and lived in scattered files.
Diagnosis
Spreadsheets can go only if each role sees what it should and each company's data stays its own. So access rules live in the database.
What I hardened
- Payment events retried by the provider
- Atomic, idempotent handling: a retry never charges or grants twice.
- File links that stay open
- Time-limited signed links.
- Company context resolved loosely
- Tenant resolution fails closed: a doubt means no data.
Solution
One platform with roles enforced by database rules, photo and form reports from the site, form-to-PDF submissions, invite links, two-factor sign-in, a client sharing portal, an audit log and billing.
- App
- Next.js
- React
- Tailwind CSS
- Radix UI
- Zod
- Data and security
- Supabase
- PostgreSQL row-level security
- TOTP two-factor
- Signed file links
- Documents
- React-PDF
- Resumable uploads (tus)
- ExcelJS
- E-signatures
- Billing and email
- Stripe
- Resend
- Delivery
- Vercel
- GitHub Actions
- Vitest
- Playwright