Files
Classeo/frontend/vite.config.ts
Mathias STRASSER 1fd256346a feat: Infrastructure multi-tenant avec isolation par sous-domaine
Une application SaaS éducative nécessite une séparation stricte des données
entre établissements scolaires. L'architecture multi-tenant par sous-domaine
(ecole-alpha.classeo.local) permet cette isolation tout en utilisant une
base de code unique.

Le choix d'une résolution basée sur les sous-domaines plutôt que sur des
headers ou tokens facilite le routage au niveau infrastructure (reverse proxy)
et offre une UX plus naturelle où chaque école accède à "son" URL dédiée.
2026-01-31 01:03:35 +01:00

77 lines
1.6 KiB
TypeScript

import { sveltekit } from '@sveltejs/kit/vite';
import { SvelteKitPWA } from '@vite-pwa/sveltekit';
import { defineConfig } from 'vitest/config';
export default defineConfig({
plugins: [
sveltekit(),
SvelteKitPWA({
srcDir: 'src',
mode: 'development',
strategies: 'generateSW',
scope: '/',
base: '/',
manifest: {
name: 'Classeo',
short_name: 'Classeo',
description: 'Application de gestion scolaire',
theme_color: '#3b82f6',
background_color: '#ffffff',
display: 'standalone',
start_url: '/',
icons: [
{
src: 'pwa-192x192.png',
sizes: '192x192',
type: 'image/png'
},
{
src: 'pwa-512x512.png',
sizes: '512x512',
type: 'image/png'
},
{
src: 'pwa-512x512.png',
sizes: '512x512',
type: 'image/png',
purpose: 'any maskable'
}
]
},
workbox: {
globPatterns: ['**/*.{js,css,html,ico,png,svg,webp,woff,woff2}']
},
devOptions: {
enabled: false,
type: 'module',
navigateFallback: '/'
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
}) as any
],
test: {
include: ['src/**/*.{test,spec}.{js,ts}', 'tests/**/*.{test,spec}.{js,ts}'],
globals: true,
environment: 'jsdom',
server: {
deps: {
inline: [/svelte/]
}
},
alias: {
$lib: '/src/lib',
$app: '/node_modules/@sveltejs/kit/src/runtime/app'
}
},
resolve: {
conditions: ['browser']
},
server: {
host: '0.0.0.0',
port: 5173,
strictPort: true,
// Autorise les sous-domaines pour le multi-tenant (dev + prod)
allowedHosts: ['.classeo.local', '.classeo.fr', 'localhost']
}
});