Fundamental Concepts

Philosophy

You know 4D? You know BWEB.

BWEB is not a framework that requires JavaScript expertise. It is a component purely based on 4D. A 4D developer should be able to create a website without changing worlds.

BWEB targets public portals and CMS with potentially 300,000+ users - not internal dashboards (for that, there is Qodly).

Tailwind can be learned in a day. React takes several months.

Hierarchy: Domain - Page - Block

Everything in BWEB is organized into 3 levels:

LevelTableDescriptionExample
DomainBSPK_WEB_DOMAINA complete websitemysite.com
PageBSPK_WEB_DOMAIN_MENUAn accessible URL or a reusable component/suppliers, header, footer
BlockBSPK_WEB_CONTENTA UI element forming a tree via parentUuidwrapper, text, button, listbox

The template assembles components (header, footer, sidebars) around each page content.

Pages vs Components

PageComponent
categorypagecomponent
Accessible via URLYes (/suppliers, /contact)No
ReusableNoYes (header, footer, sidebar)
Displayed viaDirect navigationDomain template

Responsive Design

BWEB uses Tailwind CSS mobile-first approach. Each block stores its styles per breakpoint in cssProperties.

BreakpointMin. WidthTarget
default0pxMobile
sm640pxSmall screen
md768pxTablet
lg1024pxLaptop
xl1280pxDesktop
2xl1536pxLarge screen

Example: a container in column on mobile, in row on desktop:

{bspk: {default: {customClass: flex flex-col gap-2}, md: {customClass: flex-row gap-4}, lg: {customClass: gap-6}}}

Conditional Display

3 mechanisms to control block visibility:

MechanismDescriptionExample
linkedLinks block visibility to another blockA detail panel appears when a row is selected
effectAppearance effectfade, slide
conditionalDisplayData-based conditionEntity#null, isPublished=true

Process Variables and Persistence

BWEB manages state server-side, not client-side:

  • The Entity persists during the session via process variables
  • No client-side state (no Redux, Zustand, etc.)
  • The server is the single source of truth
  • STAMP (optimistic locking) is natively managed by ORDA
  • 4D sessions are scalable and preemptive
Claude does not replace BWEB, it powers it.