33800 Docs

← Retour

QwikPress v2 - Implémentation Complète

Date : 29/12/2024 Projet : /home/gouroubleu/WS/qwikpress-gitlab sur vscode.local Status : TERMINÉ


Résumé

Implémentation complète de l'architecture v2 de QwikPress avec :


Fichiers créés

Types

src/types/
├── auto-data.ts      # PageTreeNode, AutoData, CurrentPageContext
├── data-catcher.ts   # DataCatcher, TransformConfig, CacheConfig
├── layout.ts         # Layout, ZoneConfig, ResolvedLayout
└── hot-module.ts     # HotModule, ServerContext, SandboxOptions

Services

src/services/
├── auto-data/
│   └── index.ts              # buildAutoData(), getAutoData()
├── data-catchers/
│   ├── index.ts              # Exports
│   ├── graph.ts              # buildDependencyGraph(), validateGraph()
│   ├── executor.ts           # executeGraph(), applyTransform()
│   ├── resolver.ts           # resolveDataCatchers(), getDataContext()
│   └── connector-bridge.ts   # createConnectorBridge()
├── layouts/
│   ├── index.ts              # Exports
│   └── resolver.ts           # resolveLayouts(), findMatchingLayouts()
├── hot-modules/
│   ├── index.ts              # Exports
│   ├── sandbox.ts            # executeServerCode(), validateCode()
│   └── renderer.ts           # renderHotModule()
└── storage/
    └── storage-extension.ts  # load/save Catchers, Layouts, HotModules

Routes Admin

src/routes/admin/
├── catchers/index.tsx        # Liste des Data Catchers
├── layouts/index.tsx         # Liste des Layouts (arborescence)
└── hot-modules/
    ├── index.tsx             # Liste Hot Modules (tabs)
    └── [id]/index.tsx        # Éditeur avec Monaco

Composants

src/components/admin/
└── code-editor/index.tsx     # CodeEditor + SimpleCodeEditor

Storage

STORAGE/data/
├── catchers/
│   └── example-products.json
├── layouts/
│   ├── root.json
│   └── docs.json
└── hot-modules/
    └── custom-banner.json

Architecture

Plugin Flow (plugin@data.ts)

1. Storage      → sharedMap.set('storage')
2. Config       → sharedMap.set('config')
3. Auto Data    → sharedMap.set('auto')
4. Layouts      → sharedMap.set('layout')

Data Catchers Flow

Connecteurs → Data Catchers → Modules
     ↓              ↓            ↓
  APIs          DAG Graph    Composants
               Parallel Exec

Layouts Flow

/           → Layout A (root)
/docs       → Layout A + B (héritage)
/docs/api   → Layout A + B + C

Hot Modules Flow

Admin Editor → Save JSON → Load at Runtime
     ↓             ↓             ↓
  Monaco      STORAGE/data    VM Sandbox
              hot-modules/    + iframe

Accès

URLs dev

Credentials admin


Commandes

# Démarrer dev local
ssh gouroubleu@vscode.local "cd /home/gouroubleu/WS/qwikpress-gitlab && ~/.bun/bin/bun run dev:local"

# Démarrer dev supabase
ssh gouroubleu@vscode.local "cd /home/gouroubleu/WS/qwikpress-gitlab && ~/.bun/bin/bun run dev:supabase"

# Build
ssh gouroubleu@vscode.local "cd /home/gouroubleu/WS/qwikpress-gitlab && ~/.bun/bin/bun run build"

# Logs
ssh gouroubleu@vscode.local "tail -50 /tmp/qwikpress-local.log"

Prochaines étapes

  1. Connecter catchers aux connecteurs - Le bridge est prêt, à intégrer dans le plugin
  2. Storage Supabase - Tables pour catchers, layouts, hot-modules
  3. Tests - Unit tests pour les services
  4. Production - Déployer sur prod-portainer