sam-4screen-desktop 2026-9-1:13:9:8
This commit is contained in:
4
.obsidian/workspace.json
vendored
4
.obsidian/workspace.json
vendored
@@ -210,8 +210,9 @@
|
|||||||
"templater-obsidian:Templater": false
|
"templater-obsidian:Templater": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "b0724d9a8e78110f",
|
"active": "8018aa52f0591df9",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
|
"200 projects/240 Web Sites/Where Woof.md",
|
||||||
"300 areas/380 Social Politics Economics Issues/Chinese Non Silicon Micro Chip.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/Backup Action Plan — Close the Gaps + Restore.md",
|
||||||
"200 projects/220 Web Host Migration/Cloudflare Record Set — audasmedia.com.au.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 1 — AWS Offsite Backup.md",
|
||||||
"200 projects/220 Web Host Migration/Phase 0 — Pre-flight.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",
|
"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",
|
"000 daily/ThinkPad Recommendations",
|
||||||
"500 archive/510 Daily",
|
"500 archive/510 Daily",
|
||||||
"300 areas/305 Ideas Businesses",
|
"300 areas/305 Ideas Businesses",
|
||||||
|
|||||||
41
200 projects/240 Web Sites/Where Woof.md
Normal file
41
200 projects/240 Web Sites/Where Woof.md
Normal file
@@ -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]]
|
||||||
Reference in New Issue
Block a user