01

Content as JSON Files

Every piece of content is a plain JSON file on disk. No opaque databases, no migrations, no ORM overhead. Read your data with cat, edit with any text editor, version with Git.

  • Human-readable data format
  • File-system is the single source of truth
  • Works with any frontend — Next.js, Astro, Hugo
  • Zero vendor lock-in
{
  "id": "nano-id-abc123",
  "title": "My First Post",
  "content": "Hello, world!",
  "createdAt": "2026-04-04"
}
02

Git-Native Versioning

Content changes are automatically committed to a dedicated cms-data branch using Git worktrees. Stage content on branches, merge to publish. Full history, full attribution.

  • Automatic Git commits for every save
  • Branch-based content staging
  • Author attribution on every commit
  • Orphan branch isolation (no code pollution)
main
cms-data
03

Relationships

Link content types together with four relationship types. Deep population resolves nested data at query time automatically.

  • one-to-one — Profile → User
  • one-to-many — Author → Articles
  • many-to-one — Articles → Category
  • many-to-many — Articles ↔ Tags
Article
manyToOne
Category
04

Dynamic Zones

Flexible, component-based content areas. Define reusable components (Hero, FAQ, Gallery) and let editors compose pages freely.

  • Compose pages from reusable blocks
  • No developer needed for content layout changes
  • Type-safe component schemas
  • Supports nesting and ordering
Hero
Feature Grid
Testimonials
CTA
05

RBAC & Field-Level Security

Role-based access control at both API and field level. Ownership-based rules, conditional templates, and four built-in roles.

  • Admin, Editor, Authenticated, Public roles
  • Field-level read/write restrictions
  • Ownership conditions: createdBy: '${user.id}'
  • JSON-configurable permissions (rbac.json)
Admin
Full Access
Editor
Own Content
Public
Read Only
06

In-Memory Query Engine

Lightning-fast queries powered by an in-memory index. Real-time sync via Chokidar watches the file system for external changes.

  • <50ms avg read latency
  • Chokidar file-system watcher for live reindex
  • Filter, sort, paginate, populate in one query
  • No restart needed after git pull
Read
<50ms
Write
<200ms
Boot
<3s

Ready to get started?

Set up Strux in under a minute.