Commit Graph

3 Commits

Author SHA1 Message Date
Randy Fischer e86aa5bae2 Store photos as native Blobs instead of base64 data URLs
IndexedDB stores Blobs via structured clone, eliminating the ~33% base64
overhead and avoiding a round-trip through FileReader on every capture.

- photoService.js: capture pushes { blob: file } directly; render sets img.src
  via URL.createObjectURL(p.blob); openLightbox/closeLightbox revoke blob URLs.
- db.js: drop JSON.parse(JSON.stringify(...)) clone which stripped Blobs;
  IndexedDB put() performs structured clone internally.
- exportService.js: download p.blob directly.
- utils.js: remove readFileAsDataUrl and dataUrlToBlob (both unused).
2026-04-15 15:40:09 +02:00
Randy Fischer 776bd6366d Add PWA-ready MVP: split HTML/CSS/JS + DDD layering + service worker
- public/index.html: markup-only entry, classic <script> tags, no inline styles/handlers.
- public/css/: base, overview, form, modals, install, responsive stylesheets.
- public/js/: namespace bootstrap + main wiring (event handlers, init).
- public/manifest.webmanifest + icons/icon.svg + sw.js: installable, offline app shell.
- src/Domain: sectionMap, scoring, orderParser (pure, no I/O).
- src/Application: state, persistence, screens, inspection form, order overview,
  photo service, XML import, export, PWA registration, install screen.
- src/Infrastructure: IndexedDB, geolocation, utils, seed CSV, CSV upload parser.

Runs from file:// (PWA gated off) and from http(s)/localhost (PWA fully active).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 15:25:38 +02:00
Randy Fischer 367bbca688 Initial repo scaffold on develop
Baseline: .gitignore, README, empty _docs/. App code follows in a feature branch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 15:24:55 +02:00