System Pages
Not found, server error, maintenance, consent, and toasts: the app's connective tissue.
System pages
The cross-cutting states owned by no cluster: not found, server error, maintenance, the consent banner, and toasts.
Recommendations
- Not found and server error keep the chrome where possible and always offer a way back to Home; a true server 404/500 gets a minimal standalone template.
- No full-app maintenance page at MVP: sync-provider outages are per-source (needs-reauth, sync-error), not whole-app downtime.
- The consent banner is [?], tied to whether PostHog sets a non-essential cookie and the deferred EU review (D5).
- Toasts are non-blocking, auto-dismissing, one action max, distinct from blocking dialogs.
Nodes 9.1 to 9.5
9.1 Not found (in-app)
- P"We could not find that."
- S"The page may have moved, or the link may be old."
- P"Back to my list" → Home
9.2 Server error
- P"Something went wrong on our side."
- S"This is usually temporary."
- P"Refresh" and "Back to Home"
9.4 Consent banner
- PPlain statement of what is set and why [? pending cookie decision]
- P"Accept" and "Only essential", equal choices
- SLink to the privacy explanation
9.5 Toasts
- P"Subscription added."
- P"Removed." with "Undo"
- S"Couldn't refresh, showing your last update."
| State | Reads like | Trigger |
|---|---|---|
| 9.1 not-found | Calm heading plus "Back to my list", chrome intact | Unknown in-app route |
| 9.2 server-error | Standalone minimal template, Refresh / Home | Hard load or backend failure |
| 9.3 maintenance | Not built | n/a at MVP |
| 9.4 consent | Conditional banner | [? only if a non-essential cookie is set] |
| 9.5 toast | "Added", "Saved", "Removed / Undo" | A routine action |
Mockups
The page may have moved, or the link may be old.
Back to my listThis is usually temporary.
RefreshBack to HomeRemoved.
UndoCouldn't refresh, showing your last update.
SEO, Accessibility, Mobile
SEO. In-app not-found is noindex; a true server 404 returns a real 404 status. No schema.
Accessibility. Headings are the focus target; the server-error template does not depend on app JS; toasts use role=status, undo is reachable for the toast lifetime; the consent banner does not trap and offers equal choices.
Mobile. No structural delta; toasts anchor above the tab bar on mobile, to a corner on desktop.
Locked (draft, 2026-07-03) / Open
Locked. Calm not-found and server error with a way home; no maintenance page at MVP; toasts non-blocking and distinct from dialogs.
Still [?]. The consent banner, pending the PostHog cookie decision and the deferred EU review.