Nuxt Auto
Auto-generate type-safe REST APIs and admin panels from your Drizzle ORM schemas.
Auto-generate production-ready REST APIs and beautiful admin panels directly from your Drizzle ORM schemas — no boilerplate, full TypeScript support.
Auto API
Turn any Drizzle schema into a complete REST API with one module. Authorization, validation, and pagination are built in — no route writing needed.
- Zero-boilerplate CRUD endpoints from Drizzle schemas
- Multi-tier authorization (operation, SQL filter, object, and field level)
- Zod validation, cursor & offset pagination, nested relations
- Plugin system: rate limiting, soft deletes, request metadata, caching
- Multi-database support: SQLite, Postgres, MySQL, D1, Turso, PlanetScale
- Type-safe frontend composables via TanStack Query
Auto Admin
A full admin panel generated from your Auto API resources. No UI code to write — just configure resources and permissions.
- Auto-generated list, detail, create, and edit pages
- Rich form widgets: text, select, date, relations, rich text, markdown, code editor, file upload
- Permission-based access control at resource, field, and route level
- M2M relationship management with junction table support
- Custom pages and custom actions per resource
- Theming via Nuxt UI, dark mode, responsive design
Quick Example
// nuxt.config.ts
export default defineNuxtConfig({
modules: [
'@nuxt/ui',
'@websideproject/nuxt-auto-api',
'@websideproject/nuxt-auto-admin',
],
autoApi: {
prefix: '/api',
database: { client: 'better-sqlite3' },
},
autoAdmin: {
prefix: '/admin',
branding: { title: 'My Admin Panel' },
},
})
// server/database/schema.ts
import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core'
export const users = sqliteTable('users', {
id: integer('id').primaryKey({ autoIncrement: true }),
email: text('email').notNull().unique(),
name: text('name'),
role: text('role', { enum: ['user', 'admin'] }).default('user'),
})
That's it. You now have a REST API at /api/users, an admin panel at /admin, and type-safe composables.