Preview 1 — Client logged in to status.freshvibeapps.com
What a client sees when they log in
A scoped view of their sites. No operator stuff, no other clients' projects, no admin controls. Just the deployments tied to the client(s) they belong to.
A
Acme Corp · Project dashboard
4 deployments · last checked 12s ago
jane@acmex.com
JA
Sites online
3 / 4
1 degraded
Avg latency
142 ms
p95 over last 24h
Last deploy
2h ago
oscar-web main · 4f8a2b1
Uptime (30d)
99.94%
2 incidents
oscar-web oscar-web.freshvibeapps.com
ProductionPublic
Status
● Online
Latency
98ms
Deployed
2h ago
acmex-store store.acmex.com
ProductionPublic
Status
● Online
Latency
312ms
Deployed
3d ago
oscar-web staging-oscar.acmex.com
StagingPrivate
Status
● Slow
Latency
1.4s
Deployed
15m ago
acmex-store preview-redesign.acmex.com
PreviewPrivate
Status
● Online
Latency
124ms
Deployed
1d ago
Preview 2 — Access matrix
Who sees what, exactly
The portal scopes by user → client → project → deployment. Public deployments are visible to anyone with a login. Private deployments are only visible to users whose allowed_clients list includes the deployment's owning client.
User
Public sites
Acme projects
Other clients
JA
Jane (Acme)
✓ all
✓ all
— none
MO
Mo (Acme + Oscar)
✓ all
✓ all
✓ Oscar only
RP
Rita (public only)
✓ all
—
—
??
Anonymous (no login)
✓ all
—
—
Preview 3 — Two portals, one auth
Operator panel stays for you. Client portal is for them.
Same PocketBase identity, same project data, two different UIs. You get admin controls and every project. They get a scoped view of just theirs. Both share the same health-check probes and audit log.
Operator panel · panel.freshvibeapps.com
For you and any internal users. Full controls.
See every deployment across every client
Deploy, rollback, promote, disable
Manage users, clients, allowed_subdomains
Trigger health probes, view raw metrics
Audit log with all actions
Service control, backups, vault
Client portal · status.freshvibeapps.com
For your clients. Read-only, scoped to their stuff.
See only deployments tied to their client(s)
Status (up/down/degraded) and latency
Last deploy time + commit SHA + GitHub link
Uptime history (sparkline)
Per-site incident log (read-only)
"Notify me on incident" toggle
Preview 4 — How health works
One probe runner, every site checked
A cron every 5 minutes hits each registered deployment's subdomain with a HEAD request, records status code + latency. The probe runner lives on the VPS, not on a third-party service. Cheap. Predictable. No data leaks.
Probed every 5 min · Probes HEAD / with 5s timeout · Storage 100 most recent pings per deployment (panel.db)