[{"data":1,"prerenderedAt":1153},["ShallowReactive",2],{"navigation_docs":3,"-docs-cli-create":493,"-docs-cli-create-surround":1148},[4,46,135,218,257,292,355,377,420],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":45},"Getting Started","i-lucide-rocket","\u002Fdocs\u002Fgetting-started","docs\u002F01.getting-started",[10,15,20,25,30,35,40],{"title":11,"path":12,"stem":13,"icon":14},"What is Heximon?","\u002Fdocs\u002Fgetting-started\u002Fintroduction","docs\u002F01.getting-started\u002F01.introduction","i-lucide-info",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F01.getting-started\u002F02.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Quick Start","\u002Fdocs\u002Fgetting-started\u002Fquick-start","docs\u002F01.getting-started\u002F03.quick-start","i-lucide-zap",{"title":26,"path":27,"stem":28,"icon":29},"Core Concepts","\u002Fdocs\u002Fgetting-started\u002Fcore-concepts","docs\u002F01.getting-started\u002F04.core-concepts","i-lucide-shapes",{"title":31,"path":32,"stem":33,"icon":34},"Examples","\u002Fdocs\u002Fgetting-started\u002Fexamples","docs\u002F01.getting-started\u002F05.examples","i-lucide-library",{"title":36,"path":37,"stem":38,"icon":39},"Where Next?","\u002Fdocs\u002Fgetting-started\u002Fwhere-next","docs\u002F01.getting-started\u002F06.where-next","i-lucide-signpost",{"title":41,"path":42,"stem":43,"icon":44},"Troubleshooting","\u002Fdocs\u002Fgetting-started\u002Ftroubleshooting","docs\u002F01.getting-started\u002F07.troubleshooting","i-lucide-life-buoy",false,{"title":47,"icon":48,"path":49,"stem":50,"children":51,"page":45},"Essentials","i-lucide-boxes","\u002Fdocs\u002Fessentials","docs\u002F02.essentials",[52,56,61,66,71,76,81,86,91,96,101,105,110,115,120,125,130],{"title":53,"path":54,"stem":55,"icon":48},"Modules & DI","\u002Fdocs\u002Fessentials\u002Fmodules-and-di","docs\u002F02.essentials\u002F01.modules-and-di",{"title":57,"path":58,"stem":59,"icon":60},"Controllers","\u002Fdocs\u002Fessentials\u002Fcontrollers","docs\u002F02.essentials\u002F02.controllers","i-lucide-route",{"title":62,"path":63,"stem":64,"icon":65},"Validation & DTOs","\u002Fdocs\u002Fessentials\u002Fvalidation","docs\u002F02.essentials\u002F03.validation","i-lucide-shield-check",{"title":67,"path":68,"stem":69,"icon":70},"Contracts","\u002Fdocs\u002Fessentials\u002Fcontracts","docs\u002F02.essentials\u002F04.contracts","i-lucide-file-signature",{"title":72,"path":73,"stem":74,"icon":75},"REST Client","\u002Fdocs\u002Fessentials\u002Fclient","docs\u002F02.essentials\u002F05.client","i-lucide-plug",{"title":77,"path":78,"stem":79,"icon":80},"Database","\u002Fdocs\u002Fessentials\u002Fdatabase","docs\u002F02.essentials\u002F06.database","i-lucide-database",{"title":82,"path":83,"stem":84,"icon":85},"Drizzle ORM","\u002Fdocs\u002Fessentials\u002Fdrizzle","docs\u002F02.essentials\u002F07.drizzle","i-lucide-database-zap",{"title":87,"path":88,"stem":89,"icon":90},"Persistence & Transactions","\u002Fdocs\u002Fessentials\u002Fpersistence","docs\u002F02.essentials\u002F08.persistence","i-lucide-database-backup",{"title":92,"path":93,"stem":94,"icon":95},"Migrations","\u002Fdocs\u002Fessentials\u002Fmigrations","docs\u002F02.essentials\u002F09.migrations","i-lucide-git-branch",{"title":97,"path":98,"stem":99,"icon":100},"Authentication","\u002Fdocs\u002Fessentials\u002Fauthentication","docs\u002F02.essentials\u002F10.authentication","i-lucide-key-round",{"title":102,"path":103,"stem":104,"icon":65},"Permissions & scopes","\u002Fdocs\u002Fessentials\u002Fpermissions","docs\u002F02.essentials\u002F11.permissions",{"title":106,"path":107,"stem":108,"icon":109},"Error Handling","\u002Fdocs\u002Fessentials\u002Ferrors","docs\u002F02.essentials\u002F12.errors","i-lucide-triangle-alert",{"title":111,"path":112,"stem":113,"icon":114},"Testing a Heximon App","\u002Fdocs\u002Fessentials\u002Ftesting","docs\u002F02.essentials\u002F13.testing","i-lucide-flask-conical",{"title":116,"path":117,"stem":118,"icon":119},"Test app harness","\u002Fdocs\u002Fessentials\u002Fcreatetestapp","docs\u002F02.essentials\u002F14.createtestapp","i-lucide-test-tube",{"title":121,"path":122,"stem":123,"icon":124},"Logging & Observability","\u002Fdocs\u002Fessentials\u002Flogging","docs\u002F02.essentials\u002F17.logging","i-lucide-scroll-text",{"title":126,"path":127,"stem":128,"icon":129},"Context & Lifecycle","\u002Fdocs\u002Fessentials\u002Fcontext-and-lifecycle","docs\u002F02.essentials\u002F18.context-and-lifecycle","i-lucide-radio",{"title":131,"path":132,"stem":133,"icon":134},"Project Structure","\u002Fdocs\u002Fessentials\u002Fproject-structure","docs\u002F02.essentials\u002F19.project-structure","i-lucide-folder-tree",{"title":136,"icon":137,"path":138,"stem":139,"children":140,"page":45},"Capabilities","i-lucide-sparkles","\u002Fdocs\u002Fcapabilities","docs\u002F03.capabilities",[141,145,150,155,160,164,169,174,179,184,188,193,198,203,208,213],{"title":142,"path":143,"stem":144,"icon":137},"Overview","\u002Fdocs\u002Fcapabilities\u002Foverview","docs\u002F03.capabilities\u002F01.overview",{"title":146,"path":147,"stem":148,"icon":149},"Events","\u002Fdocs\u002Fcapabilities\u002Fevents","docs\u002F03.capabilities\u002F02.events","i-lucide-radio-tower",{"title":151,"path":152,"stem":153,"icon":154},"Queue","\u002Fdocs\u002Fcapabilities\u002Fbackground-jobs","docs\u002F03.capabilities\u002F03.background-jobs","i-lucide-list-ordered",{"title":156,"path":157,"stem":158,"icon":159},"Scheduled Work","\u002Fdocs\u002Fcapabilities\u002Fscheduled-jobs","docs\u002F03.capabilities\u002F04.scheduled-jobs","i-lucide-clock",{"title":161,"path":162,"stem":163,"icon":85},"Caching","\u002Fdocs\u002Fcapabilities\u002Fcaching","docs\u002F03.capabilities\u002F05.caching",{"title":165,"path":166,"stem":167,"icon":168},"Key\u002FValue Storage","\u002Fdocs\u002Fcapabilities\u002Fkey-value","docs\u002F03.capabilities\u002F06.key-value","i-lucide-hard-drive",{"title":170,"path":171,"stem":172,"icon":173},"Blob Storage","\u002Fdocs\u002Fcapabilities\u002Fblob","docs\u002F03.capabilities\u002F07.blob","i-lucide-folder-open",{"title":175,"path":176,"stem":177,"icon":178},"Health & Readiness","\u002Fdocs\u002Fcapabilities\u002Fhealth","docs\u002F03.capabilities\u002F08.health","i-lucide-heart-pulse",{"title":180,"path":181,"stem":182,"icon":183},"Notifications","\u002Fdocs\u002Fcapabilities\u002Fnotifications","docs\u002F03.capabilities\u002F09.notifications","i-lucide-mail",{"title":185,"path":186,"stem":187,"icon":65},"Idempotency","\u002Fdocs\u002Fcapabilities\u002Fidempotency","docs\u002F03.capabilities\u002F10.idempotency",{"title":189,"path":190,"stem":191,"icon":192},"Security Hardening","\u002Fdocs\u002Fcapabilities\u002Fsecurity","docs\u002F03.capabilities\u002F11.security","i-lucide-shield",{"title":194,"path":195,"stem":196,"icon":197},"Observability & Tracing","\u002Fdocs\u002Fcapabilities\u002Fobservability","docs\u002F03.capabilities\u002F12.observability","i-lucide-activity",{"title":199,"path":200,"stem":201,"icon":202},"OpenAPI","\u002Fdocs\u002Fcapabilities\u002Fopenapi","docs\u002F03.capabilities\u002F13.openapi","i-lucide-book-marked",{"title":204,"path":205,"stem":206,"icon":207},"MCP Server","\u002Fdocs\u002Fcapabilities\u002Fmcp","docs\u002F03.capabilities\u002F14.mcp","i-lucide-bot",{"title":209,"path":210,"stem":211,"icon":212},"Schema DTOs","\u002Fdocs\u002Fcapabilities\u002Fschema","docs\u002F03.capabilities\u002F15.schema","i-lucide-file-json",{"title":214,"path":215,"stem":216,"icon":217},"Branded IDs","\u002Fdocs\u002Fcapabilities\u002Fbranded-ids","docs\u002F03.capabilities\u002F16.branded-ids","i-lucide-tag",{"title":219,"icon":220,"path":221,"stem":222,"children":223,"page":45},"Architecture","i-lucide-building","\u002Fdocs\u002Farchitecture","docs\u002F04.architecture",[224,227,232,237,242,247,252],{"title":142,"path":225,"stem":226,"icon":220},"\u002Fdocs\u002Farchitecture\u002Foverview","docs\u002F04.architecture\u002F01.overview",{"title":228,"path":229,"stem":230,"icon":231},"Domain-Driven Design","\u002Fdocs\u002Farchitecture\u002Fddd","docs\u002F04.architecture\u002F02.ddd","i-lucide-hexagon",{"title":233,"path":234,"stem":235,"icon":236},"CQRS","\u002Fdocs\u002Farchitecture\u002Fcqrs","docs\u002F04.architecture\u002F03.cqrs","i-lucide-split",{"title":238,"path":239,"stem":240,"icon":241},"Repository Pattern","\u002Fdocs\u002Farchitecture\u002Frepository-pattern","docs\u002F04.architecture\u002F04.repository-pattern","i-lucide-archive",{"title":243,"path":244,"stem":245,"icon":246},"Integration Events","\u002Fdocs\u002Farchitecture\u002Fintegration-events","docs\u002F04.architecture\u002F05.integration-events","i-lucide-send-horizontal",{"title":248,"path":249,"stem":250,"icon":251},"Saga Orchestration","\u002Fdocs\u002Farchitecture\u002Fsagas","docs\u002F04.architecture\u002F06.sagas","i-lucide-hourglass",{"title":253,"path":254,"stem":255,"icon":256},"Durable Workflows","\u002Fdocs\u002Farchitecture\u002Fworkflows","docs\u002F04.architecture\u002F07.workflows","i-lucide-workflow",{"title":258,"icon":259,"path":260,"stem":261,"children":262,"page":45},"Realtime","i-lucide-cable","\u002Fdocs\u002Frealtime","docs\u002F05.realtime",[263,266,270,274,279,284,288],{"title":142,"path":264,"stem":265,"icon":259},"\u002Fdocs\u002Frealtime\u002Foverview","docs\u002F05.realtime\u002F01.overview",{"title":267,"path":268,"stem":269,"icon":129},"WebSockets","\u002Fdocs\u002Frealtime\u002Fwebsockets","docs\u002F05.realtime\u002F02.websockets",{"title":271,"path":272,"stem":273,"icon":70},"WebSocket Contracts","\u002Fdocs\u002Frealtime\u002Fwebsocket-contracts","docs\u002F05.realtime\u002F03.websocket-contracts",{"title":275,"path":276,"stem":277,"icon":278},"Server-Sent Events","\u002Fdocs\u002Frealtime\u002Fserver-sent-events","docs\u002F05.realtime\u002F04.server-sent-events","i-lucide-rss",{"title":280,"path":281,"stem":282,"icon":283},"Typed Clients","\u002Fdocs\u002Frealtime\u002Ftyped-clients","docs\u002F05.realtime\u002F05.typed-clients","i-lucide-plug-zap",{"title":285,"path":286,"stem":287,"icon":259},"AsyncAPI","\u002Fdocs\u002Frealtime\u002Fasyncapi","docs\u002F05.realtime\u002F06.asyncapi",{"title":289,"path":290,"stem":291,"icon":80},"Durable Objects","\u002Fdocs\u002Frealtime\u002Fdurable-objects","docs\u002F05.realtime\u002F07.durable-objects",{"title":293,"icon":294,"path":295,"stem":296,"children":297,"page":45},"Deploy","i-lucide-cloud-upload","\u002Fdocs\u002Fdeploy","docs\u002F06.deploy",[298,301,306,311,316,321,326,331,336,341,345,350],{"title":142,"path":299,"stem":300,"icon":6},"\u002Fdocs\u002Fdeploy\u002Foverview","docs\u002F06.deploy\u002F01.overview",{"title":302,"path":303,"stem":304,"icon":305},"Node","\u002Fdocs\u002Fdeploy\u002Fnode","docs\u002F06.deploy\u002F02.node","la:node-js",{"title":307,"path":308,"stem":309,"icon":310},"Cloudflare","\u002Fdocs\u002Fdeploy\u002Fcloudflare","docs\u002F06.deploy\u002F03.cloudflare","simple-icons:cloudflare",{"title":312,"path":313,"stem":314,"icon":315},"Vercel","\u002Fdocs\u002Fdeploy\u002Fvercel","docs\u002F06.deploy\u002F04.vercel","ri:vercel-fill",{"title":317,"path":318,"stem":319,"icon":320},"Netlify","\u002Fdocs\u002Fdeploy\u002Fnetlify","docs\u002F06.deploy\u002F05.netlify","i-simple-icons-netlify",{"title":322,"path":323,"stem":324,"icon":325},"AWS Lambda","\u002Fdocs\u002Fdeploy\u002Faws-lambda","docs\u002F06.deploy\u002F06.aws-lambda","hugeicons:aws-lambda",{"title":327,"path":328,"stem":329,"icon":330},"Deno Deploy","\u002Fdocs\u002Fdeploy\u002Fdeno-deploy","docs\u002F06.deploy\u002F07.deno-deploy","simple-icons:denodeploy",{"title":332,"path":333,"stem":334,"icon":335},"Nitro","\u002Fdocs\u002Fdeploy\u002Fnitro","docs\u002F06.deploy\u002F08.nitro","i-unjs-nitro",{"title":337,"path":338,"stem":339,"icon":340},"Nuxt","\u002Fdocs\u002Fdeploy\u002Fnuxt","docs\u002F06.deploy\u002F09.nuxt","i-devicon-nuxt",{"title":342,"path":343,"stem":344,"icon":236},"Mixed-runtime split","\u002Fdocs\u002Fdeploy\u002Fmixed-runtime-split","docs\u002F06.deploy\u002F10.mixed-runtime-split",{"title":346,"path":347,"stem":348,"icon":349},"Hosts","\u002Fdocs\u002Fdeploy\u002Fhosts","docs\u002F06.deploy\u002F11.hosts","i-lucide-map",{"title":351,"path":352,"stem":353,"icon":354},"Cross-service events","\u002Fdocs\u002Fdeploy\u002Fcross-service-events","docs\u002F06.deploy\u002F12.cross-service-events","i-lucide-network",{"title":356,"icon":357,"path":358,"stem":359,"children":360,"page":45},"CLI","i-lucide-terminal","\u002Fdocs\u002Fcli","docs\u002F07.cli",[361,365,369,373],{"title":362,"path":363,"stem":364,"icon":357},"The heximon CLI","\u002Fdocs\u002Fcli\u002Foverview","docs\u002F07.cli\u002F01.overview",{"title":366,"path":367,"stem":368,"icon":137},"Create a New App","\u002Fdocs\u002Fcli\u002Fcreate","docs\u002F07.cli\u002F02.create",{"title":370,"path":371,"stem":372,"icon":95},"Migrations from the CLI","\u002Fdocs\u002Fcli\u002Fmigrations","docs\u002F07.cli\u002F03.migrations",{"title":374,"path":375,"stem":376,"icon":6},"Deploying a Heximon app","\u002Fdocs\u002Fcli\u002Fdeploy","docs\u002F07.cli\u002F04.deploy",{"title":378,"icon":379,"path":380,"stem":381,"children":382,"page":45},"Under the Hood","i-lucide-wrench","\u002Fdocs\u002Funder-the-hood","docs\u002F08.under-the-hood",[383,388,393,397,402,407,411,415],{"title":384,"path":385,"stem":386,"icon":387},"How the Compiler Works","\u002Fdocs\u002Funder-the-hood\u002Fhow-the-compiler-works","docs\u002F08.under-the-hood\u002F01.how-the-compiler-works","i-lucide-cog",{"title":389,"path":390,"stem":391,"icon":392},"Compiler","\u002Fdocs\u002Funder-the-hood\u002Fextending-the-compiler","docs\u002F08.under-the-hood\u002F02.extending-the-compiler","i-lucide-cpu",{"title":394,"path":395,"stem":396,"icon":357},"Compiler Diagnostics","\u002Fdocs\u002Funder-the-hood\u002Fcompiler-diagnostics","docs\u002F08.under-the-hood\u002F03.compiler-diagnostics",{"title":398,"path":399,"stem":400,"icon":401},"Library Mode","\u002Fdocs\u002Funder-the-hood\u002Flibrary-mode","docs\u002F08.under-the-hood\u002F04.library-mode","i-lucide-package",{"title":403,"path":404,"stem":405,"icon":406},"Other bundlers","\u002Fdocs\u002Funder-the-hood\u002Falternate-bundlers","docs\u002F08.under-the-hood\u002F05.alternate-bundlers","i-lucide-blocks",{"title":408,"path":409,"stem":410,"icon":401},"Packages","\u002Fdocs\u002Funder-the-hood\u002Fpackages","docs\u002F08.under-the-hood\u002F06.packages",{"title":412,"path":413,"stem":414,"icon":207},"AI Skills","\u002Fdocs\u002Funder-the-hood\u002Fai-and-agents","docs\u002F08.under-the-hood\u002F07.ai-and-agents",{"title":416,"path":417,"stem":418,"icon":419},"Advanced DI","\u002Fdocs\u002Funder-the-hood\u002Fadvanced-di","docs\u002F08.under-the-hood\u002F08.advanced-di","i-lucide-git-fork",{"title":421,"icon":422,"path":423,"stem":424,"children":425,"page":45},"Recipes","i-lucide-book-open-check","\u002Fdocs\u002Frecipes","docs\u002F09.recipes",[426,431,436,440,444,448,452,456,460,465,469,474,479,484,488],{"title":427,"path":428,"stem":429,"icon":430},"Send an Email","\u002Fdocs\u002Frecipes\u002Fsend-an-email","docs\u002F09.recipes\u002F01.send-an-email","i-lucide-send",{"title":432,"path":433,"stem":434,"icon":435},"Upload a File","\u002Fdocs\u002Frecipes\u002Fupload-a-file","docs\u002F09.recipes\u002F02.upload-a-file","i-lucide-upload",{"title":437,"path":438,"stem":439,"icon":24},"Cache an Expensive Call","\u002Fdocs\u002Frecipes\u002Fcache-an-expensive-call","docs\u002F09.recipes\u002F03.cache-an-expensive-call",{"title":441,"path":442,"stem":443,"icon":154},"Paginate a List","\u002Fdocs\u002Frecipes\u002Fpaginate-a-list","docs\u002F09.recipes\u002F04.paginate-a-list",{"title":445,"path":446,"stem":447,"icon":65},"Protect Admin Routes","\u002Fdocs\u002Frecipes\u002Fprotect-admin-routes","docs\u002F09.recipes\u002F05.protect-admin-routes",{"title":449,"path":450,"stem":451,"icon":178},"Health Probes and a Nightly Job","\u002Fdocs\u002Frecipes\u002Fhealth-probes-and-a-nightly-job","docs\u002F09.recipes\u002F06.health-probes-and-a-nightly-job",{"title":453,"path":454,"stem":455,"icon":80},"Build a CRUD API","\u002Fdocs\u002Frecipes\u002Fcrud-api","docs\u002F09.recipes\u002F07.crud-api",{"title":457,"path":458,"stem":459,"icon":100},"Add Authentication","\u002Fdocs\u002Frecipes\u002Fadd-authentication","docs\u002F09.recipes\u002F08.add-authentication",{"title":461,"path":462,"stem":463,"icon":464},"Background Jobs","\u002Fdocs\u002Frecipes\u002Fbackground-jobs","docs\u002F09.recipes\u002F09.background-jobs","i-lucide-timer",{"title":466,"path":467,"stem":468,"icon":149},"Decouple Features with Events","\u002Fdocs\u002Frecipes\u002Fevent-driven-module","docs\u002F09.recipes\u002F10.event-driven-module",{"title":470,"path":471,"stem":472,"icon":473},"Build a DDD Aggregate","\u002Fdocs\u002Frecipes\u002Fddd-aggregate","docs\u002F09.recipes\u002F11.ddd-aggregate","i-lucide-box",{"title":475,"path":476,"stem":477,"icon":478},"Publish a Feature Package","\u002Fdocs\u002Frecipes\u002Ffeature-package","docs\u002F09.recipes\u002F12.feature-package","i-lucide-package-open",{"title":480,"path":481,"stem":482,"icon":483},"Reliable Integration Events","\u002Fdocs\u002Frecipes\u002Freliable-integration-events","docs\u002F09.recipes\u002F13.reliable-integration-events","i-lucide-inbox",{"title":485,"path":486,"stem":487,"icon":95},"Reactive Choreography","\u002Fdocs\u002Frecipes\u002Freactive-choreography","docs\u002F09.recipes\u002F14.reactive-choreography",{"title":489,"path":490,"stem":491,"icon":492},"Build a Production CRUD API","\u002Fdocs\u002Frecipes\u002Fproduction-crud-api","docs\u002F09.recipes\u002F15.production-crud-api","i-lucide-layers",{"id":494,"title":366,"body":495,"description":1141,"extension":1142,"links":1143,"meta":1144,"navigation":1145,"path":367,"seo":1146,"stem":368,"__hash__":1147},"docs\u002Fdocs\u002F07.cli\u002F02.create.md",{"type":496,"value":497,"toc":1135},"minimark",[498,518,618,625,738,743,871,908,921,925,951,958,965,969,1095,1109,1113,1131],[499,500,501,505,506,509,510,513,514,517],"p",{},[502,503,504],"code",{},"heximon create"," scaffolds a complete, working app — a module, a controller, a provider, the\n",[502,507,508],{},"heximon.config.ts"," capability manifest, and the Vite + TypeScript setup — so your first ",[502,511,512],{},"pnpm dev"," is\nminutes away. A brand-new machine needs nothing pre-installed: every package manager's ",[502,515,516],{},"create","\nconvention maps onto the same command.",[519,520,521,549,566,582,598],"code-group",{},[522,523,529],"pre",{"className":524,"code":525,"filename":526,"language":527,"meta":528,"style":528},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm create heximon my-app\n","pnpm","bash","",[502,530,531],{"__ignoreMap":528},[532,533,536,539,543,546],"span",{"class":534,"line":535},"line",1,[532,537,526],{"class":538},"sBMFI",[532,540,542],{"class":541},"sfazB"," create",[532,544,545],{"class":541}," heximon",[532,547,548],{"class":541}," my-app\n",[522,550,553],{"className":524,"code":551,"filename":552,"language":527,"meta":528,"style":528},"npm create heximon@latest my-app\n","npm",[502,554,555],{"__ignoreMap":528},[532,556,557,559,561,564],{"class":534,"line":535},[532,558,552],{"class":538},[532,560,542],{"class":541},[532,562,563],{"class":541}," heximon@latest",[532,565,548],{"class":541},[522,567,570],{"className":524,"code":568,"filename":569,"language":527,"meta":528,"style":528},"yarn create heximon my-app\n","yarn",[502,571,572],{"__ignoreMap":528},[532,573,574,576,578,580],{"class":534,"line":535},[532,575,569],{"class":538},[532,577,542],{"class":541},[532,579,545],{"class":541},[532,581,548],{"class":541},[522,583,586],{"className":524,"code":584,"filename":585,"language":527,"meta":528,"style":528},"bun create heximon my-app\n","bun",[502,587,588],{"__ignoreMap":528},[532,589,590,592,594,596],{"class":534,"line":535},[532,591,585],{"class":538},[532,593,542],{"class":541},[532,595,545],{"class":541},[532,597,548],{"class":541},[522,599,602],{"className":524,"code":600,"filename":601,"language":527,"meta":528,"style":528},"heximon create my-app  # with the CLI installed globally\n","heximon CLI",[502,603,604],{"__ignoreMap":528},[532,605,606,609,611,614],{"class":534,"line":535},[532,607,608],{"class":538},"heximon",[532,610,542],{"class":541},[532,612,613],{"class":541}," my-app",[532,615,617],{"class":616},"sHwdD","  # with the CLI installed globally\n",[499,619,620,621,624],{},"Run it bare and it prompts for everything; run it with flags (",[502,622,623],{},"--yes"," accepts every default) and it's\nCI-scriptable:",[519,626,627,661,688,713],{},[522,628,630],{"className":524,"code":629,"filename":526,"language":527,"meta":528,"style":528},"pnpm create heximon my-shop -- --template database --validator zod --yes\n",[502,631,632],{"__ignoreMap":528},[532,633,634,636,638,640,643,646,649,652,655,658],{"class":534,"line":535},[532,635,526],{"class":538},[532,637,542],{"class":541},[532,639,545],{"class":541},[532,641,642],{"class":541}," my-shop",[532,644,645],{"class":541}," --",[532,647,648],{"class":541}," --template",[532,650,651],{"class":541}," database",[532,653,654],{"class":541}," --validator",[532,656,657],{"class":541}," zod",[532,659,660],{"class":541}," --yes\n",[522,662,664],{"className":524,"code":663,"filename":552,"language":527,"meta":528,"style":528},"npm create heximon@latest my-shop -- --template database --validator zod --yes\n",[502,665,666],{"__ignoreMap":528},[532,667,668,670,672,674,676,678,680,682,684,686],{"class":534,"line":535},[532,669,552],{"class":538},[532,671,542],{"class":541},[532,673,563],{"class":541},[532,675,642],{"class":541},[532,677,645],{"class":541},[532,679,648],{"class":541},[532,681,651],{"class":541},[532,683,654],{"class":541},[532,685,657],{"class":541},[532,687,660],{"class":541},[522,689,691],{"className":524,"code":690,"filename":569,"language":527,"meta":528,"style":528},"yarn create heximon my-shop --template database --validator zod --yes\n",[502,692,693],{"__ignoreMap":528},[532,694,695,697,699,701,703,705,707,709,711],{"class":534,"line":535},[532,696,569],{"class":538},[532,698,542],{"class":541},[532,700,545],{"class":541},[532,702,642],{"class":541},[532,704,648],{"class":541},[532,706,651],{"class":541},[532,708,654],{"class":541},[532,710,657],{"class":541},[532,712,660],{"class":541},[522,714,716],{"className":524,"code":715,"filename":585,"language":527,"meta":528,"style":528},"bun create heximon my-shop --template database --validator zod --yes\n",[502,717,718],{"__ignoreMap":528},[532,719,720,722,724,726,728,730,732,734,736],{"class":534,"line":535},[532,721,585],{"class":538},[532,723,542],{"class":541},[532,725,545],{"class":541},[532,727,642],{"class":541},[532,729,648],{"class":541},[532,731,651],{"class":541},[532,733,654],{"class":541},[532,735,657],{"class":541},[532,737,660],{"class":541},[739,740,742],"h2",{"id":741},"what-you-choose","What you choose",[744,745,746,766],"table",{},[747,748,749],"thead",{},[750,751,752,757,760,763],"tr",{},[753,754,756],"th",{"align":755},"left","Prompt",[753,758,759],{"align":755},"Options",[753,761,762],{"align":755},"Default",[753,764,765],{"align":755},"Flag",[767,768,769,786,809,834,853],"tbody",{},[750,770,771,775,778,783],{},[772,773,774],"td",{"align":755},"Project name",[772,776,777],{"align":755},"a directory-safe name",[772,779,780],{"align":755},[502,781,782],{},"my-heximon-app",[772,784,785],{"align":755},"the positional argument",[750,787,788,791,800,804],{},[772,789,790],{"align":755},"Template",[772,792,793,796,797],{"align":755},[502,794,795],{},"minimal"," \u002F ",[502,798,799],{},"database",[772,801,802],{"align":755},[502,803,795],{},[772,805,806],{"align":755},[502,807,808],{},"--template",[750,810,811,814,825,829],{},[772,812,813],{"align":755},"Validator",[772,815,816,796,819,796,822],{"align":755},[502,817,818],{},"zod",[502,820,821],{},"valibot",[502,823,824],{},"none",[772,826,827],{"align":755},[502,828,818],{},[772,830,831],{"align":755},[502,832,833],{},"--validator",[750,835,836,839,842,845],{},[772,837,838],{"align":755},"Install dependencies",[772,840,841],{"align":755},"yes \u002F no",[772,843,844],{"align":755},"yes (interactive)",[772,846,847,796,850],{"align":755},[502,848,849],{},"--install",[502,851,852],{},"--no-install",[750,854,855,858,860,863],{},[772,856,857],{"align":755},"Git init",[772,859,841],{"align":755},[772,861,862],{"align":755},"yes",[772,864,865,796,868],{"align":755},[502,866,867],{},"--git",[502,869,870],{},"--no-git",[872,873,874,883,898],"ul",{},[875,876,877,882],"li",{},[878,879,880],"strong",{},[502,881,795],{}," — the smallest real app: one module, one controller with routes declared by handler\nparameter types, one constructor-injected provider.",[875,884,885,889,890,893,894,897],{},[878,886,887],{},[502,888,799],{}," — a tasks CRUD API over Drizzle ORM on libsql\u002FSQLite (",[502,891,892],{},":memory:"," by default, so there\nis no database server to install), including an in-process end-to-end test via ",[502,895,896],{},"createTestApp",".",[875,899,900,901,904,905,907],{},"The validator choice adds a schema file and a validated ",[502,902,903],{},"POST"," route — one schema declaration is both\nthe body's static type and its runtime validator. ",[502,906,824],{}," keeps hand-checked bodies.",[499,909,910,913,914,916,917,920],{},[502,911,912],{},"--pm npm|pnpm|yarn|bun"," overrides the detected package manager (the one that invoked ",[502,915,516],{}," wins by\ndefault); ",[502,918,919],{},"--cwd"," picks the parent directory.",[739,922,924],{"id":923},"where-templates-come-from","Where templates come from",[499,926,927,928,937,938,943,944,947,948,897],{},"Templates live in ",[929,930,934],"a",{"href":931,"rel":932},"https:\u002F\u002Fgithub.com\u002Fheximon\u002Fstarters",[933],"nofollow",[502,935,936],{},"heximon\u002Fstarters"," — one directory per\ntemplate — and are fetched with ",[929,939,942],{"href":940,"rel":941},"https:\u002F\u002Funjs.io\u002Fpackages\u002Fgiget",[933],"giget"," at create time, so template\nfixes reach you without waiting for a framework release. The CLI tries the branch matching its own\nminor version first (",[502,945,946],{},"v0.1"," for a 0.1.x CLI) and falls back to ",[502,949,950],{},"main",[499,952,953,954,957],{},"After fetching, it stamps your project name and pins every ",[502,955,956],{},"@heximon\u002F*"," dependency to the CLI's own\nversion (the CLI releases in lockstep with the framework, so the two always agree).",[499,959,960,961,964],{},"Scaffolding into an existing git repository skips ",[502,962,963],{},"git init"," automatically — nesting a repository is\nnever what you want.",[739,966,968],{"id":967},"after-it-runs","After it runs",[519,970,971,1006,1037,1066],{},[522,972,974],{"className":524,"code":973,"filename":526,"language":527,"meta":528,"style":528},"cd my-app\npnpm install   # if you skipped the install step\npnpm dev       # http:\u002F\u002Flocalhost:3000\n",[502,975,976,984,995],{"__ignoreMap":528},[532,977,978,982],{"class":534,"line":535},[532,979,981],{"class":980},"s2Zo4","cd",[532,983,548],{"class":541},[532,985,987,989,992],{"class":534,"line":986},2,[532,988,526],{"class":538},[532,990,991],{"class":541}," install",[532,993,994],{"class":616},"   # if you skipped the install step\n",[532,996,998,1000,1003],{"class":534,"line":997},3,[532,999,526],{"class":538},[532,1001,1002],{"class":541}," dev",[532,1004,1005],{"class":616},"       # http:\u002F\u002Flocalhost:3000\n",[522,1007,1009],{"className":524,"code":1008,"filename":552,"language":527,"meta":528,"style":528},"cd my-app\nnpm install       # if you skipped the install step\nnpm run dev       # http:\u002F\u002Flocalhost:3000\n",[502,1010,1011,1017,1026],{"__ignoreMap":528},[532,1012,1013,1015],{"class":534,"line":535},[532,1014,981],{"class":980},[532,1016,548],{"class":541},[532,1018,1019,1021,1023],{"class":534,"line":986},[532,1020,552],{"class":538},[532,1022,991],{"class":541},[532,1024,1025],{"class":616},"       # if you skipped the install step\n",[532,1027,1028,1030,1033,1035],{"class":534,"line":997},[532,1029,552],{"class":538},[532,1031,1032],{"class":541}," run",[532,1034,1002],{"class":541},[532,1036,1005],{"class":616},[522,1038,1040],{"className":524,"code":1039,"filename":569,"language":527,"meta":528,"style":528},"cd my-app\nyarn install       # if you skipped the install step\nyarn run dev       # http:\u002F\u002Flocalhost:3000\n",[502,1041,1042,1048,1056],{"__ignoreMap":528},[532,1043,1044,1046],{"class":534,"line":535},[532,1045,981],{"class":980},[532,1047,548],{"class":541},[532,1049,1050,1052,1054],{"class":534,"line":986},[532,1051,569],{"class":538},[532,1053,991],{"class":541},[532,1055,1025],{"class":616},[532,1057,1058,1060,1062,1064],{"class":534,"line":997},[532,1059,569],{"class":538},[532,1061,1032],{"class":541},[532,1063,1002],{"class":541},[532,1065,1005],{"class":616},[522,1067,1069],{"className":524,"code":1068,"filename":585,"language":527,"meta":528,"style":528},"cd my-app\nbun install       # if you skipped the install step\nbun run dev       # http:\u002F\u002Flocalhost:3000\n",[502,1070,1071,1077,1085],{"__ignoreMap":528},[532,1072,1073,1075],{"class":534,"line":535},[532,1074,981],{"class":980},[532,1076,548],{"class":541},[532,1078,1079,1081,1083],{"class":534,"line":986},[532,1080,585],{"class":538},[532,1082,991],{"class":541},[532,1084,1025],{"class":616},[532,1086,1087,1089,1091,1093],{"class":534,"line":997},[532,1088,585],{"class":538},[532,1090,1032],{"class":541},[532,1092,1002],{"class":541},[532,1094,1005],{"class":616},[499,1096,1097,1098,1100,1101,1104,1105,1108],{},"Then read the generated ",[502,1099,508],{},": it is the app's ",[878,1102,1103],{},"capability manifest"," — the entire HTTP\nlayer is the one ",[502,1106,1107],{},"HttpPlugin"," entry, and every capability you add later (events, CQRS, queues, …) is\none more plugin in the same list.",[739,1110,1112],{"id":1111},"see-also","See also",[872,1114,1115,1121,1126],{},[875,1116,1117,1120],{},[929,1118,1119],{"href":22},"Quick start"," — the same first app, built by hand step by step.",[875,1122,1123,1125],{},[929,1124,16],{"href":17}," — what each installed package does.",[875,1127,1128,1130],{},[929,1129,362],{"href":363}," — the full command surface.",[1132,1133,1134],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":528,"searchDepth":986,"depth":986,"links":1136},[1137,1138,1139,1140],{"id":741,"depth":986,"text":742},{"id":923,"depth":986,"text":924},{"id":967,"depth":986,"text":968},{"id":1111,"depth":986,"text":1112},"heximon create (and pnpm create heximon) — scaffold a working Heximon app from a starter template in one command, with the template, validator, git, and install steps prompted or flagged.","md",null,{},{"icon":137},{"title":366,"description":1141},"aEkB0qDV4r289PaB6R_HV8Z-vQqkMLKvG_6jmjoduQ8",[1149,1151],{"title":362,"path":363,"stem":364,"description":1150,"icon":357,"children":-1},"heximon create, deploy, provision, and migrations — the commands the unscoped heximon package ships, scaffolding new apps, resolving credentials, running vp build, and shelling the vendor CLI for you.",{"title":370,"path":371,"stem":372,"description":1152,"icon":95,"children":-1},"heximon migrations generate\u002Fmigrate\u002Fstatus\u002Fpush — DatabaseConfigDetector auto-detects your DrizzleXConfig files, DotenvCascade loads .env, and DrizzleKitRunner drives .bin-resolved drizzle-kit with no hand-written drizzle.config.ts.",1783300761903]