Rework Lead-Aufnahmebogen: collapsible sections, dynamic roofs, photo upload, filled-only PDF + send-to-office#1
Open
Solar-TechNick wants to merge 21 commits into
Open
Conversation
Mobile-first rework: collapsible sections, dynamic roofs, photo upload (IndexedDB), filled-only PDF with photos, offline/service-worker, and a "send to office" backend payload contract. Backend leads endpoint is a separate follow-up sub-project. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…, honeypot not CSRF)
13-task frontend plan (vendored assets/PWA, schema+state, delegated rendering,
chips, collapsible sections, conditional trades, dynamic roofs, IndexedDB photos,
saved leads/JSON, filled-only PDF with photos, backend send, final QA). Spec §4/§7
corrected: send posts cross-origin to ${API_BASE}/lead.php with files[]+website
honeypot, no CSRF (matches angebot/contact).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…tion Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…white bg + EXIF for images Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…sentinel); tidy import + export filename Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ig collapse state, lifecycle resets Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Full rework of the Lead-Aufnahmebogen — the single-file field intake form a consultant fills in on a phone/tablet at the customer's home (PV / battery / heat pump / wallbox). This is the frontend sub-project; the backend
lead.phpendpoint is a separate follow-up that implements the payload contract defined here.Design spec:
docs/superpowers/specs/2026-07-09-lead-aufnahmebogen-rework-design.mdImplementation plan:
docs/superpowers/plans/2026-07-09-lead-aufnahmebogen-rework.mdWhat changed
The four requested features:
filled/totalcompletion badge.+ Dachfläche hinzufügen).Lead_<Nr>_<Nachname>_<Datum>.pdf.The full rework on top:
esc()(escapes quotes too).html2pdflocally (no CDN), site-root service worker (app-scoped, network-first for the HTML so deploys propagate, cache-first for assets) + web manifest for home-screen install.An Büro sendenPOSTsmultipart/form-datato${API_BASE}/lead.phpwithfiles[]+ honeypotwebsite(mirrors the existingangebotform; no CSRF), withpayload.photos[i]aligned 1:1 tofiles[i], send-status, and offline retry. The mailto: button is removed.Files
Lead-Aufnahmebogen.html(single self-contained file).sw.js(site root),assets/lead/(manifest, icon, vendored DM Sans woff2 + html2pdf).Verification
node --checkonsw.jsand the inline script; no CDN refs; nomailto:; no inline handlers; WCAG-AA contrast on action buttons (ratios 7.02 / 4.72 / 7.91 / 5.28). Built subagent-per-task with a spec+quality review after each task and a final whole-branch review (no Critical findings).Follow-ups (out of scope here)
lead.phpendpoint (separate sub-project) implementing the §7 payload contract..btn.unsentCSS; send-toast overlaps the save-toast.🤖 Generated with Claude Code