feat: Reinitialize frontend with SvelteKit and TypeScript

- 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
This commit is contained in:
2026-02-17 16:19:59 -05:00
parent 54df6018f5
commit de2d83092e
28274 changed files with 3816354 additions and 90 deletions

View File

@@ -0,0 +1,8 @@
export const index = 0;
let component_cache;
export const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js')).default;
export const imports = ["_app/immutable/nodes/0.qcGNqz4K.js","_app/immutable/chunks/pJd4F_Tq.js","_app/immutable/chunks/CCV2x70u.js","_app/immutable/chunks/BgHfHpED.js","_app/immutable/chunks/CrZRXG6z.js","_app/immutable/chunks/Bx__7-vK.js","_app/immutable/chunks/CC5oASRR.js","_app/immutable/chunks/BG30BmlR.js","_app/immutable/chunks/JkAhLmb1.js","_app/immutable/chunks/DBDqKY8A.js"];
export const stylesheets = [];
export const fonts = [];

View File

@@ -0,0 +1,8 @@
export const index = 1;
let component_cache;
export const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js')).default;
export const imports = ["_app/immutable/nodes/1.Do3BgeC5.js","_app/immutable/chunks/pJd4F_Tq.js","_app/immutable/chunks/CCV2x70u.js","_app/immutable/chunks/BgHfHpED.js","_app/immutable/chunks/Bx__7-vK.js","_app/immutable/chunks/DBDqKY8A.js"];
export const stylesheets = [];
export const fonts = [];

View File

@@ -0,0 +1,10 @@
import * as universal from '../entries/pages/dashboard/_layout.ts.js';
export const index = 2;
let component_cache;
export const component = async () => component_cache ??= (await import('../entries/fallbacks/layout.svelte.js')).default;
export { universal };
export const universal_id = "src/routes/dashboard/+layout.ts";
export const imports = ["_app/immutable/nodes/2.xkr5w2RY.js","_app/immutable/chunks/DBDqKY8A.js","_app/immutable/chunks/CCV2x70u.js","_app/immutable/chunks/CrZRXG6z.js","_app/immutable/chunks/pJd4F_Tq.js","_app/immutable/chunks/BG30BmlR.js"];
export const stylesheets = [];
export const fonts = [];

View File

@@ -0,0 +1,8 @@
export const index = 3;
let component_cache;
export const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js')).default;
export const imports = ["_app/immutable/nodes/3.Ga_cDZpk.js","_app/immutable/chunks/pJd4F_Tq.js","_app/immutable/chunks/CCV2x70u.js","_app/immutable/chunks/BgHfHpED.js","_app/immutable/chunks/JkAhLmb1.js","_app/immutable/chunks/DBDqKY8A.js","_app/immutable/chunks/CrZRXG6z.js"];
export const stylesheets = [];
export const fonts = [];

View File

@@ -0,0 +1,8 @@
export const index = 4;
let component_cache;
export const component = async () => component_cache ??= (await import('../entries/pages/dashboard/_page.svelte.js')).default;
export const imports = ["_app/immutable/nodes/4.Dd_eVbye.js","_app/immutable/chunks/pJd4F_Tq.js","_app/immutable/chunks/CCV2x70u.js","_app/immutable/chunks/BgHfHpED.js","_app/immutable/chunks/Bx__7-vK.js","_app/immutable/chunks/CC5oASRR.js","_app/immutable/chunks/BG30BmlR.js","_app/immutable/chunks/DhYTxIvM.js","_app/immutable/chunks/JkAhLmb1.js","_app/immutable/chunks/CrZRXG6z.js","_app/immutable/chunks/DBDqKY8A.js"];
export const stylesheets = [];
export const fonts = [];

View File

@@ -0,0 +1,12 @@
export const index = 5;
let component_cache;
export const component = async () => component_cache ??= (await import('../entries/pages/login/_page.svelte.js')).default;
export const universal = {
"ssr": false
};
export const universal_id = "src/routes/login/+page.ts";
export const imports = ["_app/immutable/nodes/5.CW4-UM09.js","_app/immutable/chunks/pJd4F_Tq.js","_app/immutable/chunks/CCV2x70u.js","_app/immutable/chunks/BgHfHpED.js","_app/immutable/chunks/DhYTxIvM.js","_app/immutable/chunks/JkAhLmb1.js","_app/immutable/chunks/DBDqKY8A.js","_app/immutable/chunks/Bx__7-vK.js","_app/immutable/chunks/CC5oASRR.js","_app/immutable/chunks/BG30BmlR.js","_app/immutable/chunks/C62USj72.js","_app/immutable/chunks/CrZRXG6z.js"];
export const stylesheets = [];
export const fonts = [];