Web
Web Configuration
Configuration (Web)
Cette page décrit la configuration de l'application Web (environnement, runtime, API, auth, UI). Toutes les références pointent vers le code dans apps/web/.
Variables d'environnement (client)
Créer apps/web/.env avec :
VITE_SERVER_URL=http://localhost:3000
VITE_CHATBOT_URL=http://localhost:8501
VITE_BETTER_AUTH_CALLBACK_URL=http://localhost:3001/auth/callbackNotes importantes :
- Les variables préfixées
VITE_sont exposées au client. N'y placez jamais de secrets. - Ces valeurs peuvent aussi être injectées au runtime via
window.RUNTIME_ENV(voir ci-dessous).
Injection runtime (Vite)
- Fichier :
apps/web/vite.config.ts - Le plugin
runtime-envinsère un script dansindex.htmlqui définitwindow.RUNTIME_ENV:VITE_SERVER_URL,VITE_CHATBOT_URL,VITE_BETTER_AUTH_CALLBACK_URL
- Si les variables ne sont pas définies à la build, des placeholders
{{ .Env.* }}peuvent être remplacés au déploiement.
Accès unifié aux envs
- Fichier :
apps/web/src/utils/runtime-env.ts - Fonctions :
getRuntimeEnv(key, fallback): ordre de lecturewindow.RUNTIME_ENV[key]import.meta.env[key]process.env[key]
getServerUrl()etgetChatbotUrl()retournent les URLs utilisées par l'app.
Client ORPC (API du serveur)
- Fichier :
apps/web/src/utils/orpc.ts - Principes :
- Construit un
RPCLinkvers${getServerUrl()}/rpc - Ajoute
credentials: 'include'pour envoyer les cookies de session - Expose
orpc(React Query utils) etqueryClientavec gestion d'erreurs globale (toasts viasonner)
- Construit un
- Utilisation dans le routeur :
apps/web/src/routes/__root.tsxcrée le client et fournitORPCContext
Routage et garde (auth)
- Root :
apps/web/src/routes/__root.tsx- Initialise thèmes, toasts, devtools, et fournit ORPC aux enfants
- Garde d'accès :
apps/web/src/routes/(protected)/route.tsxbeforeLoad:context.orpc.getMe.call()- Redirige vers
/sign-insi l'utilisateur n'est pas authentifié
Authentification (Better Auth)
- Fichier :
apps/web/src/lib/auth-client.ts - Initialise
better-authcôté client (plugins optionnels, ex:adminClient) - L'URL de callback doit correspondre à
VITE_BETTER_AUTH_CALLBACK_URL
baseURL du client
- Le serveur monte Better Auth sous
/api/auth/**(voirapps/server/src/index.ts). - Le client doit utiliser
baseURL = ${getServerUrl()}/api/authpour appeler les bons endpoints.
Exemple :
import { createAuthClient } from "better-auth/react";
import { getServerUrl } from "@/utils/runtime-env";
export const authClient = createAuthClient({
baseURL: `${getServerUrl()}/api/auth`,
});Sans le suffixe /api/auth, les appels iront vers /sign-in/email (404 attendu). Adaptez selon votre proxy/ingress si vous réécrivez les chemins.
UI et theming
- Tailwind CSS + composants Radix
- Thèmes via
next-themes(stockage :vite-ui-theme)
Scripts et ports
- Dev (racine) :
bun run dev:web→ http://localhost:3001 - Dev (dans
apps/web/) :bun run dev - Build :
bun run build - Serve statique :
bun run serve(port 3001)
Sécurité
- Considérez toutes les variables
VITE_*comme publiques. - Le serveur doit être configuré pour CORS + cookies avec
credentials.
Kalli