Define content types with JSON Schema. Edit through a web UI. Store as files. Serve via API.
Define content types with JSON Schema. The UI generates forms automatically from your schema, including nested objects, arrays, and file uploads.
Content is stored as JSON files on disk, not in a database. Easy to inspect, version control, and migrate. In-memory caching keeps reads fast.
Every content type gets full CRUD endpoints. Bearer token auth. Export and import bundles for syncing between environments.
Files are stored by SHA-256 hash with automatic deduplication. Upload the same file twice, it is stored once.
One Rust binary, no runtime dependencies. SQLite for auth. Templates and static assets are served directly. Docker image included.
Prometheus metrics endpoint, structured logging with tracing, and a separate audit log database tracking all mutations.
Create a JSON Schema with an x-substrukt extension that sets the title, slug, and storage mode.
The web UI generates a form from your schema. Create, edit, and delete entries through the browser.
Content is served as JSON through the REST API. Use bearer tokens for authentication.
Export/import bundles to move content between local and production. Automate with CI.
# Build from source
git clone https://github.com/wavefunk/substrukt.git
cd substrukt
cargo build --release
./target/release/substrukt serve
# Or run with Docker
docker build -t substrukt .
docker run -p 3000:3000 -v substrukt-data:/data substrukt