Module lib/ - Bibliothèques et Utilitaires
Le module lib/ contient les bibliothèques réutilisables et utilitaires du frontend.
Fichiers :
Vue d’ensemble :
Fichier |
Description |
Dépendances |
|---|---|---|
|
Client HTTP REST avec JWT |
svelte-i18n |
|
Interfaces TypeScript (Building, Owner, Unit, Expense, etc.) |
Aucune |
|
Configuration internationalisation |
svelte-i18n |
|
Service synchronisation offline |
db.ts, api.ts |
|
Configuration runtime (API_URL) |
Aucune |
|
Client IndexedDB (stockage local) |
Aucune |
Flux de Données :
config.ts → API_URL
↓
api.ts → apiFetch() → Backend REST API
↓
types.ts → Building, Owner, etc.
↓
sync.ts → SyncService → db.ts (IndexedDB)
↓
Components Svelte
Principes de Design :
Séparation des Préoccupations :
config.ts: Configuration pureapi.ts: Communication HTTPsync.ts: Logique offlinetypes.ts: Contrats de données
Runtime Configuration :
Configuration injectable au déploiement sans rebuild (GitOps-friendly).
Progressive Enhancement :
Fonctionnalités offline optionnelles, dégradation gracieuse.
Type Safety :
Types TypeScript stricts pour toutes les entités du domaine.
Exemple d’Utilisation :
// Component Svelte
import { api } from '../lib/api';
import type { Building } from '../lib/types';
async function loadBuildings() {
const response = await api.get<PageResponse<Building>>('/buildings');
return response.data;
}
async function createBuilding(data: Partial<Building>) {
const building = await api.post<Building>('/buildings', data);
return building;
}