# monica_site Django 6.0 marketing platform for a single realtor client — a cheaper replacement for PostcardMania with added social-media automation. - **Public site** with a reCAPTCHA-protected contact form. - **Private portal** for the realtor: lead inbox + UTM/campaign analytics. - **Mailing list** with per-channel consent and easy opt-out; outreach over **email + SMS (SMTP2GO)** and **postcard** (pluggable provider, default Lob). - **Social automation** — schedule/post to Facebook, Instagram, and LinkedIn via native APIs. See [`docs/monica-site-design.md`](docs/monica-site-design.md) for the full architecture, data model, folder layout, deployment, and phased implementation plan. ## Stack - Django 6.0, Python 3.12 - Postgres (production), SQLite (local fallback) - Redis + Celery/Beat for background jobs (sends, scheduled posts) - `uv` package manager - Docker; deployed via the `server-infra` Ansible pipeline onto active/active hosts behind Nginx Proxy Manager (same pattern as `company_site`) ## Status Design/planning phase. Implementation follows the phases in the design doc: 0. Scaffolding & deploy skeleton 1. Public site + contact form + leads + UTM 2. Mailing list + email/SMS outreach + opt-out 3. Postcards 4. Social automation 5. Hardening & polish ## Local development (planned) Once scaffolded: ```bash uv sync docker compose up # web + postgres + redis uv run python manage.py migrate uv run python manage.py runserver ``` ## Deployment CI on merge to `main` runs tests, then calls `server-infra/scripts/deploy.sh --app monica_site --env prod --ref `. Requires a `monica_site` entry in the `server-infra` `app_catalog`, a reserved host port pair, a shared-Postgres database, Redis, and a control-node secret env file. Details in the design doc.