-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathindex.html
More file actions
17 lines (17 loc) · 4.44 KB
/
index.html
File metadata and controls
17 lines (17 loc) · 4.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<link rel="stylesheet" href="/colvmn/style.css">
<title> – STRVCT</title>
<link rel="alternate" type="text/plain" title="llms.txt" href="/llms.txt">
<link rel="canonical" href="https://strvct.net/">
<meta name="description" content="A naked objects framework for JavaScript with automatic UI generation, persistence, and cloud sync.">
</head>
<body>
<div class="page loaded"><div class="header"><div><h1></h1><a class="back-link" href="../index.html">← site</a></div><a class="brand" href="../index.html">STRVCT</a></div><p class="intro">A naked objects framework for JavaScript with automatic UI generation, persistence, and cloud sync.</p><h2 id="about">About</h2><div class="section"><div class="section-body"><p>STRVCT implements the <a href="http://downloads.nakedobjects.net/resources/Pawson%20thesis.pdf">naked objects</a> pattern for JavaScript. You write domain model classes with annotated properties — the framework automatically generates the user interface, handles persistence, and keeps everything synchronized.</p><p>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.</p><p>For a detailed treatment of this approach, see <a href="docs/Naked%20Objects/index.html">Closing the Usability Gap in Naked Objects</a>.</p></div></div><h2 id="key-features">Key Features</h2><div class="section"><div class="section-body"><ul><li><strong>Automatic UI</strong> — Views are generated from the model graph using a Miller Column inspired navigation pattern. Custom views can override defaults when needed.</li><li><strong>Slot System</strong> — Properties are declared as slots with annotations that control type checking, persistence, UI generation, view synchronization, and other features.</li><li><strong>Notification-Based Sync</strong> — The model layer communicates to the views layer through deferred, deduplicated notifications with automatic sync loop detection.</li><li><strong>Transparent Persistence</strong> — 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.</li><li><strong>Cloud Sync</strong> — Object pools sync to Firebase Storage using a write-ahead log of delta files for efficient incremental updates.</li><li><strong>Gesture System</strong> — Unifies mouse and touch input gestures.</li><li><strong>Internationalization</strong> — 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.</li><li><strong>Accessibility</strong> — 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.</li><li><strong>Content-Addressable Build</strong> — Custom resource loading with content hashing for optimal caching and minimal network transfers.</li></ul></div></div><div class="card-grid cols-2"><a class="card" href="Example%20App/index.html"><h3>Example App</h3><p>A complete contacts application in four classes, with zero view code.</p><span class="arrow">View →</span></a><a class="card" href="FAQ/index.html"><h3>FAQ</h3><p>Frequently asked questions about STRVCT.</p><span class="arrow">View →</span></a><a class="card" href="docs/index.html"><h3>Documentation</h3><p>Guides, architecture, and API reference.</p><span class="arrow">View →</span></a><a class="card" href="Timeline/index.html"><h3>Project Timeline</h3><p>Key milestones from the first commit through present day</p><span class="arrow">View →</span></a><a class="card card-span-2" href="https://github.com/stevedekorte/strvct.net"><h3>GitHub Repository</h3><p>Source code, issues, and contributions.</p><span class="arrow">View →</span></a></div><div class="section"><div class="section-body"><p>For AI agents: <a href="llms.txt">llms.txt</a> (curated index) and <a href="llms-full.txt">llms-full.txt</a> (full content).</p></div></div></div>
<script src="/colvmn/layout/layout.js" type="module"></script>
</body>
</html>