Architecture Technique

Architecture de BWEB
Vue d'ensemble
"Vous connaissez 4D ? Vous connaissez BWEB."
BWEB est un composant 4D qui permet de construire des applications web completes (sites publics, back-offices, portails clients) entièrement depuis une base 4D, sans ecrire de HTML/CSS/JS manuellement.
Les pages sont stockees comme données structurees dans les tables 4D. Le framework lit ces données, généré du HTML + Tailwind CSS à la volee, et le sert au navigateur.
Les 4 piliers
| Pilier | Description |
|---|---|
| Composant 4D | Tables, méthodes, classes. S'ajoute a tout projet 4D existant. |
| Tailwind CSS | CSS utility-first. Design moderne et responsive out of the box. |
| Editeur WYSIWYG | Drag and drop. Aperçu instantane. Le Dev Panel. |
| ORDA natif | Connexion directe aux DataClasses. Pas de REST, pas d'API intermediaire. |
Architecture technique
Le serveur 4D généré le HTML complet. Le navigateur recoit une page prete à l'emploi. Les interactions passent par POST + WebSocket.
| Navigateur (Client) | Serveur 4D | |||
|---|---|---|---|---|
| HTML + Tailwind CSS | WebSocket HTTP POST | BSPK_WEB_ON_CONNECTION (routeur principal) | ||
| bweb.js (framework JS) | Tables : BSPK_WEB_DOMAIN, BSPK_WEB_DOMAIN_MENU, BSPK_WEB_CONTENT | |||
| Bootstrap Icons | Moteur : WebFormController, Generateur CSS Tailwind, BSPK_Translate (i18n) | |||
Rendu serveur vs client
BWEB a fait le choix du rendu serveur (SSR) plutot que du rendu client (React/Vue). Pourquoi ?
| Caracteristique | React | BWEB |
|---|---|---|
| Competences requises | 4D + React + TypeScript | 4D uniquement |
| Licence | 4D REST requise | 4D Web suffisant |
| Sécurité | Le client decide | Le serveur decide |
| Blocs proteges | Caches en CSS | Absents du HTML |
| Etat | Client (Redux/Zustand) | Serveur (variables process) |
| Temps reel | A coder soi-meme | WebSocket intégré |
| Dependances frontend | node_modules (200KB+) | Aucune |
"Pas autorise a voir un bouton ? Le HTML du bouton n'existe pas."
Structure des tables
| Niveau | Table | Description |
|---|---|---|
| 1 | BSPK_WEB_DOMAIN | 1 domaine = 1 site web |
| 2 | BSPK_WEB_DOMAIN_MENU | N pages et composants par domaine |
| 3 | BSPK_WEB_CONTENT | N blocs par page (arbre UI via parentUuid) |
Tables de support
| Table | Role |
|---|---|
| BSPK_WEB_DOMAIN_MENU_PARAMETER | URLs dynamiques ({supplierId}...) |
| BSPK_WEB_REDIRECT | Redirections 301/302 |
| BSPK_WEB_DOMAIN_LANG | Langues par domaine |
| BSPK_WEB_LIST / LIST_ITEM | Listes deroulantes |
| BSPK_WEB_COOKIE_CONSENT | Consentement RGPD |
| BSPK_USER / GROUP / RIGHT | Utilisateurs et permissions |
| BSPK_FILE | Fichiers et medias |
| BSPK_HISTORY | Audit et historique |
Cycle de vie d'une requête
| Etape | Action | Detail |
|---|---|---|
| 1 | HTTPS force | Si cert.pem present, redirection automatique HTTP vers HTTPS |
| 2 | Licence + Session | Verification du composant et de la session utilisateur |
| 3 | Resolution URL | Domaine, puis Page, puis Paramètres dynamiques |
| 4 | Hook base hote | BSPH_WEB_ON_CONNECTION peut intercepter/rediriger |
| 5 | Controle de sécurité | Droits d'accès, validation, filtrage POST |
| 6 | Rendu | Chargement des blocs, generation HTML + Tailwind, envoi au navigateur |
| 7 | WebSocket | Etablissement de la connexion temps reel pour les interactions |
Avantages business
- Pas de licence REST : POST/WebSocket = serveur web 4D standard. 300K utilisateurs = difference de cout massive.
- Zero dépendances frontend : Pas de React, Angular, Vue. Pas de bundle 200KB+. Pas de breaking changes.
- Entity serveur : Source unique de verite. Pas de copie client. STAMP gere nativement par ORDA.
- Node.js = outil serveur : Tailwind CLI, Puppeteer (PDF). Le navigateur ne recoit que HTML + Tailwind + vanilla JS.

