Architecture de BWEB

Vue d'ensemble

"Vous connaissez 4D ? Vous connaissez BWEB."

BWEB est un composant 4D qui permet de construire des applications web complètes (sites publics, back-offices, portails clients) entièrement depuis une base 4D, sans écrire de HTML/CSS/JS manuellement.

Les pages sont stockées comme données structurées dans les tables 4D. Le framework lit ces données, génère du HTML + Tailwind CSS à la volée, et le sert au navigateur.

Les 4 piliers

PilierDescription
Composant 4DTables, méthodes, classes. S'ajoute à tout projet 4D existant.
Tailwind CSSCSS utility-first. Design moderne et responsive out of the box.
Éditeur WYSIWYGDrag and drop. Aperçu instantané. Le Dev Panel.
ORDA natifConnexion directe aux DataClasses. Pas de REST, pas d'API intermédiaire.

Architecture technique

Le serveur 4D génère le HTML complet. Le navigateur reçoit une page prête à l'emploi. Les interactions passent par POST + WebSocket.

Navigateur (Client)Serveur 4D
HTML + Tailwind CSSWebSocket
HTTP
POST
BSPK_WEB_ON_CONNECTION (routeur principal)
bweb.js (framework JS)Tables : BSPK_WEB_DOMAIN, BSPK_WEB_DOMAIN_MENU, BSPK_WEB_CONTENT
Bootstrap IconsMoteur : WebFormController, Générateur CSS Tailwind, BSPK_Translate (i18n)

Rendu serveur vs client

BWEB a fait le choix du rendu serveur (SSR) plutôt que du rendu client (React/Vue). Pourquoi ?

CaractéristiqueReactBWEB
Compétences requises4D + React + TypeScript4D uniquement
Licence4D REST requise4D Web suffisant
SécuritéLe client décideLe serveur décide
Blocs protégésCachés en CSSAbsents du HTML
ÉtatClient (Redux/Zustand)Serveur (variables process)
Temps réelÀ coder soi-mêmeWebSocket intégré
Dépendances frontendnode_modules (200KB+)Aucune
"Pas autorisé à voir un bouton ? Le HTML du bouton n'existe pas."

Structure des tables

NiveauTableDescription
1BSPK_WEB_DOMAIN1 domaine = 1 site web
2BSPK_WEB_DOMAIN_MENUN pages et composants par domaine
3BSPK_WEB_CONTENTN blocs par page (arbre UI via parentUuid)

Tables de support

TableRôle
BSPK_WEB_DOMAIN_MENU_PARAMETERURLs dynamiques ({supplierId}...)
BSPK_WEB_REDIRECTRedirections 301/302
BSPK_WEB_DOMAIN_LANGLangues par domaine
BSPK_WEB_LIST / LIST_ITEMListes déroulantes
BSPK_WEB_COOKIE_CONSENTConsentement RGPD
BSPK_USER / GROUP / RIGHTUtilisateurs et permissions
BSPK_FILEFichiers et médias
BSPK_HISTORYAudit et historique

Cycle de vie d'une requête

ÉtapeActionDétail
1HTTPS forcéSi cert.pem présent, redirection automatique HTTP vers HTTPS
2Licence + SessionVérification du composant et de la session utilisateur
3Résolution URLDomaine, puis Page, puis Paramètres dynamiques
4Hook base hôteBSPH_WEB_ON_CONNECTION peut intercepter/rediriger
5Contrôle de sécuritéDroits d'accès, validation, filtrage POST
6RenduChargement des blocs, génération HTML + Tailwind, envoi au navigateur
7WebSocketÉtablissement de la connexion temps réel pour les interactions

Avantages business

  • Pas de licence REST : POST/WebSocket = serveur web 4D standard. 300K utilisateurs = différence de coût massive.
  • Zéro dépendances frontend : Pas de React, Angular, Vue. Pas de bundle 200KB+. Pas de breaking changes.
  • Entity serveur : Source unique de vérité. Pas de copie client. STAMP géré nativement par ORDA.
  • Node.js = outil serveur : Tailwind CLI, Puppeteer (PDF). Le navigateur ne reçoit que HTML + Tailwind + vanilla JS.