feat: refactor frontend routing and authentication

- Changed root div ID from 'root' to 'app' in index.html.
- Updated package.json to include new dependencies for routing and state management.
- Removed App component and replaced it with a router setup in main.tsx.
- Added route definitions for login, about, and index pages.
- Implemented authentication logic using Zustand for state management.
- Created API client with Axios for handling requests and token management.
- Added CORS support in the backend API.
- Updated schema for login requests to use camelCase.
This commit is contained in:
2025-11-16 00:36:30 +01:00
parent f7a839b11a
commit 252491bd2f
19 changed files with 655 additions and 27 deletions

View File

@@ -0,0 +1,29 @@
import { create } from 'zustand'
import { createJSONStorage, persist } from 'zustand/middleware'
import type { User } from "@/domain/types"
type AuthState = {
token: string | null
user: User | null
setToken: (token: string, user: User) => void
clearToken: () => void
}
/**
* Global store for authentication state (token and user).
* Persisted to localStorage.
*/
export const useAuthStorage = create<AuthState>()(
persist(
(set) => ({
token: null,
user: null,
setToken: (token, user) => set({ token, user }),
clearToken: () => set({ token: null, user: null }),
}),
{
name: 'auth-storage',
storage: createJSONStorage(() => localStorage),
},
),
)