A naked-objects framework for JavaScript
You write the domain model.
The framework handles the rest.
STRVCT implements the naked-objects pattern: annotated model classes become the single source of truth. From those annotations the framework produces a live interface, manages persistence, and keeps every layer synchronized at runtime. Custom views can still be written when needed; most of the time they are not.
Because the model is independent of the UI, the same application code runs in the browser, on the command line, or headlessly in Node.js. Persistence is transparent (IndexedDB by default, optional cloud sync). Accessibility, internationalization, and gesture handling are derived rather than hand-coded.
Because the model carries explicit annotations and remains independent of the view layer, the same structure that is easy for humans to reason about is also relatively easy for language models to generate and maintain. The parts that models still struggle with most—keeping complex UI, state, and persistence correctly synchronized—are largely handled by the framework rather than generated as fragile glue code.
The result is software whose structure stays close to the domain itself.
For a detailed treatment of this approach, see Closing the Usability Gap in Naked Objects.
A complete contacts application in four classes, with zero view code.
View →Frequently asked questions about STRVCT.
View →Guides, architecture, and API reference.
View →Key milestones from the first commit through present day
View →Source code, issues, and contributions.
View →For AI agents: llms.txt (curated index) and llms-full.txt (full content).