319218ce21
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>
18 lines
825 B
Bash
18 lines
825 B
Bash
# Copy to .env on the host and fill in. .env and secrets/ are gitignored.
|
|
DB_PASSWORD=change-me-strong
|
|
CRM_API_TOKEN=change-me-long-random
|
|
BOOKING_TOKEN_SECRET=change-me-long-random-too
|
|
# Owner-login session cookie signing key (#19). Dedicated secret -- rotating
|
|
# it just logs owners out, without touching CRM_API_TOKEN/BOOKING_TOKEN_SECRET.
|
|
SESSION_SECRET_KEY=change-me-long-random-session-too
|
|
# Booking confirmation email (#18). Left blank, sending is skipped (logged,
|
|
# not fatal) -- mail relay setup is a separate infra/triage item.
|
|
SMTP_HOST=
|
|
SMTP_PORT=587
|
|
SMTP_USERNAME=
|
|
SMTP_PASSWORD=
|
|
# Used as the From address when a client has no domain configured.
|
|
MAIL_FALLBACK_FROM=noreply@mivanchenko.de
|
|
# Base URL the manage-booking link in the confirmation email is built from.
|
|
PUBLIC_BASE_URL=https://onboard.mivanchenko.de
|