Telaio

Build backends
with certainty.

The hard decisions are already made. PostgreSQL, Redis, queues, auth, email — pre-chosen, pre-typed, pre-wired. Skip the configuration. Ship the product.

// app.ts
const app = await createApp(config)
  .withDatabase()
  .withCache()
  .withQueue(queues)
  .build()

// Database, cache, queues — wired.
// No decisions. Just build.

Phantom Types

Feature flags live in the type system. If .withCache() was never called, app.cache doesn't exist at compile time — no runtime guards needed.

Builder Pattern

Compose exactly the features you need. Every .with*() call returns a narrower type. Unused modules don't exist in your build or your types.

Opinionated Stack

PostgreSQL via Kysely. Redis. pg-boss. Pino. TypeBox. Every pairing is pre-typed and pre-wired. Zero config overhead for decisions already made.


One stack. Zero compromises.

Every pairing is pre-typed, pre-wired, and battle-tested.

Fastify 5PostgreSQLKyselyRedispg-bossPinoTypeBoxZodAWS SDKReact EmailBetter AuthTypeScript

Quick Start

Up and running in under a minute.

CLI (recommended)
# Scaffold a new project
pnpx telaio init my-app
cd my-app
pnpm install
pnpm run dev

Telaio — named after the loom. Type every thread. Docs · GitHub