Build your application. Bando handles the content.
Bando is an open-source headless CMS for developers. Define your content in TypeScript and let Bando handle the infrastructure required to store, manage, and deliver your application's data.
2
3 export const post = defineCollection({
4 name: 'posts',
5 fields: {
6 title: text({ required: true }),
7 cover: image(),
8 body: richText(),
9 published: boolean(),
10 },
11 })
Your content.
In a Studio built for it.
Bando Studio is designed to work with the content defined by your project. The goal is to keep the editorial experience close to your application's architecture.
Content infrastructure built for developers.
Bando turns TypeScript schemas into a complete infrastructure for defining, managing, and consuming content in your applications.
Schema as code
Define types, validations, relationships, and configuration directly in TypeScript. Your schema lives in your project and can be versioned with Git.
API
Your content is available through the Bando API, ready to be consumed by the applications you build.
React Studio
An editorial interface built to work with the collections and fields defined by your project.
Developer-first
Content configuration and architecture are part of your codebase, making Git, review, and collaboration part of the workflow.
Continuous evolution
Bando continues to evolve with new capabilities, integrations, and tools to make content infrastructure increasingly complete.
Self-hosted
Run Bando on your machine, a VPS, or your own infrastructure. Your data stays under your control.
Define. Query. Render.
The same schema that defines your content provides the foundation for working with that data in your application.
2
3 export const post = defineCollection({
4 name: 'posts',
5 fields: {
6 title: text({ required: true }),
7 slug: slug({ source: 'title' }),
8 cover: image(),
9 }
10 })
2
3 const bando = createBandoClient({
4 baseUrl: 'http://localhost:3333',
5 });
6 const { data, total } = await bando
7 .collection( 'posts' )
8 .findMany({
9 limit: 10,
10 sort: '-createdAt',
11 filters: {
12 published: true,
13 }
14 });
2
3 const bando = createBandoClient({
4 baseUrl: 'http://localhost:3333' });
5
6 export async function getPosts() {
7 const { data } = await bando
8 .collection( 'posts' )
9 .findMany({
10 limit: 10
11 });
12 return data;
13 }
The code is yours. The infrastructure is too.
Bando is open source and can run on your own infrastructure. You have access to the code, your data, and how your content integrates with your application.
-
01
Open source
The source code is publicly available for inspection, use, and contribution.
-
02
Open contributions
Issues, pull requests, and community proposals are part of Bando's evolution.
-
03
No vendor lock-in
Run the project on your own infrastructure while keeping control of your data.
Less infrastructure. More product.
Define your content, run Bando, and focus on the application you're actually building.