Everything, in plain words.
Guides for running SethuCMS, working in the admin app and building on the API. Start with “Start here”.
Start here
What it is, and how to run it.
Overview
Content tools are tied to one database. Strapi and Directus are SQL-only, FireCMS is Firestore-first, and internal-tool builders (Retool, Appsmith) reach many database...
Build and run on your own machine
This is the complete path from empty folders to a working CMS with the admin app, the gateway and your databases.
Use it from your app
SethuCMS is an HTTP API with a TypeScript SDK. Any stack that can make HTTPS requests can use it: Next.js, React, Angular, plain JavaScript, Flutter, Python. There is...
Hosted gateway, admin app and your first content connection
This page covers the first live setup: the gateway on Vercel, the admin web app that comes with it, and how a website reads its content from a database it owns. It is...
Run SethuCMS yourself, on your own database
SethuCMS does not host your data, and it does not host you. You run the gateway next to your database, and your content stays where it already is. We give you the soft...
Using it
Day-to-day work in the admin app.
Drafts, publishing and live preview
This page explains how an edit travels from the editor's keyboard to the customer's database, and what protects it on the way. It matches the code in sethucms/apps/api...
Moving data between databases
Copy the records of one connection into another: PostgreSQL to a new PostgreSQL, a demo into a real database, or between any two adapters the gateway supports (memory,...
Single sign-on (OpenID Connect)
People sign in to the admin app with your company login (Okta, Google Workspace, Microsoft Entra, Keycloak, Auth0 and so on). The gateway never sees their password.
Change feed and webhooks
Every create, update and delete made through the gateway gets a number in an ordered feed.
Schema as code
Your database says what exists. A schema file says how it is edited, the way a Sanity Studio schema does. It never creates, renames or drops anything in your database,...
Workspaces: one isolated space per person
With workspaces on, anyone who signs in gets a workspace of their own and is its admin. They connect their own databases, issue their own tokens and invite their own t...
Images and files
Images and PDFs can be stored in the connected database and used from any field that holds a file. The first adapter that offers this is Firestore. Other databases do...
The admin app
A Vite and React app. It talks only to the gateway, keeps the sign-in token in sessionStorage (so closing the tab signs you out) and uses a hash router.
Security and running it
Keeping it safe, deployed and watched.
Security
Security drives the architecture. This page lists the controls the MVP must have.
Deployment
Environment variables (names only; never commit values):
Deploy to production
This page is the checklist for running the gateway and admin app for real use. It is written for people and for coding agents.
Logging and monitoring
What the gateway tells you while it runs, and how to watch it. Everything here is built in and tested; no extra package is needed.
Several gateways, and cloud deploys
Set SETHUCMSSTATEURL to a PostgreSQL address and any number of gateways can run against the same state.
Build on it
The API, the adapters and how the code fits together.
Architecture
subgraph SethuCMS GW[API Gateway<br/>REST + GraphQL + OpenAPI] AUTH[Auth<br/>OIDC, RBAC, field/row rules] WK[Worker pool<br/>isolated adapter runners] VLT[Vault<br/>en...
Adapter contract
An adapter is the only code that knows a database's native language. It turns the portable query AST into native queries and native results into canonical records.
Data model and schemas
Two models exist. Do not mix them.
API
One contract for every client. REST is the primary surface; GraphQL is generated from the same content model; OpenAPI is the source for SDK generation.
SDKs
Every client stack uses the same API. SDKs are generated from openapi.yaml so they never drift, with a small hand-written layer for ergonomics.
The gateway (apps/api)
The gateway is the one process that sits between every client (admin app, SDKs, websites) and every database. It holds the credentials, applies permissions, keeps draf...
Database adapters
The gateway ships with these adapters. Each one is a separate package in sethucms-adapters, passes the same conformance suite, and is checked by the same guard layer (...
Adapters in other languages (gRPC)
Write an adapter in Python, Go or any language with gRPC, run it as its own service, and add it as a grpc connection.
How the code is laid out
Tests follow the same split: tests/gateway.test.ts, gateway-drafts.test.ts, gateway-admin.test.ts.
The project
Why it exists and where it is going.
What to build
Every adapter folder has the same layout so a new database is a copy-and-fill job:
Language decision
This is a recommendation based on the project's needs, not a measured benchmark.
Roadmap
Estimates assume one or two engineers and are rough planning guesses, not benchmarks.
Open-source release checklist
The code is MIT licensed (LICENSE in every repository). This list is what to do before the repositories go public. Items marked owner need a person; they are not thing...
Sponsorship and funding
SethuCMS is free, open-source software (MIT licence). Sponsorship is how people who use it can help keep it maintained. This page says how funding is set up, what it p...
Upcoming features and planned plans
These come after the 90-day evidence plan in doc 11. The first priority is still proving the existing adapters, the container image and single sign-on against real ser...