Independent project · Developer tools

Scaffolding

A small, understandable foundation for building browser applications with plain JavaScript.

Purpose
Reusable application starter
Interface
Native JavaScript modules
Server
Node.js & Express
Delivery
Codex-assisted implementation

01 · How it works

Give each part a clear responsibility.

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.

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.

Sensors capture input

Shared sensors turn browser input, such as clicks and keystrokes, into consistent events that application code can understand.

Behaviors respond

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

A flow I can follow in the code.

Button click The user interacts with the page Sensor Turns browser input into a shared event Behavior Recognizes the action and requests the server message Express API Returns a response Page update The behavior displays the result

02 · Why I use it

Direct control, with a structure I know.

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

AI assistance with personal accountability.

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.

Defined requirementsStep-by-step approvalPersonal code reviewAutomated checks

Built to be understood

A foundation I can inspect and extend.

Scaffolding gives new projects a consistent starting structure while leaving their product decisions open.

Return to résumé Explore Bank Ledger