Per-user pages get fact rows from /api/stats/me and /api/stats/managed and
aggregate client-side; the site overview is aggregated by /api/admin/stats.
Items that need new data are tracked as TODOs in docs/statistics.md.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Poll for file changes (Vite, watchfiles) since host bind mounts don't deliver events
- Limit uvicorn reload to the app directory
- Dev nginx config re-resolves container names per request to avoid 502 after restarts
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- GET /api/admin/orders (site admins only): orders with owner email and submission count
- ensure_owner_access also grants confirmed ADMIN_EMAILS users, so admins can manage/delete any order
- Order table with search (title/email), icon actions (inspect, manage, delete), no horizontal scroll
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Tabs inside one card, selected tab remembered across reloads
- Register and refresh buttons in the card header
- Table stats (count / selected) below each table
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Users and Registration links tabs
- Active, used and expired links in one filterable table
- Register-new-user popover and refresh button in the card header
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Admin API (/api/admin/users, registration links) guarded by require_site_admin:
confirmed profile email must be in ADMIN_EMAILS, checked server-side
- Block unverified switches to an admin email (PUT /me/profile, X-User-Email)
- Users table with registration date, activity counters, resend and delete
- Create, view (active/previous) and delete registration links
- user_profiles.created_at column with backfill
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
nginx defaults to 1 MB, so pasted screenshots failed with 413 and the order
was created without its image.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Notifications tab (create and admin view) to manage webhooks, event texts
and custom notifications
- Notification center card on the admin page for manual notifications
- Export restricted to order admins, optionally including notifications
- Payment details editable on existing orders (menu stays read-only)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Order admins can configure webhooks per order (admin-only endpoints, stored
next to the other per-order files and removed with the order). Preset events:
order created/closed/opened, last call and delivery started, with
customizable texts. Admins can define custom notifications and send manual
ones through POST /admin/notifications/send.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>