Two commands stand between you and a complete backend — database, auth, content, email, workflows and the console, running locally and ready to deploy.
The generator scaffolds a working project — pick a template, and you get example functions, wirings, and a local database schema to start from.
One command boots everything. Not just an HTTP server — the database is introspected and typed, auth and content are live, email previews work, and the console is watching all of it.
localhost:3000/console shows every function, wire and workflowA Pikku function receives your services and typed input — no decorators, no classes. Wiring connects it to the outside world. Add more wires whenever you like; the function never changes.
export const listCategories = pikkuSessionlessFunc({
expose: true,
description: 'List all product categories.',
output: ListCategoriesOutput,
func: async ({ kysely }) => {
return kysely
.selectFrom('category')
.select(['categoryId', 'name', 'slug', 'description'])
.orderBy('name')
.execute();
},
});
// Wire a single route — good for one-offs
wireHTTP({
method: 'get',
route: '/items/:itemId',
func: getItem,
auth: false,
});
The same application deploys three ways — a standalone binary you run anywhere, your own cloud, or fully managed on Fabric.
One self-contained server you run on infrastructure you control.
npx pikku deploy apply -p standaloneDeploy to Cloudflare or AWS. Your account, your bill, no lock-in.
npx pikku deploy apply -p cloudflareManaged hosting with observability and an assistant that knows your system.
npx pikku fabric deploy applyRun npx pikku deploy plan first to see exactly what will be created.