Introduction
Learn what Ridu provides, how an application is configured, and where to start.
What is Ridu?
Ridu is a Go content-management framework with a built-in Svelte 5 admin. You define collections, fields, access rules, hooks, and plugins in executable Go. Ridu resolves that config into a schema manifest and derives the database plan, REST contract, TypeScript types, Fetch client, and authoring interface from it.
Local Go calls, REST, the SDK, admin, tasks, and plugin transports use the same authorization, validation, hooks, transactions, population, and redaction. The built admin is embedded in the Go server, so Node.js and package managers are build-time tools.
Choose PostgreSQL for networked, multi-host deployments or SQLite for a local file on one host. MongoDB requires a transaction-capable replica set and has a narrower supported production profile. Uploads can use local storage or S3-compatible object storage.
Check Capability status for complete, limited, experimental, and planned behavior.
The authoring model
A collection is a typed Go config value:
var Posts = ridu.Collection{
Slug: "posts",
Fields: []field.Definition{
field.Text("title", field.Required()),
field.Select("status",
field.OneOf("draft", "published"),
field.Default("draft"),
),
},
}Go checks names and option types at compile time; Ridu then validates cross-field and
cross-collection rules while resolving the manifest. Ridu for TypeScript developers
explains packages, struct literals, slices, functions, nil, errors, and contexts through familiar
TypeScript ideas.
Frontend developers consume the generated application module and can remain in TypeScript:
import { createClient } from '~/generated/ridu.generated';
const client = createClient({ baseURL: 'https://cms.example.com' });
const page = await client.list('posts', {
where: { status: { equals: 'published' } },
sort: ['-publishedAt'],
limit: 12
});
for (const post of page.docs) {
console.log(post.title);
}The generated module provides collection and field types through the Fetch SDK. Its methods return
Promise<T> and throw structured RiduError failures.
Choose your path
I build TypeScript frontends
Read TypeScript SDK and Querying data first. You need Go only when you author the server schema or a compiled backend extension; a frontend consuming an existing Ridu application stays in TypeScript.
I model content and backend behavior
Follow the installation guide, then read Core concepts, Configuration, Fields, Access control, and Hooks. The Project structure guide separates files you own from committed generated contracts and disposable build state.
I am evaluating another CMS
Use Move from Payload for a concept and migration-contract map, or Ridu for PocketBase users for the code-defined and embedded-store trade-offs. Read Performance and footprint for benchmark results and test conditions.
Current limits
See Capability status for available, limited, experimental, and planned features before choosing them for a project.
Create an application
Open the project wizard with your preferred launcher:
npm create ridu@latest my-appbun create ridu@latest my-apppnpm create ridu@latest my-appyarn create ridu my-appChoose Starter or Blank, a database, and optional agent guidance. Review the summary, then
run the install and dev commands the initializer prints. Omit my-app if you prefer to name the
directory inside the wizard.
Direct Go installation, organization-specific Go module/npm scope flags, non-interactive automation, and recovery are covered in Installation.
The CLI prints the local admin URL. On the first visit, create the initial admin account. Installation explains requirements, generated files, and database choices.