STRVCT

A naked objects framework for JavaScript with automatic UI generation, persistence, and cloud sync.

About

STRVCT implements the naked objects pattern for JavaScript. You write domain model classes with annotated properties and the framework dynamically generates the user interface as it's being used, handles persistence, and keeps everything synchronized.

The model layer is completely independent of the UI, allowing the same application code to run in a browser, on a command line, or headlessly in Node.js for testing and server-side processing.

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).