Skip to content

Repository files navigation

FieldProof

Photos that hold up. Job-site documentation for solo contractors and small crews — local-first PWA: every photo is sealed the moment it lands, everything lives on your device, works with no signal, and exports completely at any time. (Working title — final name pending a trademark/domain check.)

The trust contract: your clients are yours. FieldProof never contacts them, never injects offers into your reports, and never holds your records hostage.

What it does

  • Sealed capture — the shutter writes photo bytes, timestamp, GPS, and a SHA-256 fingerprint in ONE atomic transaction, before the UI even renders the shot. A photo either exists fully sealed or not at all.
  • Verify anytime — recompute the hash from stored bytes and compare against the seal. Tampering shows.
  • Honest corrections — photos are never edited or deleted; they're voided with a visible reason. The record stays complete.
  • Punch list — open/done items per project, close-out progress at a glance.
  • Daily logs — one narrative entry per project per day; photos prove, logs explain.
  • Today's Work report — one day, one project: photos + log + punch movement, as a clean print/PDF styled like contractor letterhead.
  • Evidence Packet — the whole sealed record with a fingerprint appendix (every photo's SHA-256), built for disputes.
  • Export everything — one tap produces a ZIP (manifest + JSON + CSVs + every photo byte-for-byte, so seals verify after restore). Free forever.
  • AI drafts (optional, BYO key) — photo → suggested caption, rough notes → polished daily-log paragraph. Words only: AI never touches timestamps, GPS, hashes, or bytes. Configure a Gemini key under More → AI drafts; without a key the buttons don't exist.

Design

"The Carbon Copy" — the contractor's triplicate form pad, rebuilt (see docs/DESIGN.md). Blueprint ink on paper white, IBM Plex Sans for human words and IBM Plex Mono for machine truth, safety yellow reserved exclusively for capture controls, and the bronze seal octagon marking immutable evidence. Light/dark themes.

Stack

Vite 7 · React 19 · TypeScript (strict) · Tailwind 4 · Dexie (IndexedDB) · react-router 7 · fflate · vite-plugin-pwa · Vitest · Playwright

Local-first: IndexedDB is the source of truth. No accounts, no server, no telemetry. Cloud sync/teams (per docs/sync-design.md) are future phases.

Development

npm install
npm run dev        # dev server
npm test           # unit + integration (fake-indexeddb)
npm run e2e        # Playwright smoke against the production build
npm run build      # typecheck + production build (PWA)

Docs

  • docs/prd.md — product requirements (v1.1 addendum = current positioning)
  • docs/plan.md — phased build plan
  • docs/DESIGN.md — binding design spec
  • docs/sync-design.md — future cloud sync contract
  • docs/research-2026-07.md — market research digest

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages