API (apps/api/src/routes/admin.ts):
- GET /api/admin/me, /event, /uploads, /stats
- PATCH /api/admin/event for live config edits
- POST /api/admin/uploads/:id/{approve,reject}
- DELETE /api/admin/uploads/:id (also removes the object from R2)
- ZIP export and bulk import remain as 501 for the next iteration
Web (apps/web/src/routes/admin/Dashboard.tsx):
- Single-page dashboard with stats cards, event config form,
filterable uploads grid (all/pending/approved/rejected) with
per-card approve/reject/delete, infinite "load more", and a
PDF QR shortcut in the footer.
- Logout via Cloudflare Access /cdn-cgi/access/logout.
Shared (packages/shared/src/schemas.ts):
- New zod schemas for AdminUpload, AdminUploadsResponse, AdminStats
so the client and server agree on the admin payload shape.
https://claude.ai/code/session_01TPBqgcSJMppgrpiq7fLywL
|
||
|---|---|---|
| .. | ||
| src | ||
| .dev.vars.example | ||
| index.html | ||
| package.json | ||
| postcss.config.js | ||
| tailwind.config.ts | ||
| tsconfig.json | ||
| vite.config.ts | ||
| wrangler.toml | ||