From ac809ee2c82808527c288aa648a2a09275c0da46 Mon Sep 17 00:00:00 2001 From: Sam Rolfe Date: Tue, 1 Sep 2026 13:09:08 +1000 Subject: [PATCH] sam-4screen-desktop 2026-9-1:13:9:8 --- .obsidian/workspace.json | 4 +-- 200 projects/240 Web Sites/Where Woof.md | 41 ++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 200 projects/240 Web Sites/Where Woof.md diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 89fc807..c329e77 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -210,8 +210,9 @@ "templater-obsidian:Templater": false } }, - "active": "b0724d9a8e78110f", + "active": "8018aa52f0591df9", "lastOpenFiles": [ + "200 projects/240 Web Sites/Where Woof.md", "300 areas/380 Social Politics Economics Issues/Chinese Non Silicon Micro Chip.md", "200 projects/220 Web Host Migration/Backup Action Plan — Close the Gaps + Restore.md", "200 projects/220 Web Host Migration/Cloudflare Record Set — audasmedia.com.au.md", @@ -237,7 +238,6 @@ "200 projects/220 Web Host Migration/Phase 1 — AWS Offsite Backup.md", "200 projects/220 Web Host Migration/Phase 0 — Pre-flight.md", "200 projects/220 Web Host Migration/Migration Plan — InMotion to Local + AWS Offsite.md", - "300 areas/360 Dev-Ops Network Computers/Backup Health Check Commands.md", "000 daily/ThinkPad Recommendations", "500 archive/510 Daily", "300 areas/305 Ideas Businesses", diff --git a/200 projects/240 Web Sites/Where Woof.md b/200 projects/240 Web Sites/Where Woof.md new file mode 100644 index 0000000..ee9b2e1 --- /dev/null +++ b/200 projects/240 Web Sites/Where Woof.md @@ -0,0 +1,41 @@ +# Where Woof + +> Return-tag platform: QR/NFC tags on valuables; finder scans → owner gets SMS with map link. Go + HTMX frontend, Laravel/Filament admin, shared Postgres. + +## Project state (2026-08-28) + +**Live:** frontend `where-woof.com` (.13:3020) · admin `admin.where-woof.com` (.13:3031) + +**Phases done:** foundation, scan flow (real SMS via SMSGlobal), hardening, HTMX polish, admin, deploy, **billing (Phase 5)** — account-based annual sub. + +## Billing model (locked with owner) + +- **Account = the product**: $10/yr flat, up to **25 tags**, **50 SMS/yr included**; extra SMS $0.10 each (100-credit pack = $10). +- **Tags one-time**: single **$5 + GST** ($5.50), 10-pack **$20 + GST** ($22.00). Cost ~$1 to make. +- **Replacement tags**: new SKU $5 one-time, annual sub continues untouched. Move mechanic already built (source→closed, unset target→active). +- **Business/public-info model deferred** (scan-volume tiers, no SMS) — `plans.plan_type='business'` reserved. +- Sandbox-first: Stripe test mode verified e2e; live keys pending onboarding. + +## Stack / infra + +- Frontend: Go `net/http`, sqlc/pgx, HTMX/Alpine/Tailwind. Admin: Laravel 13 + Filament 3 + Cashier 16 (Stripe AU). +- Shared Postgres on .13:5434 (`wherewoof`), schema canonical in `db/schema.sql`. +- Deploy: per-file `rsync --checksum` to .13 + systemd/docker restart. Gitea `sam/where_woof`. +- SMS: SMSGlobal HTTP API (`SMS_USER/PASSWORD/FROM`) — **live creds are set on .13**. +- Email: Gmail SMTP → samuelrolfe@gmail.com (app password, env-only). hello@where-woof.com = public contact (Cloudflare/SES planned). + +## Promo (2026-08-28) + +- `/order` page with Stripe Payment Links (test mode): single 1–25 qty, 10-pack 1–2. +- Red banner across all pages: "Protect & recover your valuables — ORDER NOW". +- Contact form → Gmail SMTP. + +## Gotchas + +- Laravel login: `User::$authPasswordName = 'password_hash'` (Laravel 13 rehash-on-login writes the wrong column otherwise). +- Cashier: Managed Payments requires `tax_code` → `txcd_10103001` (SaaS) is eligible. +- curl `-F "phone=%2B..."` stores literal `%2B` — use real `+`. + +## Links + +- [[210 AI Resume]] · [[220 Web Host Migration]] · [[240 Web Sites]] \ No newline at end of file