Concepts fondamentaux
Philosophie
Vous connaissez 4D ? Vous connaissez BWEB.
BWEB n'est pas un framework qui nécessite une expertise JavaScript. C'est un composant purement basé sur 4D. Un développeur 4D doit pouvoir créer un site web sans changer de monde.
BWEB cible les portails publics et CMS avec potentiellement 300 000+ utilisateurs - pas les dashboards internes (pour ça, il y a Qodly).
Tailwind s'apprend en un jour. React prend plusieurs mois.
Hiérarchie : Domaine - Page - Bloc
Tout dans BWEB s'organise en 3 niveaux :
| Niveau | Table | Description | Exemple |
|---|---|---|---|
| Domaine | BSPK_WEB_DOMAIN | Un site web complet | monsite.fr |
| Page | BSPK_WEB_DOMAIN_MENU | Une URL accessible ou un composant réutilisable | /suppliers, header, footer |
| Bloc | BSPK_WEB_CONTENT | Un élément UI formant un arbre via parentUuid | wrapper, text, button, listbox |
Le template assemble les composants (header, footer, sidebars) autour du contenu de chaque page.
Pages vs Composants
| Catégorie | Page | Composant |
|---|---|---|
| Accessible via URL | Oui (/suppliers, /contact) | Non |
| Réutilisable | Non | Oui (header, footer, sidebar) |
| Affiché via | Navigation directe | Template du domaine |
Responsive design
BWEB utilise l'approche mobile-first de Tailwind CSS. Chaque bloc stocke ses styles par breakpoint dans cssProperties.
| Breakpoint | Largeur min. | Cible |
|---|---|---|
| default | 0px | Mobile |
| sm | 640px | Petit écran |
| md | 768px | Tablette |
| lg | 1024px | Portable |
| xl | 1280px | Desktop |
| 2xl | 1536px | Grand écran |
Exemple : un conteneur en colonne sur mobile, en ligne sur desktop :
{bspk: {default: {customClass: flex flex-col gap-2}, md: {customClass: flex-row gap-4}, lg: {customClass: gap-6}}}Affichage conditionnel
3 mécanismes pour contrôler la visibilité des blocs :
| Mécanisme | Description | Exemple |
|---|---|---|
| linked | Lie la visibilité d'un bloc à un autre | Un panneau de détail s'affiche quand une ligne est sélectionnée |
| effect | Effet d'apparition | fade, slide |
| conditionalDisplay | Condition basée sur les données | Entity#null, isPublished=true |
Variables process et persistance
BWEB gère l'état côté serveur, pas côté client :
L'Entity persiste pendant la session via les variables process
Pas d'état client (pas de Redux, Zustand, etc.)
Le serveur est la source unique de vérité
Le STAMP (verrouillage optimiste) est géré nativement par ORDA
Les sessions 4D sont scalables et préemptives
Claude ne remplace pas BWEB, il l'alimente.

