diff --git a/TODO.md b/TODO.md index b1e5e59..f6bd3bc 100644 --- a/TODO.md +++ b/TODO.md @@ -6,24 +6,46 @@ client's site is self-hosted or runs on Google's free services) is a decision ma **between me and the client**, case by case — not something baked into a demo. Implications to work through: -- **Demos are stack-agnostic starters.** Each demo page is just an example business with - *no committed stack* — it shows what the client could get (website + booking / orders / - lead capture), not "Tier A = Google" vs "Tier B = self-hosted". Drop tier/stack labels and - jargon (self-hosted, Cal.com, Google-Stack, "≈ 0 €") from the public-facing demos & - chooser. (Chooser already reworded 2026-06-25; the demo *pages* still carry stack framing — - tier-a is Google-Kalender-themed, tier-b is self-hosted/Datenschutz-themed. Neutralise later.) -- After a client signs, **I decide hosting**: self-host the page on the homelab, or stand it +- [x] **Demos are stack-agnostic starters.** ~~Drop tier/stack labels and jargon (self-hosted, + Cal.com, Google-Stack, "≈ 0 €") from the public-facing demos & chooser.~~ DONE 2026-06-25: + chooser reworded; all three demo pages neutralised — demo bars now read "Beispielseite · So + könnte Ihr Online-Auftritt aussehen", booking widgets relabelled to generic + "Online-Terminbuchung"/"Sichere Buchung", Google-Kalender/Cal.com/self-hosted/Tier labels + removed from rendered copy *and* HTML comments, demo booking dates now render on the current + week via JS so nothing looks stale. +- [ ] After a client signs, **I decide hosting**: self-host the page on the homelab, or stand it up on the client's free Google account. The CRM already has `tier` + `stack_notes` columns to record that decision per client. -- Revisit the `Clients.tier` field semantics: keep A/B as an internal effort/price band, or +- [ ] Revisit the `Clients.tier` field semantics: keep A/B as an internal effort/price band, or replace with something hosting-agnostic (e.g. `hosting = google | selfhosted`, `plan = …`). -- Onboarding form + workflow currently ask for Tier A/B — realign once the model is settled. +- [ ] Onboarding form + workflow currently ask for Tier A/B — realign once the model is settled. + +## Onboard dashboard → manage Leads & Clients (CRUD) +The operator onboarding page (https://onboard.mivanchenko.de) currently only **creates** records. +Extend it into a small back-office where I can **read, edit, delete and add** both Leads and +Clients directly: +- [ ] **Read:** pull and list the current `Leads` and `Clients` rows (via n8n webhook → Sheets + `values.get`, or Sheets API) in a clean table on the onboard page. +- [ ] **Add:** new Lead / new Client manually (Clients add already exists via the onboarding form; + add a lighter "new lead" form too). +- [ ] **Edit:** update a row in place (e.g. change a lead's status, fix a client's fee/renewal). +- [ ] **Delete:** cleanly remove a row (Sheets `deleteDimension`), so test/junk rows don't pile up + — replaces the current scratchpad `del_rows.py`/`del_lead.py` manual cleanup. +- [ ] Stays behind the existing Caddy basic-auth (operator-only; these are billable/CRM records). +- [ ] Needs new n8n webhooks (list/update/delete) keyed by `lead_id` / `client_id`. ## Other -- Harden n8n auth: compose still has deprecated `N8N_BASIC_AUTH_*` with password `password` +- [ ] Harden n8n auth: compose still has deprecated `N8N_BASIC_AUTH_*` with password `password` (legacy/ignored by modern n8n owner-login). Confirm the owner account is strong; remove the dead env. -- Orders: the pizzeria demo posts orders into the `Leads` tab via the lead-intake webhook as a +- [ ] Orders: the pizzeria demo posts orders into the `Leads` tab via the lead-intake webhook as a stop-gap. Build a proper **Orders** flow + sheet tab (items, total, mode, status) when the order-management product is real. -- Booking-sync workflow (Tier-B Cal.com webhook + Tier-A Google Calendar poll) — next up. +- [ ] Booking-sync workflow (Tier-B Cal.com webhook + Tier-A Google Calendar poll). + +## Done +- [x] 2026-06-25 — Latency fix (n8n executions 1–4 min → ~6 s; DNS + PostHog telemetry). +- [x] 2026-06-25 — Chooser reworded to client-friendly, jargon-free copy. +- [x] 2026-06-25 — Pizzeria demo with online ordering added. +- [x] 2026-06-25 — Barbershop "Google Kalender" dot-overlap styling fixed. +- [x] 2026-06-25 — All three demo pages neutralised (stack-agnostic, non-stale dates). diff --git a/templates/landing/demo-pizzeria/index.html b/templates/landing/demo-pizzeria/index.html index 4e85dea..a6b64b4 100644 --- a/templates/landing/demo-pizzeria/index.html +++ b/templates/landing/demo-pizzeria/index.html @@ -130,7 +130,7 @@
- +Demo-Vorschau. In der Live-Version wird hier der echte Google-Kalender-Terminplan eingebettet.
+Demo-Vorschau. In der Live-Version buchen Ihre Kund:innen hier rund um die Uhr selbst einen freien Termin — mit sofortiger Bestätigung.
Schreib uns kurz — wir melden uns am selben Tag.
- +