Date : 28/12/2025 Status : EN ATTENTE VALIDATION Priorité : Haute
Deux versions du projet existent avec des différences importantes :
qwikpress) : Version Rhinov avec ancien pattern authqwikpress-github) : Version avec plugins Qwik modernesL'objectif est de créer une version template générique prête à l'emploi.
| Fichier | GitHub | GitLab |
|---|---|---|
plugin@auth.ts |
Existe (87 lignes) | N'existe pas |
plugin@data.ts |
Existe (43 lignes) | N'existe pas |
services/auth.ts |
N'existe pas | Existe (169 lignes, 5+ try/catch) |
api/auth/login |
Version plugin | Version service |
Décision : Adopter l'architecture GitHub (plugins Qwik)
src/services/connectors-admin.ts:219: 'User-Agent': 'Rhinov-AutoSite-Test/1.0'
src/routes/admin/context-binding/demo/index.tsx:338: title: 'Démo Context Binding - Admin Rhinov'
src/routes/admin/config/backup/index.tsx:14-15: 'rhinov', 'backup' / 'rhinov', 'data'
src/types/connectors.ts:3: Architecture des connecteurs pour Rhinov Auto-Site
src/types/context-binding.ts:167,219: example: 'Rhinov'
+ exemples dans les types de modules
Décision : Remplacer par variables d'environnement / config
Total : 342 try/catch dans le code source.
Selon les règles Qwik (CLAUDE.md) :
AUCUN try/catch dans routeAction$ ou server$ Qwik a ses propres mécanismes d'erreur
Décision : Supprimer les try/catch inutiles, centraliser la gestion d'erreurs
src/modules/
├── jordan-* # 5 modules (client Jordan)
├── wil-* # 5 modules (client Wil)
├── romain-* # 4 modules (client Romain)
├── nova-* # 2 modules (client Nova)
├── lp-* # 5 modules (landing pages spécifiques)
└── génériques # hero, cta, testimonials, etc.
Décision :
Copier les plugins :
src/routes/plugin@auth.tssrc/routes/plugin@data.tsSupprimer l'ancien service :
src/services/auth.tsMettre à jour les imports :
api/auth/login/index.ts : utiliser sharedMapsharedMap.get('isAdmin')Synchroniser les différences :
middleware/logging.tsplugins/connectors-plugin.tsplugins/connectors.tsroutes/admin/config/authentication/index.tsxCréer variables d'environnement :
APP_NAME=QwikPress
APP_USER_AGENT=QwikPress/1.0
DATA_DIR=data
BACKUP_DIR=backup
Remplacer les hardcodes :
// Avant
'User-Agent': 'Rhinov-AutoSite-Test/1.0'
// Après
'User-Agent': process.env.APP_USER_AGENT || 'QwikPress/1.0'
Nettoyer les chemins :
// Avant
join(process.cwd(), 'rhinov', 'backup')
// Après
join(process.cwd(), process.env.DATA_DIR || 'data', 'backup')
Mettre à jour CLAUDE.md :
Identifier les catégories :
Créer un error handler global :
// src/utils/error-handler.ts
export function handleError(error: unknown, context: string): never {
console.error(`[${context}]`, error);
throw error; // Laisse Qwik gérer
}
Nettoyer fichier par fichier (priorité aux routes et server$)
Option A - Version light :
Option B - Version complète :
README.md complet :
Données de démo :
data/config.json génériquedata/pages/ avec pages d'exempleScripts de setup :
./scripts/init.sh my-site-name
# Crée la structure, configure les variables
src/routes/plugin@auth.ts (depuis GitHub)src/routes/plugin@data.ts (depuis GitHub)src/utils/error-handler.ts.env.example (compléter)scripts/init.shsrc/services/auth.tsdata/CLAUDE.md (renommer projet)package.json (nom, description)| Phase | Effort |
|---|---|
| Phase 1 : Fusion plugins | ~1h |
| Phase 2 : Généralisation | ~2h |
| Phase 3 : Try/catch | ~3-4h |
| Phase 4 : Modules | ~1h (option A) |
| Phase 5 : Documentation | ~1h |
| Total | ~8-9h |
Pour valider : "OK pour la refacto" ou "modifie [point]"