Modules build the page
A registry lists the available interface modules. Small factory functions create their HTML elements, and the renderer places them on the page with consistent identifiers.
Independent project · Developer tools
A small, understandable foundation for building browser applications with plain JavaScript.
01 · How it works
Scaffolding is a starter I can copy into a new project. It provides a working browser interface, a server, and a consistent way to organize features.
A registry lists the available interface modules. Small factory functions create their HTML elements, and the renderer places them on the page with consistent identifiers.
Shared sensors turn browser input, such as clicks and keystrokes, into consistent events that application code can understand.
Behavior modules listen for those events and carry out actions, such as updating a panel or calling the Express API. CSS handles appearance.
For example, clicking the starter panel’s button triggers a sensor event. A behavior recognizes the action, requests a message from the server, and displays the response in the panel.
The path of a user action
02 · Why I use it
I choose this approach instead of React for projects where explicit event flow and direct control of the page fit the work.
I can trace an interaction from its sensor to its behavior and see exactly where the page changes. Native browser modules need no JavaScript build step; Tailwind handles CSS generation separately. This matches how I like to reason about interfaces and review their implementation.
The tradeoff is ownership: I maintain the rendering rules, event conventions, and UI update logic myself. I choose that responsibility when the application benefits from this structure. It is a deliberate fit for these projects, rather than a claim that one approach suits every team or product.
The base stays small. Settings begin in memory behind a replaceable storage interface. Persistent storage, authentication, and deployment are choices for the application built from it. Optional local plugins can add interface modules using the same contracts as the core.
03 · My process
I use OpenAI Codex to help develop Scaffolding and Bank Ledger, with the architecture and implementation decisions under my direction.
I define the intended behavior and boundaries, approve every Codex step, and personally read the code for integrity and consistency with the design. Automated tests and documented contracts support that review.
The result reflects my engineering judgment: what the system should do, how its parts fit together, and which changes are ready to keep.
Built to be understood
Scaffolding gives new projects a consistent starting structure while leaving their product decisions open.
Return to résumé Explore Bank Ledger