Install jsPDF, add generate-pdf.ts with customer-facing PDF layout, wire PDF button in ticket detail to generate and auto-upload.
Sets up the admin frontend with login page, auth guard, API client, Zustand auth store, and all shadcn/ui components. Vite proxies /v1 to backend in dev.