- Delete old Vite+Svelte frontend - Initialize new SvelteKit project with TypeScript - Configure Tailwind CSS v4 + DaisyUI - Implement JWT authentication with auto-refresh - Create login page with form validation (Zod) - Add protected route guards - Update Docker configuration for single-stage build - Add E2E tests with Playwright (6/11 passing) - Fix Svelte 5 reactivity with $state() runes Known issues: - 5 E2E tests failing (timing/async issues) - Token refresh implementation needs debugging - Validation error display timing
29 lines
958 B
Markdown
29 lines
958 B
Markdown
# Page snapshot
|
|
|
|
```yaml
|
|
- generic [ref=e3]:
|
|
- navigation [ref=e4]:
|
|
- link "Headroom" [ref=e6] [cursor=pointer]:
|
|
- /url: /
|
|
- link "Login" [ref=e8] [cursor=pointer]:
|
|
- /url: /login
|
|
- main [ref=e9]:
|
|
- generic [ref=e12]:
|
|
- heading "Welcome to Headroom" [level=1] [ref=e13]
|
|
- paragraph [ref=e14]: Sign in to access your dashboard
|
|
- generic [ref=e15]:
|
|
- generic [ref=e16]:
|
|
- generic [ref=e17]: Email
|
|
- textbox "Email" [active] [ref=e18]:
|
|
- /placeholder: admin@example.com
|
|
- text: not-an-email
|
|
- generic [ref=e19]:
|
|
- generic [ref=e20]: Password
|
|
- textbox "Password" [ref=e21]:
|
|
- /placeholder: ••••••••
|
|
- text: password123
|
|
- button "Login" [ref=e22]
|
|
- generic [ref=e23]:
|
|
- paragraph [ref=e24]: "Demo credentials:"
|
|
- paragraph [ref=e25]: admin@example.com / password
|
|
``` |