Date : 25/12/2025 Status : TERMINÉ
Implémentation de l'architecture hybride fichiers/Supabase+Redis pour QwikPress.
supabase/ (15 fichiers)supabase/
├── README.md
├── migrations/
│ ├── 00001_init_schema.sql
│ ├── 00002_create_sites.sql
│ ├── 00003_create_pages.sql
│ ├── 00004_create_modules.sql
│ ├── 00005_create_medias.sql
│ ├── 00006_create_functions.sql
│ └── 00007_create_policies.sql
├── seeds/
│ └── 01_default_site.sql
├── storage/
│ └── buckets.sql
└── scripts/
├── setup.sh
├── migrate.sh
├── seed.sh
├── reset.sh
├── generate-types.sh
└── migrate-from-files.ts
src/services/data/ (6 fichiers)src/services/data/
├── index.ts # Export centralisé
├── data-service.interface.ts # Interface IDataService
├── data-service.factory.ts # Factory avec switch ENV
├── file-data.service.ts # Implémentation fichiers
├── supabase-data.service.ts # Implémentation Supabase
└── redis-cache.service.ts # Service cache Redis
.env.example - Template des variables d'environnement# Aucune config nécessaire, fonctionne comme avant
DATA_MODE=file npm start
# 1. Configurer les variables
export SUPABASE_URL=https://...
export SUPABASE_SERVICE_ROLE_KEY=...
export REDIS_HOST=prod-redis.local
export DATABASE_URL=postgresql://...
# 2. Appliquer les migrations
cd supabase && ./scripts/setup.sh --with-seeds
# 3. Lancer en mode Supabase
DATA_MODE=supabase npm start
bun supabase/scripts/migrate-from-files.ts ./data mon-site-slug
| Table | Description |
|---|---|
qwikpress.sites |
Sites (multi-sites) |
qwikpress.pages |
Pages avec meta + content JSONB |
qwikpress.shared_modules |
Modules partagés |
qwikpress.medias |
Référence fichiers Storage |
| Clé | TTL | Contenu |
|---|---|---|
qwikpress:site:{slug} |
5min | Config site |
qwikpress:site:{slug}:page:{slug} |
1min | Page complète |
qwikpress:site:{slug}:nav |
5min | Navigation |
/admin/cache/invalidate pour invalidation manuelle