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

1
frontend/node_modules/ts-algebra/lib/utils/and.d.ts generated vendored Normal file
View File

@@ -0,0 +1 @@
export declare type And<BOOL_A, BOOL_B> = BOOL_A extends true ? BOOL_B extends true ? true : false : false;

1
frontend/node_modules/ts-algebra/lib/utils/and.js generated vendored Normal file
View File

@@ -0,0 +1 @@
export {};

View File

@@ -0,0 +1,5 @@
export declare type DoesExtend<TYPE_A, TYPE_B> = [TYPE_A] extends [TYPE_B] ? true : false;
declare type ArrayKeys = keyof [];
export declare type IsObject<TYPE> = TYPE extends object ? ArrayKeys extends Extract<keyof TYPE, ArrayKeys> ? false : true : false;
export declare type IsArray<TYPE> = TYPE extends object ? ArrayKeys extends Extract<keyof TYPE, ArrayKeys> ? true : false : false;
export {};

View File

@@ -0,0 +1 @@
export {};

1
frontend/node_modules/ts-algebra/lib/utils/if.d.ts generated vendored Normal file
View File

@@ -0,0 +1 @@
export declare type If<CONDITION extends boolean, THEN, ELSE = never> = CONDITION extends true ? THEN : ELSE;

1
frontend/node_modules/ts-algebra/lib/utils/if.js generated vendored Normal file
View File

@@ -0,0 +1 @@
export {};

12
frontend/node_modules/ts-algebra/lib/utils/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,12 @@
export type { And } from "./and";
export type { DoesExtend, IsObject, IsArray } from "./extends";
export type { If } from "./if";
export type { IntersectUnion } from "./intersectUnion";
export type { IsNever } from "./isNever";
export type { DeepMergeUnsafe } from "./merge";
export type { Not } from "./not";
export type { Or } from "./or";
export type { Prettify } from "./prettify";
export type { Tail } from "./tail";
export type { UnionLast } from "./unionLast";
export type { UnionPop } from "./unionPop";

1
frontend/node_modules/ts-algebra/lib/utils/index.js generated vendored Normal file
View File

@@ -0,0 +1 @@
export {};

View File

@@ -0,0 +1 @@
export declare type IntersectUnion<UNION> = (UNION extends unknown ? (arg: UNION) => void : never) extends (arg: infer INTERSECTION) => void ? INTERSECTION : never;

View File

@@ -0,0 +1 @@
export {};

View File

@@ -0,0 +1 @@
export declare type IsNever<TYPE> = [TYPE] extends [never] ? true : false;

View File

@@ -0,0 +1 @@
export {};

View File

@@ -0,0 +1,7 @@
import type { IsArray, IsObject } from "./extends";
export declare type DeepMergeUnsafe<TYPE_A, TYPE_B> = IsObject<TYPE_A> extends true ? IsObject<TYPE_B> extends true ? {
[KEY in keyof (TYPE_A & TYPE_B)]: KEY extends keyof TYPE_B ? KEY extends keyof TYPE_A ? DeepMergeUnsafe<TYPE_A[KEY], TYPE_B[KEY]> : TYPE_B[KEY] : KEY extends keyof TYPE_A ? TYPE_A[KEY] : never;
} : TYPE_B : IsArray<TYPE_A> extends true ? IsArray<TYPE_B> extends true ? TYPE_B extends unknown[] ? [
...(TYPE_A extends unknown[] ? TYPE_A : never),
TYPE_B
] : never : TYPE_B : TYPE_B;

1
frontend/node_modules/ts-algebra/lib/utils/merge.js generated vendored Normal file
View File

@@ -0,0 +1 @@
export {};

1
frontend/node_modules/ts-algebra/lib/utils/not.d.ts generated vendored Normal file
View File

@@ -0,0 +1 @@
export declare type Not<BOOL extends boolean> = BOOL extends false ? true : BOOL extends true ? false : never;

1
frontend/node_modules/ts-algebra/lib/utils/not.js generated vendored Normal file
View File

@@ -0,0 +1 @@
export {};

1
frontend/node_modules/ts-algebra/lib/utils/or.d.ts generated vendored Normal file
View File

@@ -0,0 +1 @@
export declare type Or<BOOL_A extends boolean, BOOL_B extends boolean> = BOOL_A extends true ? true : BOOL_B extends true ? true : false;

1
frontend/node_modules/ts-algebra/lib/utils/or.js generated vendored Normal file
View File

@@ -0,0 +1 @@
export {};

View File

@@ -0,0 +1,4 @@
import type { IsObject } from "./extends";
export declare type Prettify<TYPE> = IsObject<TYPE> extends true ? {
[KEY in keyof TYPE]: KEY extends keyof TYPE ? TYPE[KEY] : never;
} : TYPE;

View File

@@ -0,0 +1 @@
export {};

1
frontend/node_modules/ts-algebra/lib/utils/tail.d.ts generated vendored Normal file
View File

@@ -0,0 +1 @@
export declare type Tail<ARRAY extends unknown[]> = ARRAY extends readonly [] ? ARRAY : ARRAY extends readonly [unknown?, ...infer TAIL] ? TAIL : ARRAY;

1
frontend/node_modules/ts-algebra/lib/utils/tail.js generated vendored Normal file
View File

@@ -0,0 +1 @@
export {};

View File

@@ -0,0 +1,2 @@
import type { IntersectUnion } from "./intersectUnion";
export declare type UnionLast<UNION> = IntersectUnion<UNION extends unknown ? (x: UNION) => void : never> extends (x: infer LAST) => void ? LAST : never;

View File

@@ -0,0 +1 @@
export {};

View File

@@ -0,0 +1,2 @@
import type { UnionLast } from "./unionLast";
export declare type UnionPop<UNION> = Exclude<UNION, UnionLast<UNION>>;

View File

@@ -0,0 +1 @@
export {};