STRVCT

A naked-objects framework for JavaScript

About

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.

Key Features

  • Automatic UI — Views are generated from the model graph using a Miller Column inspired navigation pattern. Custom views can override defaults when needed.
  • Slot System — Properties are declared as slots with annotations that control type checking, persistence, UI generation, view synchronization, and other features.
  • Notification-Based Sync — The model layer communicates to the views layer through deferred, deduplicated notifications with automatic sync loop detection.
  • Transparent Persistence — No custom serialization code required. Declare which objects and slots to persist, and the framework handles dirty tracking, automatic commits, and garbage collection via IndexedDB.
  • Cloud Sync — Object pools sync to Firebase Storage using a write-ahead log of delta files for efficient incremental updates.
  • Gesture System — Unifies mouse and touch input gestures.
  • Internationalization — AI-powered translation of UI text with no per-component wiring. The naked objects pattern means every slot value is translated at the model-to-view boundary automatically.
  • Accessibility — Automatic ARIA roles, labels, and states derived from the model. Slot metadata maps to aria-required, aria-valuemin/max, and aria-description; view classes emit landmark roles, live regions, and focus-visible styling.
  • Content-Addressable Build — Custom resource loading with content hashing for optimal caching and minimal network transfers.

Example App

A complete contacts application in four classes, with zero view code.

View →

FAQ

Frequently asked questions about STRVCT.

View →

Documentation

Guides, architecture, and API reference.

View →

Project Timeline

Key milestones from the first commit through present day

View →

GitHub Repository

Source code, issues, and contributions.

View →

For AI agents: llms.txt (curated index) and llms-full.txt (full content).