[{"data":1,"prerenderedAt":607},["ShallowReactive",2],{"navigation":3,"docs-path-index":152,"-docs-getting-started-examples":198,"-docs-getting-started-examples-surround":602},[4],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":52},"Docs","i-lucide-book-marked","\u002Fdocs","docs",[10,26,53,138],{"title":11,"path":12,"stem":13,"children":14,"icon":25},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started\u002F1.index",[15,17,21],{"title":16,"path":12,"stem":13},"Introduction",{"title":18,"path":19,"stem":20},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",{"title":22,"path":23,"stem":24},"Examples","\u002Fdocs\u002Fgetting-started\u002Fexamples","docs\u002F1.getting-started\u002F3.examples","i-lucide-rocket",{"title":27,"icon":28,"path":29,"stem":30,"children":31,"page":52},"Core features","i-lucide-square-function","\u002Fdocs\u002Fcore-features","docs\u002F2.core-features",[32,36,40,44,48],{"title":33,"path":34,"stem":35},"Configuration","\u002Fdocs\u002Fcore-features\u002Fconfiguration","docs\u002F2.core-features\u002F0.configuration",{"title":37,"path":38,"stem":39},"Dependency Injection","\u002Fdocs\u002Fcore-features\u002Fcontainer","docs\u002F2.core-features\u002F1.container",{"title":41,"path":42,"stem":43},"Controllers","\u002Fdocs\u002Fcore-features\u002Fcontrollers","docs\u002F2.core-features\u002F2.controllers",{"title":45,"path":46,"stem":47},"Middlewares","\u002Fdocs\u002Fcore-features\u002Fmiddlewares","docs\u002F2.core-features\u002F3.middlewares",{"title":49,"path":50,"stem":51},"Validation","\u002Fdocs\u002Fcore-features\u002Fvalidation","docs\u002F2.core-features\u002F4.validation",false,{"title":54,"icon":55,"defaultOpen":56,"path":57,"stem":58,"children":59,"page":52},"Modules","i-lucide-boxes",true,"\u002Fdocs\u002Fmodules","docs\u002F3.modules",[60,77,93,109,123,134],{"title":61,"icon":52,"defaultOpen":52,"path":62,"stem":63,"children":64,"page":52},"Auth","\u002Fdocs\u002Fmodules\u002Fauth","docs\u002F3.modules\u002F1.auth",[65,69,73],{"title":66,"path":67,"stem":68},"Overview","\u002Fdocs\u002Fmodules\u002Fauth\u002Foverview","docs\u002F3.modules\u002F1.auth\u002F0.overview",{"title":70,"path":71,"stem":72},"Decorators","\u002Fdocs\u002Fmodules\u002Fauth\u002Fdecorators","docs\u002F3.modules\u002F1.auth\u002F1.decorators",{"title":74,"path":75,"stem":76},"API Reference","\u002Fdocs\u002Fmodules\u002Fauth\u002Fapi","docs\u002F3.modules\u002F1.auth\u002F2.api",{"title":78,"icon":52,"defaultOpen":52,"path":79,"stem":80,"children":81,"page":52},"Logger","\u002Fdocs\u002Fmodules\u002Flogger","docs\u002F3.modules\u002F2.logger",[82,85,89],{"title":66,"path":83,"stem":84},"\u002Fdocs\u002Fmodules\u002Flogger\u002Foverview","docs\u002F3.modules\u002F2.logger\u002F0.overview",{"title":86,"path":87,"stem":88},"Drivers","\u002Fdocs\u002Fmodules\u002Flogger\u002Fdrivers","docs\u002F3.modules\u002F2.logger\u002F1.drivers",{"title":90,"path":91,"stem":92},"API","\u002Fdocs\u002Fmodules\u002Flogger\u002Fapi","docs\u002F3.modules\u002F2.logger\u002F2.api",{"title":94,"icon":52,"defaultOpen":52,"path":95,"stem":96,"children":97,"page":52},"Serverless","\u002Fdocs\u002Fmodules\u002Fserverless","docs\u002F3.modules\u002F3.serverless",[98,101,105],{"title":66,"path":99,"stem":100},"\u002Fdocs\u002Fmodules\u002Fserverless\u002Foverview","docs\u002F3.modules\u002F3.serverless\u002F0.overview",{"title":102,"path":103,"stem":104},"AWS Lambda","\u002Fdocs\u002Fmodules\u002Fserverless\u002Faws-lambda","docs\u002F3.modules\u002F3.serverless\u002F1.aws-lambda",{"title":106,"path":107,"stem":108},"Azure Functions","\u002Fdocs\u002Fmodules\u002Fserverless\u002Fazure-functions","docs\u002F3.modules\u002F3.serverless\u002F2.azure-functions",{"title":110,"icon":52,"defaultOpen":52,"path":111,"stem":112,"children":113,"page":52},"Storage","\u002Fdocs\u002Fmodules\u002Fstorage","docs\u002F3.modules\u002F4.storage",[114,117,120],{"title":66,"path":115,"stem":116},"\u002Fdocs\u002Fmodules\u002Fstorage\u002Foverview","docs\u002F3.modules\u002F4.storage\u002F0.overview",{"title":86,"path":118,"stem":119},"\u002Fdocs\u002Fmodules\u002Fstorage\u002Fdrivers","docs\u002F3.modules\u002F4.storage\u002F1.drivers",{"title":90,"path":121,"stem":122},"\u002Fdocs\u002Fmodules\u002Fstorage\u002Fapi","docs\u002F3.modules\u002F4.storage\u002F2.api",{"title":124,"icon":52,"defaultOpen":52,"path":125,"stem":126,"children":127,"page":52},"Web Sockets","\u002Fdocs\u002Fmodules\u002Fweb-sockets","docs\u002F3.modules\u002F5.web-sockets",[128,131],{"title":66,"path":129,"stem":130},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002Foverview","docs\u002F3.modules\u002F5.web-sockets\u002F0.overview",{"title":90,"path":132,"stem":133},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002Fapi","docs\u002F3.modules\u002F5.web-sockets\u002F1.api",{"title":135,"path":136,"stem":137},"MCP","\u002Fdocs\u002Fmodules\u002Fmcp","docs\u002F3.modules\u002F6.mcp",{"title":139,"icon":140,"defaultOpen":52,"path":141,"stem":142,"children":143,"page":52},"Advanced","i-lucide-brain","\u002Fdocs\u002Fadvanced","docs\u002F99.advanced",[144,148],{"title":145,"path":146,"stem":147},"Custom Decorator","\u002Fdocs\u002Fadvanced\u002Fcustom-decorator","docs\u002F99.advanced\u002F1.custom-decorator",{"title":149,"path":150,"stem":151},"Custom Plugin","\u002Fdocs\u002Fadvanced\u002Fcustom-plugin","docs\u002F99.advanced\u002F2.custom-plugin",[153,155,157,158,159,160,162,163,164,165,166,167,169,171,172,173,174,176,177,178,179,181,182,183,184,186,187,188,189,191,192,193,194,196,197],{"path":154},"\u002Fdocs\u002F.navigation",{"path":156},"\u002Fdocs\u002Fgetting-started\u002F.navigation",{"path":12},{"path":19},{"path":23},{"path":161},"\u002Fdocs\u002Fcore-features\u002F.navigation",{"path":34},{"path":38},{"path":42},{"path":46},{"path":50},{"path":168},"\u002Fdocs\u002Fmodules\u002F.navigation",{"path":170},"\u002Fdocs\u002Fmodules\u002Fauth\u002F.navigation",{"path":67},{"path":71},{"path":75},{"path":175},"\u002Fdocs\u002Fmodules\u002Flogger\u002F.navigation",{"path":83},{"path":87},{"path":91},{"path":180},"\u002Fdocs\u002Fmodules\u002Fserverless\u002F.navigation",{"path":99},{"path":103},{"path":107},{"path":185},"\u002Fdocs\u002Fmodules\u002Fstorage\u002F.navigation",{"path":115},{"path":118},{"path":121},{"path":190},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002F.navigation",{"path":129},{"path":132},{"path":136},{"path":195},"\u002Fdocs\u002Fadvanced\u002F.navigation",{"path":146},{"path":150},{"id":199,"title":22,"body":200,"description":596,"extension":597,"links":598,"meta":599,"navigation":56,"path":23,"seo":600,"stem":24,"__hash__":601},"docs\u002Fdocs\u002F1.getting-started\u002F3.examples.md",{"type":201,"value":202,"toc":593},"minimark",[203,207,309,314,325,339,342,564,570,589],[204,205,206],"p",{},"Below you'll find a collection of example applications that demonstrate various features and use cases of Vercube. These examples showcase common patterns, best practices, and different ways to structure your applications. Each example comes with detailed explanations and source code that you can use as a reference for your own projects.",[208,209,210,226],"table",{},[211,212,213],"thead",{},[214,215,216,220,223],"tr",{},[217,218,219],"th",{},"Example",[217,221,222],{},"Source",[217,224,225],{},"Try",[227,228,229,252,271,290],"tbody",{},[214,230,231,238,247],{},[232,233,234],"td",{},[235,236,237],"code",{},"hello-world",[232,239,240],{},[241,242,246],"a",{"href":243,"rel":244},"https:\u002F\u002Fgithub.com\u002Fvercube\u002Fvercube\u002Ftree\u002Fmain\u002Fexamples\u002Fbase\u002F",[245],"nofollow","examples\u002Fbase",[232,248,249],{},[235,250,251],{},"npx giget gh:vercube\u002Fvercube\u002Fexamples\u002Fbase vercube-base",[214,253,254,259,266],{},[232,255,256],{},[235,257,258],{},"aws-lambda",[232,260,261],{},[241,262,265],{"href":263,"rel":264},"https:\u002F\u002Fgithub.com\u002Fvercube\u002Fvercube\u002Ftree\u002Fmain\u002Fexamples\u002Faws-lambda\u002F",[245],"examples\u002Faws-lambda",[232,267,268],{},[235,269,270],{},"npx giget gh:vercube\u002Fvercube\u002Fexamples\u002Faws-lambda vercube-aws",[214,272,273,278,285],{},[232,274,275],{},[235,276,277],{},"azure-functions",[232,279,280],{},[241,281,284],{"href":282,"rel":283},"https:\u002F\u002Fgithub.com\u002Fvercube\u002Fvercube\u002Ftree\u002Fmain\u002Fexamples\u002Fazure-functions\u002F",[245],"examples\u002Fazure-functions",[232,286,287],{},[235,288,289],{},"npx giget gh:vercube\u002Fvercube\u002Fexamples\u002Fazure-functions vercube-azure",[214,291,292,297,304],{},[232,293,294],{},[235,295,296],{},"websockets",[232,298,299],{},[241,300,303],{"href":301,"rel":302},"https:\u002F\u002Fgithub.com\u002Fvercube\u002Fvercube\u002Ftree\u002Fmain\u002Fexamples\u002Fwebsockets\u002F",[245],"examples\u002Fwebsockets",[232,305,306],{},[235,307,308],{},"npx giget gh:vercube\u002Fvercube\u002Fexamples\u002Fwebsockets vercube-wss",[310,311,313],"h2",{"id":312},"playground-patterns","Playground patterns",[204,315,316,317,320,321,324],{},"The ",[235,318,319],{},"playground\u002F"," app includes reference implementations for common patterns. One example is a typed request-context wrapper that provides compile-time safety for ",[235,322,323],{},"RequestContext"," keys and values. See:",[326,327,328,334],"ul",{},[329,330,331],"li",{},[235,332,333],{},"playground\u002Fsrc\u002FServices\u002FTypedRequestContext.ts",[329,335,336],{},[235,337,338],{},"playground\u002Fsrc\u002FServices\u002FRequestContextKeys.ts",[204,340,341],{},"Usage looks like this:",[343,344,349],"pre",{"className":345,"code":346,"language":347,"meta":348,"style":348},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { Container, Inject } from '@vercube\u002Fdi';\nimport { TypedRequestContext } from '..\u002FServices\u002FTypedRequestContext';\nimport { RequestIdKey } from '..\u002FServices\u002FRequestContextKeys';\n\n@Inject(Container)\nprivate gContainer!: Container;\n\nconst ctx = this.gContainer.resolve(TypedRequestContext);\nctx.set(RequestIdKey, crypto.randomUUID());\n\nconst requestId = ctx.get(RequestIdKey);\n","ts","",[235,350,351,393,416,439,445,458,472,477,507,536,541],{"__ignoreMap":348},[352,353,356,360,364,368,371,374,377,380,383,387,390],"span",{"class":354,"line":355},"line",1,[352,357,359],{"class":358},"s7zQu","import",[352,361,363],{"class":362},"sMK4o"," {",[352,365,367],{"class":366},"sTEyZ"," Container",[352,369,370],{"class":362},",",[352,372,373],{"class":366}," Inject",[352,375,376],{"class":362}," }",[352,378,379],{"class":358}," from",[352,381,382],{"class":362}," '",[352,384,386],{"class":385},"sfazB","@vercube\u002Fdi",[352,388,389],{"class":362},"'",[352,391,392],{"class":362},";\n",[352,394,396,398,400,403,405,407,409,412,414],{"class":354,"line":395},2,[352,397,359],{"class":358},[352,399,363],{"class":362},[352,401,402],{"class":366}," TypedRequestContext",[352,404,376],{"class":362},[352,406,379],{"class":358},[352,408,382],{"class":362},[352,410,411],{"class":385},"..\u002FServices\u002FTypedRequestContext",[352,413,389],{"class":362},[352,415,392],{"class":362},[352,417,419,421,423,426,428,430,432,435,437],{"class":354,"line":418},3,[352,420,359],{"class":358},[352,422,363],{"class":362},[352,424,425],{"class":366}," RequestIdKey",[352,427,376],{"class":362},[352,429,379],{"class":358},[352,431,382],{"class":362},[352,433,434],{"class":385},"..\u002FServices\u002FRequestContextKeys",[352,436,389],{"class":362},[352,438,392],{"class":362},[352,440,442],{"class":354,"line":441},4,[352,443,444],{"emptyLinePlaceholder":56},"\n",[352,446,448,451,455],{"class":354,"line":447},5,[352,449,450],{"class":362},"@",[352,452,454],{"class":453},"s2Zo4","Inject",[352,456,457],{"class":366},"(Container)\n",[352,459,461,464,467,470],{"class":354,"line":460},6,[352,462,463],{"class":366},"private gContainer",[352,465,466],{"class":362},"!",[352,468,469],{"class":366},": Container",[352,471,392],{"class":362},[352,473,475],{"class":354,"line":474},7,[352,476,444],{"emptyLinePlaceholder":56},[352,478,480,484,487,490,493,496,499,502,505],{"class":354,"line":479},8,[352,481,483],{"class":482},"spNyl","const",[352,485,486],{"class":366}," ctx ",[352,488,489],{"class":362},"=",[352,491,492],{"class":362}," this.",[352,494,495],{"class":366},"gContainer",[352,497,498],{"class":362},".",[352,500,501],{"class":453},"resolve",[352,503,504],{"class":366},"(TypedRequestContext)",[352,506,392],{"class":362},[352,508,510,513,515,518,521,523,526,528,531,534],{"class":354,"line":509},9,[352,511,512],{"class":366},"ctx",[352,514,498],{"class":362},[352,516,517],{"class":453},"set",[352,519,520],{"class":366},"(RequestIdKey",[352,522,370],{"class":362},[352,524,525],{"class":366}," crypto",[352,527,498],{"class":362},[352,529,530],{"class":453},"randomUUID",[352,532,533],{"class":366},"())",[352,535,392],{"class":362},[352,537,539],{"class":354,"line":538},10,[352,540,444],{"emptyLinePlaceholder":56},[352,542,544,546,549,551,554,556,559,562],{"class":354,"line":543},11,[352,545,483],{"class":482},[352,547,548],{"class":366}," requestId ",[352,550,489],{"class":362},[352,552,553],{"class":366}," ctx",[352,555,498],{"class":362},[352,557,558],{"class":453},"get",[352,560,561],{"class":366},"(RequestIdKey)",[352,563,392],{"class":362},[204,565,566],{},[567,568,569],"strong",{},"Rationale",[326,571,572,575,586],{},[329,573,574],{},"Avoids string-typo bugs by centralizing keys.",[329,576,577,578,581,582,585],{},"Enforces value types at compile time (e.g., ",[235,579,580],{},"requestStartTime"," is always a ",[235,583,584],{},"number",").",[329,587,588],{},"Enables incremental adoption: typed access can live alongside existing string-based calls.",[590,591,592],"style",{},"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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);}",{"title":348,"searchDepth":355,"depth":395,"links":594},[595],{"id":312,"depth":395,"text":313},"Explore example Vercube applications to learn common patterns and best practices.","md",null,{},{"title":22,"description":596},"9bWVR7zz7wp8lXxTxE64iWqnDGnKu4f1Blio93KP12o",[603,605],{"title":18,"path":19,"stem":20,"description":604,"children":-1},"How to install and run Vercube.",{"title":33,"path":34,"stem":35,"description":606,"children":-1},"Configure your Vercube application",1775552780365]