{}

Build

This track is for developers using BESPA as a library to build an application. It focuses on the techniques that come up over and over: which widgets to redraw on which state change, how to wire forms and validation, how to compose modals and side panels, and the patterns that keep code readable as a page grows.

Topics

When to redraw

The single most useful skill in BESPA: deciding which widgets opt into RedrawIfChanged for which state variables, and which ones never need to. Includes the cursor-loss trap on InputText.

State patterns

Naming conventions for state variables, scoping them to a page or a sub-page, return-link plumbing, and what to put in a session vs. the URL.

Forms & validation

Form widgets, auto-submit, predicate validators, server-side guarding, and the round-trip that surfaces inline errors next to the right input.

Data tables

Building sortable, filterable, paginated tables. Quick-search, server-side filtering, and connecting a table to a backing data source.

Modals & side panels

Embedding a page inside a modal or a side panel using the named-frame pattern, and the link-action conventions that drive them.

Live data

Why BESPA doesn't ship server-push, and the small custom widget that plugs SSE or WebSockets into the action-URL flow when you need it.

Navigation patterns

Nav rail, drawer, strip, and the back-link plumbing. When to nest a sub-section under its own NavTarget vs. flatten.

Theming

Picking dark / light / system mode, choosing a Material key-color palette, persisting per-user preferences, and how the resolved tokens reach the browser.

Deployment

Single-binary packaging, the CSP posture and why it needs unsafe-inline, automatic cache-busting, reverse-proxy headers, and compression.