One backend.
Ship everywhere.
Define your schema once. Get REST, typed routes, realtime, typed client SDK, and optional admin UI. Server-first TypeScript. Built on Drizzle, Zod, Better Auth.
One schema, everything generated
Define once. Get the rest for free.
/api/collections/posts
typed, namespaced
subscribe to changes
auto-generated types
table, form, block editor
from field definitions
row-level, field-level
workflow stages, drafts → published
two-table strategy, per-field localization
auto-managed uploads & assets
File system = source of truth
Drop a file. Get a feature. Codegen discovers everything. No manual registration.
src/questpie/server/ ├── collections/ │ ├── posts.ts │ └── users.ts ├── routes/ │ └── admin/stats.ts ├── blocks/ │ └── hero.ts ├── jobs/ │ └── send-newsletter.ts ├── services/ │ └── stripe.ts ├── seeds/ │ └── demo-data.ts └── auth.ts
Swap anything
Your infrastructure. Your choice. Click any adapter in the config to swap it.
Optional admin
Ship the admin panel only when you need it. Swappable package. Web, React Native, or build your own.
| Title | Status | Author | Date |
|---|---|---|---|
| Getting Started Guide | PUBLISHED | admin | Mar 15 |
| Adapter Architecture | DRAFT | admin | Mar 12 |
End-to-end types
Schema to screen. Zero disconnect. Change a field — TypeScript catches it everywhere.
Composable
Core parts = user code. Modules compose depth-first with deduplication. Every module uses the exact same conventions as user code.
questpie-starter
Auth, users, sessions, API keys, assets. Better Auth integration. Default access. i18n messages.
questpie-admin
Admin UI. 18 field renderers, 3 view types, sidebar, dashboard widgets. Table, form, block editor.
questpie-audit
Change logging via global hooks. Every create, update, delete tracked. Zero config required.
Your module
Same file conventions, same patterns. Build your own module. Publish to npm. No special APIs.
Developer experience
The details matter. Instant regeneration, typed scaffolding, build-time validation.