[{"data":1,"prerenderedAt":1079},["ShallowReactive",2],{"navigation-landing-en":3,"navigation-nuxt-auto-en":180,"navigation-nuxt-protokit-en":338,"/docs/nuxt-auto-en":444,"/docs/nuxt-auto-surround-en":1076},[4,8,13,28,41,51,64,77,94,110,134,150,157,172],{"title":5,"path":6,"stem":7},"Overview","/docs/landing","0.docs/1.landing/001.index",{"title":9,"path":10,"stem":11,"badge":12},"Built-in Features","/docs/landing/built-in-features","0.docs/1.landing/002.built-in-features","New",{"title":14,"path":15,"stem":16,"children":17,"icon":27},"Content Foundation","/docs/landing/content","0.docs/1.landing/02.content/1.index",[18,19,23],{"title":5,"path":15,"stem":16},{"title":20,"path":21,"stem":22},"Details","/docs/landing/content/details","0.docs/1.landing/02.content/2.details",{"title":24,"path":25,"stem":26},"Technical","/docs/landing/content/technical","0.docs/1.landing/02.content/4.technical","i-heroicons-document-text",{"title":29,"path":30,"stem":31,"children":32,"icon":40},"Regional Content","/docs/landing/regional","0.docs/1.landing/03.regional/1.index",[33,34,37],{"title":5,"path":30,"stem":31},{"title":20,"path":35,"stem":36},"/docs/landing/regional/details","0.docs/1.landing/03.regional/2.details",{"title":24,"path":38,"stem":39},"/docs/landing/regional/technical","0.docs/1.landing/03.regional/4.technical","i-heroicons-globe-alt",{"title":42,"path":43,"stem":44,"children":45,"icon":50},"Multi-language","/docs/landing/multilang","0.docs/1.landing/04.multilang/1.index",[46,47],{"title":5,"path":43,"stem":44},{"title":20,"path":48,"stem":49},"/docs/landing/multilang/details","0.docs/1.landing/04.multilang/2.details","i-heroicons-language",{"title":52,"path":53,"stem":54,"children":55,"icon":63},"Blog","/docs/landing/blog","0.docs/1.landing/05.blog/1.index",[56,57,60],{"title":5,"path":53,"stem":54},{"title":20,"path":58,"stem":59},"/docs/landing/blog/details","0.docs/1.landing/05.blog/2.details",{"title":24,"path":61,"stem":62},"/docs/landing/blog/technical","0.docs/1.landing/05.blog/4.technical","i-heroicons-pencil-square",{"title":65,"path":66,"stem":67,"children":68,"icon":76},"Documentation","/docs/landing/docs","0.docs/1.landing/06.docs/1.index",[69,70,73],{"title":5,"path":66,"stem":67},{"title":20,"path":71,"stem":72},"/docs/landing/docs/details","0.docs/1.landing/06.docs/2.details",{"title":24,"path":74,"stem":75},"/docs/landing/docs/technical","0.docs/1.landing/06.docs/4.technical","i-heroicons-book-open",{"title":78,"path":79,"stem":80,"children":81,"icon":93},"Forms","/docs/landing/forms","0.docs/1.landing/07.forms/1.index",[82,83,86,90],{"title":5,"path":79,"stem":80},{"title":20,"path":84,"stem":85},"/docs/landing/forms/details","0.docs/1.landing/07.forms/2.details",{"title":87,"path":88,"stem":89},"Admin","/docs/landing/forms/admin","0.docs/1.landing/07.forms/3.admin",{"title":24,"path":91,"stem":92},"/docs/landing/forms/technical","0.docs/1.landing/07.forms/4.technical","i-heroicons-clipboard-document-list",{"title":95,"path":96,"stem":97,"children":98,"icon":109},"Email","/docs/landing/email","0.docs/1.landing/08.email/1.index",[99,100,103,106],{"title":5,"path":96,"stem":97},{"title":20,"path":101,"stem":102},"/docs/landing/email/details","0.docs/1.landing/08.email/2.details",{"title":87,"path":104,"stem":105},"/docs/landing/email/admin","0.docs/1.landing/08.email/3.admin",{"title":24,"path":107,"stem":108},"/docs/landing/email/technical","0.docs/1.landing/08.email/4.technical","i-heroicons-envelope",{"title":111,"path":112,"stem":113,"children":114,"icon":133},"Feedback Platform","/docs/landing/feedback","0.docs/1.landing/09.feedback/1.index",[115,116,119,122,125,129],{"title":5,"path":112,"stem":113},{"title":20,"path":117,"stem":118},"/docs/landing/feedback/details","0.docs/1.landing/09.feedback/2.details",{"title":87,"path":120,"stem":121},"/docs/landing/feedback/admin","0.docs/1.landing/09.feedback/3.admin",{"title":24,"path":123,"stem":124},"/docs/landing/feedback/technical","0.docs/1.landing/09.feedback/4.technical",{"title":126,"path":127,"stem":128},"Compare vs SaaS","/docs/landing/feedback/compare","0.docs/1.landing/09.feedback/5.compare",{"title":130,"path":131,"stem":132},"FAQ","/docs/landing/feedback/faq","0.docs/1.landing/09.feedback/6.faq","i-heroicons-chat-bubble-left-right",{"title":135,"path":136,"stem":137,"children":138,"icon":149},"Storage","/docs/landing/storage","0.docs/1.landing/10.storage/1.index",[139,140,143,146],{"title":5,"path":136,"stem":137},{"title":20,"path":141,"stem":142},"/docs/landing/storage/details","0.docs/1.landing/10.storage/2.details",{"title":87,"path":144,"stem":145},"/docs/landing/storage/admin","0.docs/1.landing/10.storage/3.admin",{"title":24,"path":147,"stem":148},"/docs/landing/storage/technical","0.docs/1.landing/10.storage/4.technical","i-heroicons-circle-stack",{"title":151,"path":152,"stem":153,"children":154,"icon":156},"Offline First","/docs/landing/offline-first","0.docs/1.landing/11.offline-first/1.index",[155],{"title":151,"path":152,"stem":153},"i-heroicons-users",{"title":158,"path":159,"stem":160,"children":161,"icon":156},"Yjs Sync","/docs/landing/yjs-sync","0.docs/1.landing/12.yjs-sync/1.index",[162,163,166,169],{"title":5,"path":159,"stem":160},{"title":20,"path":164,"stem":165},"/docs/landing/yjs-sync/details","0.docs/1.landing/12.yjs-sync/2.details",{"title":87,"path":167,"stem":168},"/docs/landing/yjs-sync/admin","0.docs/1.landing/12.yjs-sync/3.admin",{"title":24,"path":170,"stem":171},"/docs/landing/yjs-sync/technical","0.docs/1.landing/12.yjs-sync/4.technical",{"title":173,"path":174,"stem":175,"children":176,"badge":178,"icon":179},"Newsletter","/docs/landing/newsletter","0.docs/1.landing/13.newsletter/index",[177],{"title":173,"path":174,"stem":175,"badge":178},"Coming Soon","i-lucide-send",[181,184,202,298],{"title":5,"path":182,"stem":183},"/docs/nuxt-auto","0.docs/3.nuxt-auto/index",{"title":185,"path":186,"stem":187,"children":188,"page":201},"Getting Started","/docs/nuxt-auto/getting-started","0.docs/3.nuxt-auto/1.getting-started",[189,193,197],{"title":190,"path":191,"stem":192},"Introduction","/docs/nuxt-auto/getting-started/introduction","0.docs/3.nuxt-auto/1.getting-started/1.introduction",{"title":194,"path":195,"stem":196},"Installation","/docs/nuxt-auto/getting-started/installation","0.docs/3.nuxt-auto/1.getting-started/2.installation",{"title":198,"path":199,"stem":200},"Quick Start","/docs/nuxt-auto/getting-started/quick-start","0.docs/3.nuxt-auto/1.getting-started/3.quick-start",false,{"title":203,"path":204,"stem":205,"children":206,"page":201},"Auto API","/docs/nuxt-auto/auto-api","0.docs/3.nuxt-auto/2.auto-api",[207,210,214,218,222,226,230,234,238,242,246,250,254,258,262,266,270,274,278,282,286,290,294],{"title":185,"path":208,"stem":209},"/docs/nuxt-auto/auto-api/getting-started","0.docs/3.nuxt-auto/2.auto-api/1.getting-started",{"title":211,"path":212,"stem":213},"Aggregations","/docs/nuxt-auto/auto-api/aggregations","0.docs/3.nuxt-auto/2.auto-api/10.aggregations",{"title":215,"path":216,"stem":217},"Lifecycle Hooks","/docs/nuxt-auto/auto-api/lifecycle-hooks","0.docs/3.nuxt-auto/2.auto-api/11.lifecycle-hooks",{"title":219,"path":220,"stem":221},"Many-to-Many (M2M) Relationships","/docs/nuxt-auto/auto-api/m2m-relationships","0.docs/3.nuxt-auto/2.auto-api/12.m2m-relationships",{"title":223,"path":224,"stem":225},"Plugin System","/docs/nuxt-auto/auto-api/plugin-system","0.docs/3.nuxt-auto/2.auto-api/13.plugin-system",{"title":227,"path":228,"stem":229},"Database Adapters","/docs/nuxt-auto/auto-api/database-adapters","0.docs/3.nuxt-auto/2.auto-api/14.database-adapters",{"title":231,"path":232,"stem":233},"Custom Endpoints","/docs/nuxt-auto/auto-api/custom-endpoints","0.docs/3.nuxt-auto/2.auto-api/15.custom-endpoints",{"title":235,"path":236,"stem":237},"Multi-Tenancy","/docs/nuxt-auto/auto-api/multi-tenancy","0.docs/3.nuxt-auto/2.auto-api/16.multi-tenancy",{"title":239,"path":240,"stem":241},"Validation","/docs/nuxt-auto/auto-api/validation","0.docs/3.nuxt-auto/2.auto-api/2.validation",{"title":243,"path":244,"stem":245},"Rate Limiting","/docs/nuxt-auto/auto-api/rate-limiting","0.docs/3.nuxt-auto/2.auto-api/20.rate-limiting",{"title":247,"path":248,"stem":249},"Request Metadata Plugin","/docs/nuxt-auto/auto-api/request-metadata","0.docs/3.nuxt-auto/2.auto-api/21.request-metadata",{"title":251,"path":252,"stem":253},"Plugin Catalog","/docs/nuxt-auto/auto-api/plugin-catalog","0.docs/3.nuxt-auto/2.auto-api/22.plugin-catalog",{"title":255,"path":256,"stem":257},"Handler Overrides","/docs/nuxt-auto/auto-api/handler-overrides","0.docs/3.nuxt-auto/2.auto-api/3.handler-overrides",{"title":259,"path":260,"stem":261},"Cloudflare D1","/docs/nuxt-auto/auto-api/cloudflare-d1","0.docs/3.nuxt-auto/2.auto-api/30.cloudflare-d1",{"title":263,"path":264,"stem":265},"SQLite to D1 Migration","/docs/nuxt-auto/auto-api/migration-sqlite-d1","0.docs/3.nuxt-auto/2.auto-api/31.migration-sqlite-d1",{"title":267,"path":268,"stem":269},"Frontend Composables","/docs/nuxt-auto/auto-api/frontend-composables","0.docs/3.nuxt-auto/2.auto-api/32.frontend-composables",{"title":271,"path":272,"stem":273},"Testing","/docs/nuxt-auto/auto-api/testing","0.docs/3.nuxt-auto/2.auto-api/33.testing",{"title":275,"path":276,"stem":277},"Pagination","/docs/nuxt-auto/auto-api/pagination","0.docs/3.nuxt-auto/2.auto-api/4.pagination",{"title":279,"path":280,"stem":281},"Soft Deletes","/docs/nuxt-auto/auto-api/soft-deletes","0.docs/3.nuxt-auto/2.auto-api/5.soft-deletes",{"title":283,"path":284,"stem":285},"Authentication & Authorization","/docs/nuxt-auto/auto-api/authentication-authorization","0.docs/3.nuxt-auto/2.auto-api/6.authentication-authorization",{"title":287,"path":288,"stem":289},"Better-Auth Integration","/docs/nuxt-auto/auto-api/better-auth","0.docs/3.nuxt-auto/2.auto-api/7.better-auth",{"title":291,"path":292,"stem":293},"Nested Relations","/docs/nuxt-auto/auto-api/nested-relationships","0.docs/3.nuxt-auto/2.auto-api/8.nested-relationships",{"title":295,"path":296,"stem":297},"Bulk Operations","/docs/nuxt-auto/auto-api/bulk-operations","0.docs/3.nuxt-auto/2.auto-api/9.bulk-operations",{"title":299,"path":300,"stem":301,"children":302,"page":201},"Auto Admin","/docs/nuxt-auto/auto-admin","0.docs/3.nuxt-auto/3.auto-admin",[303,306,310,314,318,322,326,330,334],{"title":185,"path":304,"stem":305},"/docs/nuxt-auto/auto-admin/getting-started","0.docs/3.nuxt-auto/3.auto-admin/1.getting-started",{"title":307,"path":308,"stem":309},"Configuration & Theming","/docs/nuxt-auto/auto-admin/configuration-theming","0.docs/3.nuxt-auto/3.auto-admin/2.configuration-theming",{"title":311,"path":312,"stem":313},"Resource Configuration","/docs/nuxt-auto/auto-admin/resource-configuration","0.docs/3.nuxt-auto/3.auto-admin/3.resource-configuration",{"title":315,"path":316,"stem":317},"Form Fields & Widgets","/docs/nuxt-auto/auto-admin/form-fields-widgets","0.docs/3.nuxt-auto/3.auto-admin/4.form-fields-widgets",{"title":319,"path":320,"stem":321},"Permissions","/docs/nuxt-auto/auto-admin/permissions","0.docs/3.nuxt-auto/3.auto-admin/5.permissions",{"title":323,"path":324,"stem":325},"Custom Pages","/docs/nuxt-auto/auto-admin/custom-pages","0.docs/3.nuxt-auto/3.auto-admin/6.custom-pages",{"title":327,"path":328,"stem":329},"M2M Relationships","/docs/nuxt-auto/auto-admin/m2m-relationships","0.docs/3.nuxt-auto/3.auto-admin/7.m2m-relationships",{"title":331,"path":332,"stem":333},"Custom Actions","/docs/nuxt-auto/auto-admin/custom-actions","0.docs/3.nuxt-auto/3.auto-admin/8.custom-actions",{"title":335,"path":336,"stem":337},"Composables","/docs/nuxt-auto/auto-admin/composables","0.docs/3.nuxt-auto/3.auto-admin/9.composables",[339,342,355,382,400,415,425],{"title":5,"path":340,"stem":341},"/docs/nuxt-protokit","0.docs/4.nuxt-protokit/index",{"title":185,"path":343,"stem":344,"children":345,"icon":354},"/docs/nuxt-protokit/getting-started","0.docs/4.nuxt-protokit/1.getting-started/1.index",[346,347,351],{"title":190,"path":343,"stem":344},{"title":348,"path":349,"stem":350},"Core Concepts","/docs/nuxt-protokit/getting-started/concepts","0.docs/4.nuxt-protokit/1.getting-started/2.concepts",{"title":198,"path":352,"stem":353},"/docs/nuxt-protokit/getting-started/quick-start","0.docs/4.nuxt-protokit/1.getting-started/3.quick-start","i-lucide-rocket",{"title":356,"path":357,"stem":358,"children":359,"icon":381},"Schemas","/docs/nuxt-protokit/schemas","0.docs/4.nuxt-protokit/2.schemas/1.index",[360,361,365,369,373,377],{"title":5,"path":357,"stem":358},{"title":362,"path":363,"stem":364},"Field Types","/docs/nuxt-protokit/schemas/fields","0.docs/4.nuxt-protokit/2.schemas/2.fields",{"title":366,"path":367,"stem":368},"Collections","/docs/nuxt-protokit/schemas/collections","0.docs/4.nuxt-protokit/2.schemas/3.collections",{"title":370,"path":371,"stem":372},"Derived & Computed","/docs/nuxt-protokit/schemas/derived-computed","0.docs/4.nuxt-protokit/2.schemas/4.derived-computed",{"title":374,"path":375,"stem":376},"Connections","/docs/nuxt-protokit/schemas/connections","0.docs/4.nuxt-protokit/2.schemas/5.connections",{"title":378,"path":379,"stem":380},"Visualizations & Layouts","/docs/nuxt-protokit/schemas/visualizations","0.docs/4.nuxt-protokit/2.schemas/6.visualizations","i-lucide-file-code",{"title":335,"path":383,"stem":384,"children":385,"icon":399},"/docs/nuxt-protokit/composables","0.docs/4.nuxt-protokit/3.composables/1.index",[386,387,391,395],{"title":5,"path":383,"stem":384},{"title":388,"path":389,"stem":390},"usePrototype","/docs/nuxt-protokit/composables/use-prototype","0.docs/4.nuxt-protokit/3.composables/2.use-prototype",{"title":392,"path":393,"stem":394},"useProtoDoc","/docs/nuxt-protokit/composables/use-proto-doc","0.docs/4.nuxt-protokit/3.composables/3.use-proto-doc",{"title":396,"path":397,"stem":398},"useProtoCollection","/docs/nuxt-protokit/composables/use-proto-collection","0.docs/4.nuxt-protokit/3.composables/4.use-proto-collection","i-lucide-layers",{"title":401,"path":402,"stem":403,"children":404,"icon":414},"Components","/docs/nuxt-protokit/components","0.docs/4.nuxt-protokit/4.components/1.index",[405,406,410],{"title":5,"path":402,"stem":403},{"title":407,"path":408,"stem":409},"ProtoTool","/docs/nuxt-protokit/components/proto-tool","0.docs/4.nuxt-protokit/4.components/2.proto-tool",{"title":411,"path":412,"stem":413},"ProtoCrudModal","/docs/nuxt-protokit/components/proto-crud-modal","0.docs/4.nuxt-protokit/4.components/3.proto-crud-modal","i-lucide-puzzle",{"title":151,"path":416,"stem":417,"children":418,"icon":424},"/docs/nuxt-protokit/offline-first","0.docs/4.nuxt-protokit/5.offline-first/1.index",[419,420],{"title":151,"path":416,"stem":417},{"title":421,"path":422,"stem":423},"Corruption Recovery","/docs/nuxt-protokit/offline-first/corruption-recovery","0.docs/4.nuxt-protokit/5.offline-first/2.corruption-recovery","i-lucide-wifi-off",{"title":426,"icon":427,"path":428,"stem":429,"children":430},"Advanced","i-lucide-graduation-cap","/docs/nuxt-protokit/advanced","0.docs/4.nuxt-protokit/6.advanced/1.index",[431,432,436,440],{"title":5,"path":428,"stem":429},{"title":433,"path":434,"stem":435},"Multi-Tool Apps","/docs/nuxt-protokit/advanced/building-a-toolkit","0.docs/4.nuxt-protokit/6.advanced/1.building-a-toolkit",{"title":437,"path":438,"stem":439},"Schema Patterns","/docs/nuxt-protokit/advanced/custom-schema-patterns","0.docs/4.nuxt-protokit/6.advanced/2.custom-schema-patterns",{"title":441,"path":442,"stem":443},"Custom Fields & Viz","/docs/nuxt-protokit/advanced/extensibility","0.docs/4.nuxt-protokit/6.advanced/3.extensibility",{"page":445,"fallbackPage":1071},{"id":446,"title":447,"body":448,"description":1069,"extension":1070,"links":1071,"meta":1072,"navigation":1073,"ogImage":1071,"path":182,"seo":1074,"stem":183,"__hash__":1075},"nuxt_auto/0.docs/3.nuxt-auto/index.md","Nuxt Auto",{"type":449,"value":450,"toc":1064},"minimark",[451,455,458,462,465,487,490,493,513,517,744,1006,1016,1019,1060],[452,453,454],"p",{},"Auto-generate production-ready REST APIs and beautiful admin panels directly from your Drizzle ORM schemas — no boilerplate, full TypeScript support.",[456,457],"iso-nuxt-auto-preview",{},[459,460,203],"h2",{"id":461},"auto-api",[452,463,464],{},"Turn any Drizzle schema into a complete REST API with one module. Authorization, validation, and pagination are built in — no route writing needed.",[466,467,468,472,475,478,481,484],"ul",{},[469,470,471],"li",{},"Zero-boilerplate CRUD endpoints from Drizzle schemas",[469,473,474],{},"Multi-tier authorization (operation, SQL filter, object, and field level)",[469,476,477],{},"Zod validation, cursor & offset pagination, nested relations",[469,479,480],{},"Plugin system: rate limiting, soft deletes, request metadata, caching",[469,482,483],{},"Multi-database support: SQLite, Postgres, MySQL, D1, Turso, PlanetScale",[469,485,486],{},"Type-safe frontend composables via TanStack Query",[459,488,299],{"id":489},"auto-admin",[452,491,492],{},"A full admin panel generated from your Auto API resources. No UI code to write — just configure resources and permissions.",[466,494,495,498,501,504,507,510],{},[469,496,497],{},"Auto-generated list, detail, create, and edit pages",[469,499,500],{},"Rich form widgets: text, select, date, relations, rich text, markdown, code editor, file upload",[469,502,503],{},"Permission-based access control at resource, field, and route level",[469,505,506],{},"M2M relationship management with junction table support",[469,508,509],{},"Custom pages and custom actions per resource",[469,511,512],{},"Theming via Nuxt UI, dark mode, responsive design",[459,514,516],{"id":515},"quick-example","Quick Example",[518,519,524],"pre",{"className":520,"code":521,"language":522,"meta":523,"style":523},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","// nuxt.config.ts\nexport default defineNuxtConfig({\n  modules: [\n    '@nuxt/ui',\n    '@websideproject/nuxt-auto-api',\n    '@websideproject/nuxt-auto-admin',\n  ],\n  autoApi: {\n    prefix: '/api',\n    database: { client: 'better-sqlite3' },\n  },\n  autoAdmin: {\n    prefix: '/admin',\n    branding: { title: 'My Admin Panel' },\n  },\n})\n","typescript","",[525,526,527,536,558,571,587,599,611,619,630,648,674,680,690,706,730,735],"code",{"__ignoreMap":523},[528,529,532],"span",{"class":530,"line":531},"line",1,[528,533,535],{"class":534},"sHwdD","// nuxt.config.ts\n",[528,537,539,543,546,550,554],{"class":530,"line":538},2,[528,540,542],{"class":541},"s7zQu","export",[528,544,545],{"class":541}," default",[528,547,549],{"class":548},"s2Zo4"," defineNuxtConfig",[528,551,553],{"class":552},"sTEyZ","(",[528,555,557],{"class":556},"sMK4o","{\n",[528,559,561,565,568],{"class":530,"line":560},3,[528,562,564],{"class":563},"swJcz","  modules",[528,566,567],{"class":556},":",[528,569,570],{"class":552}," [\n",[528,572,574,577,581,584],{"class":530,"line":573},4,[528,575,576],{"class":556},"    '",[528,578,580],{"class":579},"sfazB","@nuxt/ui",[528,582,583],{"class":556},"'",[528,585,586],{"class":556},",\n",[528,588,590,592,595,597],{"class":530,"line":589},5,[528,591,576],{"class":556},[528,593,594],{"class":579},"@websideproject/nuxt-auto-api",[528,596,583],{"class":556},[528,598,586],{"class":556},[528,600,602,604,607,609],{"class":530,"line":601},6,[528,603,576],{"class":556},[528,605,606],{"class":579},"@websideproject/nuxt-auto-admin",[528,608,583],{"class":556},[528,610,586],{"class":556},[528,612,614,617],{"class":530,"line":613},7,[528,615,616],{"class":552},"  ]",[528,618,586],{"class":556},[528,620,622,625,627],{"class":530,"line":621},8,[528,623,624],{"class":563},"  autoApi",[528,626,567],{"class":556},[528,628,629],{"class":556}," {\n",[528,631,633,636,638,641,644,646],{"class":530,"line":632},9,[528,634,635],{"class":563},"    prefix",[528,637,567],{"class":556},[528,639,640],{"class":556}," '",[528,642,643],{"class":579},"/api",[528,645,583],{"class":556},[528,647,586],{"class":556},[528,649,651,654,656,659,662,664,666,669,671],{"class":530,"line":650},10,[528,652,653],{"class":563},"    database",[528,655,567],{"class":556},[528,657,658],{"class":556}," {",[528,660,661],{"class":563}," client",[528,663,567],{"class":556},[528,665,640],{"class":556},[528,667,668],{"class":579},"better-sqlite3",[528,670,583],{"class":556},[528,672,673],{"class":556}," },\n",[528,675,677],{"class":530,"line":676},11,[528,678,679],{"class":556},"  },\n",[528,681,683,686,688],{"class":530,"line":682},12,[528,684,685],{"class":563},"  autoAdmin",[528,687,567],{"class":556},[528,689,629],{"class":556},[528,691,693,695,697,699,702,704],{"class":530,"line":692},13,[528,694,635],{"class":563},[528,696,567],{"class":556},[528,698,640],{"class":556},[528,700,701],{"class":579},"/admin",[528,703,583],{"class":556},[528,705,586],{"class":556},[528,707,709,712,714,716,719,721,723,726,728],{"class":530,"line":708},14,[528,710,711],{"class":563},"    branding",[528,713,567],{"class":556},[528,715,658],{"class":556},[528,717,718],{"class":563}," title",[528,720,567],{"class":556},[528,722,640],{"class":556},[528,724,725],{"class":579},"My Admin Panel",[528,727,583],{"class":556},[528,729,673],{"class":556},[528,731,733],{"class":530,"line":732},15,[528,734,679],{"class":556},[528,736,738,741],{"class":530,"line":737},16,[528,739,740],{"class":556},"}",[528,742,743],{"class":552},")\n",[518,745,747],{"className":520,"code":746,"language":522,"meta":523,"style":523},"// server/database/schema.ts\nimport { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core'\n\nexport const users = sqliteTable('users', {\n  id: integer('id').primaryKey({ autoIncrement: true }),\n  email: text('email').notNull().unique(),\n  name: text('name'),\n  role: text('role', { enum: ['user', 'admin'] }).default('user'),\n})\n",[525,748,749,754,789,795,824,871,908,930,1000],{"__ignoreMap":523},[528,750,751],{"class":530,"line":531},[528,752,753],{"class":534},"// server/database/schema.ts\n",[528,755,756,759,761,764,767,770,772,775,778,781,783,786],{"class":530,"line":538},[528,757,758],{"class":541},"import",[528,760,658],{"class":556},[528,762,763],{"class":552}," sqliteTable",[528,765,766],{"class":556},",",[528,768,769],{"class":552}," text",[528,771,766],{"class":556},[528,773,774],{"class":552}," integer",[528,776,777],{"class":556}," }",[528,779,780],{"class":541}," from",[528,782,640],{"class":556},[528,784,785],{"class":579},"drizzle-orm/sqlite-core",[528,787,788],{"class":556},"'\n",[528,790,791],{"class":530,"line":560},[528,792,794],{"emptyLinePlaceholder":793},true,"\n",[528,796,797,799,803,806,809,811,813,815,818,820,822],{"class":530,"line":573},[528,798,542],{"class":541},[528,800,802],{"class":801},"spNyl"," const",[528,804,805],{"class":552}," users ",[528,807,808],{"class":556},"=",[528,810,763],{"class":548},[528,812,553],{"class":552},[528,814,583],{"class":556},[528,816,817],{"class":579},"users",[528,819,583],{"class":556},[528,821,766],{"class":556},[528,823,629],{"class":556},[528,825,826,829,831,833,835,837,840,842,845,848,851,853,856,859,861,865,867,869],{"class":530,"line":589},[528,827,828],{"class":563},"  id",[528,830,567],{"class":556},[528,832,774],{"class":548},[528,834,553],{"class":552},[528,836,583],{"class":556},[528,838,839],{"class":579},"id",[528,841,583],{"class":556},[528,843,844],{"class":552},")",[528,846,847],{"class":556},".",[528,849,850],{"class":548},"primaryKey",[528,852,553],{"class":552},[528,854,855],{"class":556},"{",[528,857,858],{"class":563}," autoIncrement",[528,860,567],{"class":556},[528,862,864],{"class":863},"sfNiH"," true",[528,866,777],{"class":556},[528,868,844],{"class":552},[528,870,586],{"class":556},[528,872,873,876,878,880,882,884,887,889,891,893,896,899,901,904,906],{"class":530,"line":601},[528,874,875],{"class":563},"  email",[528,877,567],{"class":556},[528,879,769],{"class":548},[528,881,553],{"class":552},[528,883,583],{"class":556},[528,885,886],{"class":579},"email",[528,888,583],{"class":556},[528,890,844],{"class":552},[528,892,847],{"class":556},[528,894,895],{"class":548},"notNull",[528,897,898],{"class":552},"()",[528,900,847],{"class":556},[528,902,903],{"class":548},"unique",[528,905,898],{"class":552},[528,907,586],{"class":556},[528,909,910,913,915,917,919,921,924,926,928],{"class":530,"line":613},[528,911,912],{"class":563},"  name",[528,914,567],{"class":556},[528,916,769],{"class":548},[528,918,553],{"class":552},[528,920,583],{"class":556},[528,922,923],{"class":579},"name",[528,925,583],{"class":556},[528,927,844],{"class":552},[528,929,586],{"class":556},[528,931,932,935,937,939,941,943,946,948,950,952,955,957,960,962,965,967,969,971,974,976,979,981,983,985,988,990,992,994,996,998],{"class":530,"line":621},[528,933,934],{"class":563},"  role",[528,936,567],{"class":556},[528,938,769],{"class":548},[528,940,553],{"class":552},[528,942,583],{"class":556},[528,944,945],{"class":579},"role",[528,947,583],{"class":556},[528,949,766],{"class":556},[528,951,658],{"class":556},[528,953,954],{"class":563}," enum",[528,956,567],{"class":556},[528,958,959],{"class":552}," [",[528,961,583],{"class":556},[528,963,964],{"class":579},"user",[528,966,583],{"class":556},[528,968,766],{"class":556},[528,970,640],{"class":556},[528,972,973],{"class":579},"admin",[528,975,583],{"class":556},[528,977,978],{"class":552},"] ",[528,980,740],{"class":556},[528,982,844],{"class":552},[528,984,847],{"class":556},[528,986,987],{"class":548},"default",[528,989,553],{"class":552},[528,991,583],{"class":556},[528,993,964],{"class":579},[528,995,583],{"class":556},[528,997,844],{"class":552},[528,999,586],{"class":556},[528,1001,1002,1004],{"class":530,"line":632},[528,1003,740],{"class":556},[528,1005,743],{"class":552},[452,1007,1008,1009,1012,1013,1015],{},"That's it. You now have a REST API at ",[525,1010,1011],{},"/api/users",", an admin panel at ",[525,1014,701],{},", and type-safe composables.",[1017,1018],"hr",{},[1020,1021,1022,1028,1034,1041,1048,1054],"card-group",{},[1023,1024,1025],"card",{"icon":354,"title":185,"to":191},[452,1026,1027],{},"Introduction, installation and quick start.",[1023,1029,1031],{"icon":1030,"title":203,"to":208},"i-lucide-database",[452,1032,1033],{},"Generate REST APIs from Drizzle schemas. Zero boilerplate, full CRUD.",[1023,1035,1038],{"icon":1036,"title":1037,"to":284},"i-lucide-shield-check","Authorization",[452,1039,1040],{},"Operation, SQL filter, object, and field-level access control.",[1023,1042,1045],{"icon":1043,"title":1044,"to":240},"i-lucide-list-filter","Validation & Pagination",[452,1046,1047],{},"Zod schemas, cursor & offset pagination, nested relations.",[1023,1049,1051],{"icon":1050,"title":223,"to":224},"i-lucide-plug",[452,1052,1053],{},"Rate limiting, soft deletes, caching, and custom pipeline plugins.",[1023,1055,1057],{"icon":1056,"title":299,"to":304},"i-lucide-layout-dashboard",[452,1058,1059],{},"Auto-generated admin panel. CRUD, permissions, rich form widgets.",[1061,1062,1063],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":523,"searchDepth":538,"depth":538,"links":1065},[1066,1067,1068],{"id":461,"depth":538,"text":203},{"id":489,"depth":538,"text":299},{"id":515,"depth":538,"text":516},"Auto-generate type-safe REST APIs and admin panels from your Drizzle ORM schemas.","md",null,{},{"title":5},{"title":447,"description":1069},"JXbqL4d-xoA99wPJnHscUO2hz6ZDAtYB5vw-bcCyV-4",[1071,1077],{"title":190,"path":191,"stem":192,"description":1078,"children":-1},"Nuxt Auto is a collection of modules that dramatically accelerate full-stack development by automatically generating production-ready APIs and admin interfaces from your database schemas.",1772977471263]