Concepts fondamentaux
Philosophie
Vous connaissez 4D ? Vous connaissez BWEB.
BWEB n'est pas un framework qui necessite une expertise JavaScript. C'est un composant purement base 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 ca, il y a Qodly).
Tailwind s'apprend en un jour. React prend plusieurs mois.
Hierarchie : Domaine - Page - Bloc
Tout dans BWEB s'organisé 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 reutilisable | /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
| Page | Composant | |
|---|---|---|
| category | page | component |
| Accessible via URL | Oui (/suppliers, /contact) | Non |
| Reutilisable | Non | Oui (header, footer, sidebar) |
| Affiche 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 mecanismes pour contrôler la visibilite des blocs :
| Mecanisme | Description | Exemple |
|---|---|---|
| linked | Lie la visibilite 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 basee sur les données | Entity#null, isPublished=true |
Variables process et persistance
BWEB gere l'état cote serveur, pas cote 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 verite
- Le STAMP (verrouillage optimiste) est gere nativement par ORDA
- Les sessions 4D sont scalables et preemptives
Claude ne remplace pas BWEB, il l'alimente.

