MallaDocs

Vue d’ensemble de l’architecture

Les Workers, les stockages de données et les six principes sur lesquels repose toute la plateforme.

Guide développeur

Malla est un monorepo Turborepo composé de six Workers Cloudflare et d'un ensemble de packages partagés. Tout tourne sur Cloudflare : Workers, Durable Objects, R2, KV, Queues, Workflows et Hyperdrive devant Neon Postgres.

text
                      ┌── Cloudflare for SaaS (customer domains + SSL)
visitor ──► sites Worker ──── KV (host → site, publish id)
                │              R2 (snapshots, compiled CSS, assets)
                │              Cache API (rendered pages)
                └─ /api/*, /_auth/* ──► runner Worker ── SiteDatabase DO (tables, visitors)

editor ──► web Worker (Nuxt) ──► api Worker (Hono) ── Hyperdrive ──► Neon Postgres
   │                               ├─ R2 (uploads)   ├─ AI Gateway
   ├─► canvas frames (sandboxed)   └─► sites (publish), runner (test runs)
   └─► realtime Worker: Durable Object per page (Yjs + presence)

Les Workers

webL'éditeur Nuxt et les pages marketing. Relaie /api/** vers l'api via une liaison de service (service binding).
apiAPI REST Hono : authentification, sites, pages, CMS, formulaires, intégrations, facturation, domaines, IA.
realtimeUn Durable Object par page : synchronisation Yjs, présence, points de sauvegarde dans Postgres.
sitesPublie les instantanés et sert chaque site publié, chaque formulaire et chaque requête client.
runnerWorkflows serveur, crons, exécutions durables, tables natives et authentification des visiteurs.
mcpLe serveur MCP pour les agents, authentifié avec les clés d'API de l'espace de travail.

Six principes

  1. Un seul format de document partout. Les pages, les composants et la zone de brouillon du canevas partagent la forme PageDoc.
  2. Un seul moteur de rendu. Le canevas et le site publié exécutent le même @malla/renderer : ce que vous voyez est ce qui est mis en ligne.
  3. Un seul moteur de workflows. Les workflows client et serveur partagent un format JSON et @malla/engine, avec des adaptateurs différents.
  4. Les fonctions intégrées sont des plugins. REST, GraphQL et le CMS utilisent le même SDK de plugins que tous les autres connecteurs maison.
  5. Jamais d'eval sur une saisie utilisateur. Les expressions sont interprétées à partir d'un AST ; le code personnalisé tourne dans des isolats.
  6. Les secrets n'atteignent jamais le navigateur. Les appels authentifiés aux intégrations passent par un proxy côté serveur.

D'un geste à la base de données

GesteUn glisser-déposer, la modification d'un champ, un appel d'outil par l'IA.
OpsDes opérations typées et validées.
YjsAppliquées au Y.Doc, annulables.
SalleSynchronisées via le Durable Object de la page.
PostgresSauvegardées sous forme de JSON + état Yjs.

Voir Le document de page et Temps réel.

Où vivent les données

DonnéesStockage
Utilisateurs, espaces de travail, sites, pages, CMS, formulaires, intégrations, workflows, facturationNeon Postgres (Drizzle, via Hyperdrive)
Documents de page en direct et journaux de modificationsSQLite du Durable Object de chaque page, sauvegardé dans Postgres
Tables natives, visiteurs, sessions, soumissions de formulairesDurable Object SiteDatabase par site
Ressources téléversées, instantanés publiés, pages renduesR2
Routage des hôtes, workflows serveur publiés, cache des droits d'utilisationKV
Consommation et statistiquesAnalytics Engine

Packages partagés

PackageRôle
@malla/schemaTypes et schémas Zod : PageDoc, ops, styles, données, workflows, CMS, tables, forfaits
@malla/exprAnalyseur et interpréteur d'expressions, fonctions intégrées et métadonnées d'autocomplétion
@malla/engineMoteur de workflows et registre d'actions pour le navigateur et le serveur
@malla/rendererDocument → HTML/CSS, runtime des cadres du canevas, interactions
@malla/runtimeLe runtime d'îlots que chargent les sites publiés pour les liaisons, les formulaires et les workflows
@malla/publishPublication des instantanés et rendu à la demande
@malla/ydocCorrespondance Yjs des documents
@malla/plugin-sdk, @malla/pluginsDéfinitions de plugins et plugins maison : REST, GraphQL, CMS, Postgres, Supabase, Airtable, Google Sheets, Resend, Anthropic et OpenAI
@malla/bundleLots de site (bundles) pour les modèles, les sections et la copie entre sites
@malla/ai-toolsSchémas des outils IA et MCP, compilés en ops
@malla/db, @malla/auth-tokenSchéma Drizzle et migrations ; jetons signés entre Workers