Remove Google Sheets mirror entirely (#13)
Test backoffice (smb-crm) / test (push) Has been cancelled

Postgres is now the sole source of truth: delete sheets.py and
import_from_sheets.py, strip mirror_entity/mirror_async/_mirror_worker and
POST /api/sync from app.py, drop the tab/mirror keys from db.py's TABLES.
Re-point n8n/renewal-reminder.json at the CRM's own HTTP API (GET
/api/clients, POST /api/activity_log) instead of the Sheets nodes, and drop
SHEET_ID/GOOGLE_SA_JSON from deploy env/compose and requests from
requirements.txt (PyJWT stays — still used by booking_api.py). Updates
docs/README/playbooks accordingly and closes the old #5 (atomic mirror) as
moot.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-04 11:29:57 +02:00
parent 16500c4392
commit 319218ce21
18 changed files with 76 additions and 451 deletions
+3 -6
View File
@@ -2,9 +2,8 @@
A productized service that gets local small businesses online: **landing page + online
booking + lead capture + small automations**. Built to be **thoroughly tracked and logged**
every client, lead, booking and invoice lives in a **Postgres CRM** (source of truth), driven by
**n8n** on the homelab, with a one-way mirror into Google Sheets for a human-readable overview /
Looker Studio dashboard.
every client, lead, booking and invoice lives in a **Postgres CRM** (sole source of truth),
driven by **n8n** on the homelab.
> Full documentation (architecture, data model, every component): **`Documentation.md`**.
@@ -29,7 +28,6 @@ deploy/
backup/ Daily Postgres backup script (cron on the homelab)
n8n/ Exported n8n workflows (lead-intake, onboarding, booking-sync, renewal-reminder)
playbooks/ Operator playbooks (outreach, lead-to-customer, tier-a, tier-b)
sheets/SCHEMA.md Google Sheets mirror spec (tabs + columns) — downstream of Postgres
templates/landing/ Landing-page demos + client preview pages
demo-tier-a/ "Schnittpunkt" barbershop demo
demo-tier-b/ "PhysioVital" physio practice demo
@@ -65,8 +63,7 @@ Tracked against actual repo state — see `Documentation.md` for what backs each
- [x] **Phase 1** — Demo landing pages
- [x] **Phase 2** — Accounts & setup: Google account + workbook, n8n live, Google creds bound,
Vaultwarden (`clients.vault_ref`), domain (wildcard `*.mivanchenko.de`)
- [x] **Phase 3** — CRM (now Postgres-first, Sheets mirrored) + n8n lead-intake & renewal
workflows — Looker Studio dashboard itself lives in Google and isn't repo-verifiable
- [x] **Phase 3** — CRM (Postgres-only, no Sheets mirror) + n8n lead-intake & renewal workflows
- [x] **Phase 4** — Demo forms + booking wired live to n8n webhooks (lead-intake, booking-sync)
- [ ] **Phase 5** — First real client + reception v1 — onboarding automation and per-client
deploy tooling exist and are exercised (`deploy/clients/`); not verifiable from the repo