- docs/where-woof-flow.mmd (flowchart) + PNG/SVG renders - docs/diagrams/where-woof-flow.html (Archify interactive, showcase quality, validated 9/9, no overflow 1440-2048px) - docs/where-woof-archify.json spec + ARCHITECTURE.md maps section - Published to maps.lab.audasmedia.com.au/where_woof/docs/ (secret-scan skip: SVG color hex false positive)
32 lines
1.1 KiB
Plaintext
32 lines
1.1 KiB
Plaintext
flowchart LR
|
|
subgraph Public["where-woof.com — public"]
|
|
U[Finder\nscans QR/NFC] --> T["GET /t/:code\npublic tag page"]
|
|
T -->|geolocation + fingerprint| SCAN["POST /t/:code/scan"]
|
|
T -->|finders number| FB["POST /t/:code/contact"]
|
|
O[Order /order\nStripe Payment Link] --> BUY[Stripe Checkout]
|
|
C[Contact /contact] --> MAIL[SMTP SES]
|
|
end
|
|
|
|
subgraph Core["Go frontend .13:3020"]
|
|
SCAN --> GATE{"shouldAlert\ngates"}
|
|
GATE -->|paid sub + SMS pool + caps| REC[record scan]
|
|
GATE -->|pass| SMS[SMSGlobal HTTP]
|
|
FB -->|dedupe| SMS2[SMSGlobal HTTP]
|
|
end
|
|
|
|
subgraph Admin["admin.where-woof.com — Laravel/Filament .13:3031"]
|
|
A[Staff manage\nusers/tags/orders/plans] --> PG
|
|
WH["POST /webhooks/stripe"] -->|events| ORD[orders.status + tag transitions]
|
|
end
|
|
|
|
subgraph Data["Postgres .13:5434"]
|
|
PG[(wherewoof DB\nusers tags scans\norders plans billing_events)]
|
|
end
|
|
|
|
SMS -->|SMS alert + map link| OWNER[Owner phone]
|
|
SMS2 -->|finder number| OWNER2[Owner phone]
|
|
BUY -->|"checkout.session.completed"| WH
|
|
MAIL -->|"hello@where-woof.com"| INBOX[Inbox]
|
|
REC --> PG
|
|
PG --> A
|
|
PG --> ORD |