Proposition : QwikPress + Chat IA Augmenté + Connectors Index
Date : 22/01/2026 23:29 (màj 23:55)
Priorité : HAUTE
Status : EN VALIDATION
Vision globale
Trois projets interconnectés formant un écosystème complet :
┌─────────────────────────────────────────────────────────────────────────────┐
│ ÉCOSYSTÈME │
│ │
│ ┌─────────────────┐ ┌─────────────────────┐ │
│ │ QWIKPRESS │ │ CHAT IA │ │
│ │ CMS/Sites │◄────────────────────────────►│ AUGMENTÉ │ │
│ │ (Qwik SSR) │ peut intégrer │ (Standalone) │ │
│ └─────────────────┘ └──────────┬──────────┘ │
│ │ │
│ ┌─────────────────────────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ CONNECTORS INDEX │ │
│ │ Hub universel de connecteurs │ │
│ │ │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ Gmail │ │ Slack │ │Telegram │ │ ntfy │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │o2switch │ │ OVH │ │LinkedIn │ │ Discord │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
BACKLOG 1 : QwikPress Finalisation
Contexte
QwikPress est un CMS/Générateur de sites modulaire basé sur Qwik avec SSR et resumability.
État actuel :
- ✅ CI/CD Smart-Deploy fonctionnel (pipelines 249-253)
- ✅ 2 instances déployées : main (Supabase) + file-mode (JSON)
- ✅ Containers healthy
- ✅ 12+ modules visuels disponibles
- ✅ Interface admin
- ✅ Double stockage (local/Supabase)
- ❌ 404 sur / (pas de contenu dans Supabase)
- ❌ Layouts non implémentés
- ❌ SEO basique
URLs :
Tâches
Phase 1 : Fonctionnel (Priorité CRITIQUE)
| ID |
Tâche |
Description |
Critère de succès |
| QP-1 |
Données Supabase |
Créer page home + config dans schema qwikpress |
/ retourne 200 avec contenu |
| QP-2 |
Migration données démo |
Importer STORAGE/data/* vers Supabase |
Pages contact, documentation visibles |
| QP-3 |
Test admin complet |
CRUD pages, modules, config via /admin |
Toutes opérations fonctionnent |
| QP-4 |
Pages erreur |
404 et 500 personnalisées avec design |
Erreurs affichent pages custom |
Phase 2 : Features (Priorité HAUTE)
| ID |
Tâche |
Description |
Critère de succès |
| QP-5 |
Layouts |
Header/footer persistants configurables |
Layout s'applique à toutes pages |
| QP-6 |
Gestion médias |
Upload, galerie, sélection dans modules |
Upload fonctionne, médias utilisables |
| QP-7 |
SEO complet |
Meta tags dynamiques, sitemap.xml, robots.txt |
Lighthouse SEO > 90 |
| QP-8 |
Preview mode |
Voir changements avant publication |
Bouton preview dans admin |
| QP-9 |
Thèmes |
Dark/light mode, couleurs configurables |
Switch theme fonctionne |
Phase 3 : Robustesse (Priorité MOYENNE)
| ID |
Tâche |
Description |
Critère de succès |
| QP-10 |
Tests E2E |
Tests Playwright pour admin |
Tests passent en CI |
| QP-11 |
Documentation |
Guide utilisateur complet |
README + /docs dans repo |
| QP-12 |
Performance |
Cache, lazy loading, optimisations |
Core Web Vitals verts |
BACKLOG 2 : Chat IA Augmenté (Standalone)
Concept
Un outil de conversation intelligent qui affiche des modules dynamiques JSX à la volée, offrant une expérience utilisateur infinie, précise et adaptée.
Principes clés :
- Standalone : Projet indépendant, utilisable partout
- JSX + Resumability : Basé sur Qwik pour sérialisation du code (server-first)
- Modules dynamiques : L'IA décide quel composant afficher selon le contexte
- Connecteurs : S'appuie sur Connectors Index pour les données
Architecture technique
┌─────────────────────────────────────────────────────────────────────────────┐
│ CHAT IA AUGMENTÉ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ CONVERSATION │ │
│ │ │ │
│ │ User: "Montre-moi mes derniers emails importants" │ │
│ │ │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ 📧 MODULE: Email Inbox (résumé IA) │ │ │
│ │ │ ┌──────────────────────────────────────────────────────┐ │ │ │
│ │ │ │ ⭐ OVH - Facture février (23€) il y a 2h │ │ │ │
│ │ │ │ ⭐ GitHub - Security alert il y a 5h │ │ │ │
│ │ │ │ Newsletter Tech - ignoré hier │ │ │ │
│ │ │ └──────────────────────────────────────────────────────┘ │ │ │
│ │ │ [📖 Lire] [🗑️ Archiver] [↩️ Répondre avec IA] │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ IA: "Tu as 2 emails importants. La facture OVH est due le 28. │ │
│ │ L'alerte GitHub concerne une dépendance npm vulnérable. │ │
│ │ Veux-tu que je traite l'alerte ?" │ │
│ │ │ │
│ │ User: "Oui, montre-moi les détails et propose un fix" │ │
│ │ │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ 🔒 MODULE: Security Alert Details │ │ │
│ │ │ Package: lodash 4.17.15 → CVE-2021-23337 │ │ │
│ │ │ Severity: HIGH | Affected: 3 repos │ │ │
│ │ │ ┌──────────────────────────────────────────────────────┐ │ │ │
│ │ │ │ Fix suggéré: │ │ │ │
│ │ │ │ npm update lodash@4.17.21 │ │ │ │
│ │ │ └──────────────────────────────────────────────────────┘ │ │ │
│ │ │ [🔧 Appliquer fix] [📋 Copier commande] [⏭️ Ignorer] │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
Stack technique
chat-ia-augmente/ # Projet Qwik standalone
├── src/
│ ├── core/
│ │ ├── ChatEngine.ts # Moteur de conversation
│ │ ├── IntentParser.ts # Détection intention (via LLM)
│ │ ├── ModuleResolver.ts # Choix du module à afficher
│ │ ├── ContextManager.ts # Gestion contexte conversation
│ │ └── ActionExecutor.ts # Exécution des actions user
│ │
│ ├── modules/ # Modules JSX resumables
│ │ ├── base/
│ │ │ ├── ModuleInterface.ts # Interface commune
│ │ │ └── ModuleRegistry.ts # Registre des modules
│ │ │
│ │ ├── data/
│ │ │ ├── TableModule.tsx # Tableaux de données
│ │ │ ├── ChartModule.tsx # Graphiques (Chart.js)
│ │ │ ├── StatsModule.tsx # Stats/KPIs
│ │ │ └── ListModule.tsx # Listes avec actions
│ │ │
│ │ ├── communication/
│ │ │ ├── InboxModule.tsx # Emails/messages
│ │ │ ├── NotificationModule.tsx # Notifications
│ │ │ └── ChatPreviewModule.tsx # Preview conversations
│ │ │
│ │ ├── forms/
│ │ │ ├── FormModule.tsx # Formulaires dynamiques
│ │ │ ├── ConfigModule.tsx # Configuration
│ │ │ └── EditorModule.tsx # Éditeur de texte/code
│ │ │
│ │ └── actions/
│ │ ├── ConfirmModule.tsx # Confirmation action
│ │ ├── ProgressModule.tsx # Progression tâche
│ │ └── ResultModule.tsx # Résultat action
│ │
│ ├── ai/
│ │ ├── OllamaClient.ts # Client ai-orchestrator
│ │ ├── Summarizer.ts # Résumé de contenu
│ │ ├── Responder.ts # Génération réponses
│ │ └── Classifier.ts # Classification intents
│ │
│ ├── connectors/
│ │ └── ConnectorsClient.ts # Client Connectors Index API
│ │
│ ├── routes/
│ │ ├── index.tsx # Page principale chat
│ │ └── api/ # API endpoints
│ │
│ └── components/
│ ├── ChatInterface.tsx # Interface conversation
│ ├── MessageBubble.tsx # Bulle de message
│ ├── ModuleContainer.tsx # Container pour modules
│ └── ActionBar.tsx # Barre d'actions
│
├── conf.prod.gouroubleu.yml # Config Smart-Deploy
└── package.json
Tâches
Phase 1 : Core (Priorité CRITIQUE)
| ID |
Tâche |
Description |
Critère de succès |
| CIA-1 |
Setup projet |
Projet Qwik + CI/CD Smart-Deploy |
Build et deploy fonctionnent |
| CIA-2 |
ChatEngine |
Moteur conversation + historique |
Conversation persiste |
| CIA-3 |
IntentParser |
Détection intention via Ollama |
Intentions détectées correctement |
| CIA-4 |
ModuleResolver |
Logique choix module |
Module approprié s'affiche |
| CIA-5 |
ChatInterface |
UI conversation de base |
Chat utilisable |
Phase 2 : Modules de base (Priorité HAUTE)
| ID |
Tâche |
Description |
Critère de succès |
| CIA-6 |
ModuleInterface |
Interface + Registry |
Modules enregistrables |
| CIA-7 |
TableModule |
Affichage données tabulaires |
Tableaux avec tri/filtre |
| CIA-8 |
StatsModule |
KPIs et métriques |
Stats s'affichent |
| CIA-9 |
InboxModule |
Liste emails/messages |
Inbox avec actions |
| CIA-10 |
ListModule |
Listes avec actions |
Actions exécutables |
| CIA-11 |
FormModule |
Formulaires dynamiques |
Forms générés et soumis |
Phase 3 : IA (Priorité HAUTE)
| ID |
Tâche |
Description |
Critère de succès |
| CIA-12 |
OllamaClient |
Client ai-orchestrator |
Requêtes LLM fonctionnent |
| CIA-13 |
Summarizer |
Résumé de contenu long |
Résumés pertinents |
| CIA-14 |
Responder |
Génération réponses contextuelles |
Réponses naturelles |
| CIA-15 |
ActionExecutor |
Exécution actions via Connectors |
Actions s'exécutent |
Phase 4 : Intégration (Priorité MOYENNE)
| ID |
Tâche |
Description |
Critère de succès |
| CIA-16 |
ConnectorsClient |
Client API Connectors Index |
Données récupérées |
| CIA-17 |
ChartModule |
Graphiques dynamiques |
Charts générés |
| CIA-18 |
ConfirmModule |
Confirmation avant action |
Confirm fonctionne |
| CIA-19 |
ProgressModule |
Suivi tâches longues |
Progress affiché |
| CIA-20 |
Thème + Polish |
Dark mode, animations |
UX fluide |
BACKLOG 3 : Connectors Index
Concept
Un hub universel de connecteurs - style Zapier/n8n mais UNIQUEMENT la couche connecteurs.
Objectif : Fournir une API unifiée pour se connecter à n'importe quel service externe.
Status : Probablement open source plus tard.
État actuel
| Projet |
Port |
Connecteurs |
Status |
| connectors-api |
5400 |
LinkedIn OAuth |
✅ Déployé |
| browser-connector |
5401 |
LinkedIn, Gmail (Playwright) |
✅ Déployé |
Connecteurs prioritaires
Ordonnés par utilité immédiate :
| Priorité |
Service |
Type |
Usage |
| 1 |
Gmail |
OAuth + Browser |
Emails, notifications |
| 2 |
Slack |
OAuth + Bot |
Communication équipe |
| 3 |
Telegram |
Bot API |
Notifications, commandes |
| 4 |
ntfy |
API |
Notifications push |
| 5 |
o2switch |
API |
Hébergement, DNS |
| 6 |
OVH |
API |
Cloud, domaines |
| 7 |
LinkedIn |
OAuth + Browser |
Existant, compléter |
| 8 |
Discord |
OAuth + Bot |
Communauté |
| 9 |
GitHub |
OAuth + API |
Repos, issues, PRs |
| 10 |
Notion |
OAuth |
Documentation |
Architecture
connectors-index/
├── core/
│ ├── ConnectorRegistry.ts # Registre des connecteurs
│ ├── ConnectorInterface.ts # Interface standard
│ ├── AuthManager.ts # OAuth / API Key / Browser
│ ├── ActionExecutor.ts # Exécution actions
│ └── RateLimiter.ts # Rate limiting par service
│
├── connectors/
│ ├── communication/
│ │ ├── gmail/
│ │ │ ├── oauth.ts # Google OAuth
│ │ │ ├── browser.ts # Playwright (existant)
│ │ │ ├── actions.ts # inbox, send, search, labels
│ │ │ └── config.json
│ │ ├── slack/
│ │ │ ├── oauth.ts # Slack OAuth
│ │ │ ├── bot.ts # Bot integration
│ │ │ └── actions.ts # send, channels, users
│ │ ├── telegram/
│ │ │ ├── bot.ts # Bot API
│ │ │ └── actions.ts # send, commands, groups
│ │ └── discord/
│ │ ├── oauth.ts
│ │ ├── bot.ts
│ │ └── actions.ts
│ │
│ ├── notifications/
│ │ └── ntfy/
│ │ ├── api.ts # API ntfy
│ │ └── actions.ts # publish, subscribe
│ │
│ ├── hosting/
│ │ ├── o2switch/
│ │ │ ├── api.ts # API o2switch
│ │ │ └── actions.ts # files, databases, dns
│ │ └── ovh/
│ │ ├── api.ts # OVH API
│ │ └── actions.ts # domains, cloud, dns
│ │
│ ├── social/
│ │ └── linkedin/
│ │ ├── oauth.ts # Existant
│ │ ├── browser.ts # Existant
│ │ └── actions.ts # profile, post, messages, connections
│ │
│ └── dev/
│ ├── github/
│ │ ├── oauth.ts
│ │ └── actions.ts # repos, issues, prs, actions
│ └── notion/
│ ├── oauth.ts
│ └── actions.ts # pages, databases, blocks
│
├── browser/
│ ├── BrowserPool.ts # Pool Playwright
│ ├── SessionManager.ts # Sessions persistantes
│ └── ProxyManager.ts # Rotation proxies
│
├── storage/
│ ├── TokenStore.ts # Redis/Supabase
│ └── SessionStore.ts # Sessions browser
│
├── api/
│ ├── index.ts # Elysia server
│ ├── routes/
│ │ ├── connectors.ts # CRUD connecteurs
│ │ ├── auth.ts # OAuth flows
│ │ └── actions.ts # Exécution actions
│ └── middleware/
│ ├── auth.ts # API auth
│ └── rateLimit.ts # Rate limiting
│
└── sdk/ # Pour intégration externe
└── typescript/
├── client.ts
└── types.ts
Interface Standard
// Interface que chaque connecteur implémente
interface Connector {
id: string; // 'gmail', 'slack', etc.
name: string; // 'Gmail'
category: ConnectorCategory; // 'communication', 'hosting', etc.
icon: string; // URL ou emoji
authTypes: AuthType[]; // ['oauth', 'browser']
// Capacités
actions: ConnectorAction[];
// Méthodes
connect(config: AuthConfig): Promise<ConnectionResult>;
disconnect(userId: string): Promise<void>;
getStatus(userId: string): Promise<ConnectionStatus>;
execute(action: string, params: ActionParams): Promise<ActionResult>;
// Optionnel
refreshToken?(userId: string): Promise<void>;
getWebhookHandler?(): WebhookHandler;
}
interface ConnectorAction {
id: string; // 'send_email'
name: string; // 'Envoyer un email'
description: string;
category: 'read' | 'write' | 'admin';
params: ActionParam[];
returns: ActionReturn;
rateLimit?: number; // req/min
requiresAuth: boolean;
authTypes: AuthType[]; // Quels types d'auth supportent cette action
}
type AuthType = 'oauth' | 'api_key' | 'browser' | 'bot';
type ConnectorCategory = 'communication' | 'notifications' | 'hosting' | 'social' | 'dev';
API Unifiée
# Lister tous les connecteurs disponibles
GET /api/connectors
→ [{ id: 'gmail', name: 'Gmail', status: 'connected', actions: [...] }, ...]
# Status d'un connecteur pour un user
GET /api/connectors/{connector}/status
→ { connected: true, authType: 'oauth', expiresAt: '...', scopes: [...] }
# Connexion (initie OAuth ou autre)
POST /api/connectors/{connector}/connect
Body: { authType: 'oauth', redirectUri: '...' }
→ { authUrl: 'https://...' } ou { success: true }
# Callback OAuth
GET /api/connectors/{connector}/callback?code=...&state=...
→ { success: true, tokens: {...} }
# Déconnexion
POST /api/connectors/{connector}/disconnect
→ { success: true }
# Lister les actions disponibles
GET /api/connectors/{connector}/actions
→ [{ id: 'send_email', name: 'Envoyer un email', params: [...] }, ...]
# Exécuter une action
POST /api/connectors/{connector}/actions/{action}
Body: { to: 'user@example.com', subject: 'Hello', body: '...' }
→ { success: true, result: {...} }
Tâches
Phase 1 : Refactoring (Priorité CRITIQUE)
| ID |
Tâche |
Description |
Critère de succès |
| CI-1 |
Architecture |
Setup nouveau projet + core interfaces |
Structure créée |
| CI-2 |
Migration LinkedIn |
Porter code existant vers nouvelle structure |
LinkedIn fonctionne |
| CI-3 |
Migration Gmail Browser |
Porter code existant |
Gmail browser fonctionne |
| CI-4 |
API Unifiée |
Routes REST standardisées |
Endpoints accessibles |
| CI-5 |
TokenStore |
Stockage tokens Redis/Supabase |
Tokens persistés |
Phase 2 : Connecteurs Communication (Priorité HAUTE)
| ID |
Tâche |
Description |
Critère de succès |
| CI-6 |
Gmail OAuth |
Google OAuth + API |
OAuth flow complet |
| CI-7 |
Slack |
OAuth + Bot + actions |
Messages envoyés |
| CI-8 |
Telegram |
Bot API + commandes |
Bot répond |
| CI-9 |
ntfy |
API publish/subscribe |
Notifications reçues |
Phase 3 : Connecteurs Hosting (Priorité HAUTE)
| ID |
Tâche |
Description |
Critère de succès |
| CI-10 |
o2switch |
API cPanel/custom |
Fichiers uploadés |
| CI-11 |
OVH |
API OVH |
Domaines listés |
Phase 4 : Connecteurs Dev/Social (Priorité MOYENNE)
| ID |
Tâche |
Description |
Critère de succès |
| CI-12 |
GitHub |
OAuth + API |
Repos listés |
| CI-13 |
Discord |
OAuth + Bot |
Bot connecté |
| CI-14 |
Notion |
OAuth + API |
Pages accessibles |
| CI-15 |
LinkedIn complet |
Toutes actions |
Actions fonctionnent |
Phase 5 : Polish (Priorité MOYENNE)
| ID |
Tâche |
Description |
Critère de succès |
| CI-16 |
Dashboard |
UI gestion connexions |
Interface fonctionnelle |
| CI-17 |
SDK TypeScript |
Package npm |
Import et utilisation OK |
| CI-18 |
Documentation |
README + API docs |
Docs complètes |
| CI-19 |
Tests |
Tests unitaires + E2E |
Coverage > 70% |
Dépendances entre projets
┌─────────────────┐
│ CONNECTORS │
│ INDEX │◄──────────────────────────────┐
└────────┬────────┘ │
│ fournit données │
▼ │
┌─────────────────┐ ┌──────────┴──────────┐
│ CHAT IA │ │ QWIKPRESS │
│ AUGMENTÉ │───peut s'intégrer─►│ (CMS) │
└─────────────────┘ └─────────────────────┘
Ordre de développement recommandé :
- Connectors Index (Phase 1-2) → Base de données/services
- Chat IA (Phase 1-2) → Utilise les connecteurs
- QwikPress (Phase 1-2) → Peut intégrer le chat
- Itération parallèle sur les 3 projets
Résumé des estimations
| Backlog |
Phases critiques |
Phases totales |
Estimation |
| QwikPress |
4 tâches |
12 tâches |
~25h |
| Chat IA Augmenté |
5 tâches |
20 tâches |
~45h |
| Connectors Index |
5 tâches |
19 tâches |
~50h |
| TOTAL |
14 tâches |
51 tâches |
~120h |
Validation
- [ ] Backlog 1 (QwikPress) : Complet et validé
- [ ] Backlog 2 (Chat IA Augmenté) : Complet et validé
- [ ] Backlog 3 (Connectors Index) : Complet et validé
- [ ] Ordre de priorité confirmé
- [ ] Prêt à démarrer
En attente de validation finale.