Compose is an open-source platform built for backend engineers to create powerful internal apps fast.
import { Compose } from "@composehq/sdk";
import { db, DEFAULT_FEATURE_FLAGS } from "./database";
export default new Compose.App({
route: "create-user",
handler: async ({ page, ui }) => {
page.add(() => ui.header("Create User"));
page.add(() =>
ui.form(
"create-user",
[
ui.emailInput("email"),
ui.selectBox("role", ["user", "manager", "admin"]),
ui.jsonInput("featureFlags", { initialValue: DEFAULT_FEATURE_FLAGS }),
],
{
onSubmit: (form) => db.insertUser(form.email, form.role, form.featureFlags),
}
)
);
},
});
Build in your backend
Full type safety everywhere
Import internal functions and logic
Run in your browser, shareable with your team
Build anything with 40+ UI components
Install and use the SDK in your codebase
Import your internal functions and logic
Use simple, type-safe SDK methods
import { Compose } from "@composehq/sdk";
import { db, DEFAULT_FEATURE_FLAGS } from "./database";
export default new Compose.App({
route: "create-user",
handler: async ({ page, ui }) => {
page.add(() => ui.header("Create User"));
page.add(() =>
ui.form(
"create-user",
[
ui.emailInput("email"),
ui.selectBox("role", ["user", "manager", "admin"]),
ui.jsonInput("featureFlags", { initialValue: DEFAULT_FEATURE_FLAGS }),
],
{
onSubmit: (form) => db.insertUser(form.email, form.role, form.featureFlags),
}
)
);
},
});
Use and share with your team
Build anything with 40+ UI components
Responsive, beautiful UIs out of the box
Install and use the SDK in your codebase
Import your internal functions and logic
Use simple, type-safe SDK methods
import { Compose } from "@composehq/sdk";
import { db, DEFAULT_FEATURE_FLAGS } from "./database";
export default new Compose.App({
route: "create-user",
handler: async ({ page, ui }) => {
page.add(() => ui.header("Create User"));
page.add(() =>
ui.form(
"create-user",
[
ui.emailInput("email"),
ui.selectBox("role", ["user", "manager", "admin"]),
ui.jsonInput("featureFlags", { initialValue: DEFAULT_FEATURE_FLAGS }),
],
{
onSubmit: (form) => db.insertUser(form.email, form.role, form.featureFlags),
}
)
);
},
});
Use and share with your team
Build anything with 40+ UI components
Create responsive, beautiful UIs out of the box
Build complete tools inside your backend codebase using our SDKs for Node.js and Python, eliminating the need to wire up custom auth and networking.
import { Compose } from "@composehq/sdk";
import { db } from "../db";
const usersDashboard = new Compose.App({
route: "users-dashboard",
handler: async ({ page, ui }) => {
const users = await db.users.selectAll();
page.add(() => ui.table("users", users))
}
})
Use LLMs to generate internal tools in seconds inside your own IDE - integrations are available for Cursor, VSCode, and more.
Access to everything for one developer. Just start here!
Upgrade once you're ready to share apps with your team.
We work in the open. Join the Discord or read the source code.