[{"data":1,"prerenderedAt":592},["ShallowReactive",2],{"navigation":3,"\u002Fnest\u002Fintroduction":173,"\u002Fnest\u002Fintroduction-surround":587},[4,9,14,19,46,96,109,127,148],{"title":5,"path":6,"stem":7,"icon":8},"Introduction","\u002Fintroduction","01.introduction","i-lucide-info",{"title":10,"path":11,"stem":12,"icon":13},"Installation","\u002Finstallation","02.installation","i-lucide-circle-arrow-down",{"title":15,"path":16,"stem":17,"icon":18},"First App","\u002Ffirst-app","03.first-app","i-lucide-play",{"title":20,"icon":21,"path":22,"stem":23,"children":24,"page":45},"Core","i-lucide-container","\u002Fcore","10.core",[25,30,35,40],{"title":26,"path":27,"stem":28,"icon":29},"Architecture","\u002Fcore\u002Farchitecture","10.core\u002F1.architecture","i-lucide-folder-tree",{"title":31,"path":32,"stem":33,"icon":34},"Concepts","\u002Fcore\u002Fconcepts","10.core\u002F2.concepts","i-lucide-lightbulb",{"title":36,"path":37,"stem":38,"icon":39},"Runtime","\u002Fcore\u002Fruntime","10.core\u002F3.runtime","i-lucide-cpu",{"title":41,"path":42,"stem":43,"icon":44},"Modules","\u002Fcore\u002Fmodules","10.core\u002F4.modules","i-lucide-puzzle",false,{"title":47,"icon":48,"path":49,"stem":50,"children":51,"page":45},"Server","i-simple-icons-nestjs","\u002Fnest","11.nest",[52,55,72,77,82,87,92],{"title":5,"path":53,"stem":54,"icon":8},"\u002Fnest\u002Fintroduction","11.nest\u002F1.introduction",{"title":56,"path":57,"stem":58,"children":59,"icon":71},"Database","\u002Fnest\u002Fdatabase","11.nest\u002F2.database\u002F1.index",[60,61,66],{"title":56,"path":57,"stem":58,"icon":8},{"title":62,"path":63,"stem":64,"icon":65},"Models","\u002Fnest\u002Fdatabase\u002Fmodels","11.nest\u002F2.database\u002F2.models","i-lucide-database-zap",{"title":67,"path":68,"stem":69,"icon":70},"Plugins","\u002Fnest\u002Fdatabase\u002Fplugins","11.nest\u002F2.database\u002F3.plugins","i-lucide-plug","i-lucide-database",{"title":73,"path":74,"stem":75,"icon":76},"Controllers","\u002Fnest\u002Fcontrollers","11.nest\u002F3.controllers","i-lucide-route",{"title":78,"path":79,"stem":80,"icon":81},"Guards","\u002Fnest\u002Fguards","11.nest\u002F4.guards","i-lucide-shield-check",{"title":83,"path":84,"stem":85,"icon":86},"Services","\u002Fnest\u002Fservices","11.nest\u002F5.services","i-lucide-layers",{"title":88,"path":89,"stem":90,"icon":91},"Locales","\u002Fnest\u002Flocales","11.nest\u002F6.locales","i-lucide-languages",{"title":93,"path":94,"stem":95},"Env","\u002Fnest\u002Fenv","11.nest\u002F7.env",{"title":97,"icon":98,"path":99,"stem":100,"children":101,"page":45},"Client","i-simple-icons-nuxt","\u002Fnuxt","12.nuxt",[102,105],{"title":5,"path":103,"stem":104},"\u002Fnuxt\u002Fintroduction","12.nuxt\u002F1.introduction",{"title":106,"path":107,"stem":108},"Coming Soon","\u002Fnuxt\u002Fcoming-soon","12.nuxt\u002F2.coming-soon",{"title":110,"icon":111,"path":112,"stem":113,"children":114,"page":45},"Configuration","i-lucide-settings","\u002Fconfiguration","13.configuration",[115,119,123],{"title":116,"path":117,"stem":118},"Opensya Config","\u002Fconfiguration\u002Fopensya-config","13.configuration\u002F1.opensya-config",{"title":120,"path":121,"stem":122},"Runtime Config","\u002Fconfiguration\u002Fruntime-config","13.configuration\u002F2.runtime-config",{"title":124,"path":125,"stem":126},"Server Config","\u002Fconfiguration\u002Fserver-config","13.configuration\u002F3.server-config",{"title":128,"icon":129,"path":130,"stem":131,"children":132,"page":45},"Deployment","i-lucide-cloud","\u002Fdeployment","14.deployment",[133,136,140,144],{"title":5,"path":134,"stem":135},"\u002Fdeployment\u002Fintroduction","14.deployment\u002F1.introduction",{"title":137,"path":138,"stem":139},"Docker","\u002Fdeployment\u002Fdocker","14.deployment\u002F2.docker",{"title":141,"path":142,"stem":143},"Production","\u002Fdeployment\u002Fproduction","14.deployment\u002F3.production",{"title":145,"path":146,"stem":147},"Self Hosting","\u002Fdeployment\u002Fself-hosting","14.deployment\u002F4.self-hosting",{"title":149,"icon":150,"path":151,"stem":152,"children":153,"page":45},"Advanced","i-lucide-plus","\u002Fadvanced","15.advanced",[154,158,162,165,169],{"title":155,"path":156,"stem":157},"Internals","\u002Fadvanced\u002Finternals","15.advanced\u002F1.internals",{"title":159,"path":160,"stem":161},"Compiler","\u002Fadvanced\u002Fcompiler","15.advanced\u002F2.compiler",{"title":41,"path":163,"stem":164},"\u002Fadvanced\u002Fmodules","15.advanced\u002F3.modules",{"title":166,"path":167,"stem":168},"Globals","\u002Fadvanced\u002Fglobals","15.advanced\u002F4.globals",{"title":170,"path":171,"stem":172},"Lifecycle","\u002Fadvanced\u002Flifecycle","15.advanced\u002F5.lifecycle",{"id":174,"title":5,"body":175,"description":580,"extension":581,"links":582,"meta":583,"navigation":584,"path":53,"seo":585,"stem":54,"__hash__":586},"docs\u002F11.nest\u002F1.introduction.md",{"type":176,"value":177,"toc":571},"minimark",[178,183,187,190,198,203,206,209,212,231,234,238,241,264,267,271,274,335,338,342,345,348,419,422,426,429,432,442,445,463,512,515,519,522,525,555,558,561,564,567],[179,180,182],"h1",{"id":181},"nest-runtime","Nest Runtime",[184,185,186],"p",{},"The backend runtime of OpenSya is powered by NestJS and orchestrated through filesystem conventions, runtime discovery and generated typings.",[184,188,189],{},"Instead of manually configuring controllers, services, modules or providers, OpenSya continuously discovers and orchestrates the backend application automatically.",[191,192,195],"callout",{"color":193,"icon":194},"primary","i-lucide-box",[184,196,197],{},"NestJS is the engine. OpenSya is the orchestration layer.",[199,200,202],"h2",{"id":201},"philosophy","Philosophy",[184,204,205],{},"OpenSya does not replace NestJS.",[184,207,208],{},"It extends and orchestrates NestJS through conventions and runtime orchestration.",[184,210,211],{},"This allows developers to benefit from:",[213,214,215,219,222,225,228],"ul",{},[216,217,218],"li",{},"The NestJS ecosystem",[216,220,221],{},"Dependency injection",[216,223,224],{},"Scalable backend architecture",[216,226,227],{},"Modular development",[216,229,230],{},"Strong TypeScript support",[184,232,233],{},"while drastically reducing repetitive backend wiring and configuration.",[199,235,237],{"id":236},"runtime-responsibilities","Runtime Responsibilities",[184,239,240],{},"The OpenSya runtime automatically handles:",[213,242,243,246,249,252,255,258,261],{},[216,244,245],{},"Route discovery",[216,247,248],{},"Service registration",[216,250,251],{},"Database model loading",[216,253,254],{},"Plugin initialization",[216,256,257],{},"Guard registration",[216,259,260],{},"Runtime bootstrapping",[216,262,263],{},"Type generation",[184,265,266],{},"Developers focus on business logic while OpenSya handles runtime orchestration.",[199,268,270],{"id":269},"filesystem-structure","Filesystem Structure",[184,272,273],{},"The backend runtime is organized around filesystem conventions.",[275,276,282],"pre",{"className":277,"code":278,"filename":279,"language":280,"meta":281,"style":281},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","server\u002F\n├── controllers\u002F\n├── services\u002F\n├── database\u002F\n│   ├── models\u002F\n│   └── plugins\u002F\n├── guards\u002F\n└── locales\u002F\n","Backend Structure","txt","",[283,284,285,293,299,305,311,317,323,329],"code",{"__ignoreMap":281},[286,287,290],"span",{"class":288,"line":289},"line",1,[286,291,292],{},"server\u002F\n",[286,294,296],{"class":288,"line":295},2,[286,297,298],{},"├── controllers\u002F\n",[286,300,302],{"class":288,"line":301},3,[286,303,304],{},"├── services\u002F\n",[286,306,308],{"class":288,"line":307},4,[286,309,310],{},"├── database\u002F\n",[286,312,314],{"class":288,"line":313},5,[286,315,316],{},"│   ├── models\u002F\n",[286,318,320],{"class":288,"line":319},6,[286,321,322],{},"│   └── plugins\u002F\n",[286,324,326],{"class":288,"line":325},7,[286,327,328],{},"├── guards\u002F\n",[286,330,332],{"class":288,"line":331},8,[286,333,334],{},"└── locales\u002F\n",[184,336,337],{},"Each directory has a predefined runtime responsibility automatically understood by OpenSya.",[199,339,341],{"id":340},"runtime-discovery","Runtime Discovery",[184,343,344],{},"OpenSya continuously scans the backend filesystem to discover runtime definitions.",[184,346,347],{},"Examples:",[349,350,351,365],"table",{},[352,353,354],"thead",{},[355,356,357,362],"tr",{},[358,359,361],"th",{"align":360},"left","Directory",[358,363,364],{"align":360},"Runtime Responsibility",[366,367,368,379,389,399,409],"tbody",{},[355,369,370,376],{},[371,372,373],"td",{},[283,374,375],{},"server\u002Fcontrollers",[371,377,378],{},"HTTP route discovery",[355,380,381,386],{},[371,382,383],{},[283,384,385],{},"server\u002Fservices",[371,387,388],{},"Business service registration",[355,390,391,396],{},[371,392,393],{},[283,394,395],{},"server\u002Fdatabase\u002Fmodels",[371,397,398],{},"Database model discovery",[355,400,401,406],{},[371,402,403],{},[283,404,405],{},"server\u002Fdatabase\u002Fplugins",[371,407,408],{},"Database plugin loading",[355,410,411,416],{},[371,412,413],{},[283,414,415],{},"server\u002Fguards",[371,417,418],{},"Access control registration",[184,420,421],{},"The runtime transforms these discovered definitions into a fully orchestrated NestJS application.",[199,423,425],{"id":424},"runtime-generation","Runtime Generation",[184,427,428],{},"OpenSya automatically generates and executes the backend runtime.",[184,430,431],{},"The generated runtime is placed inside:",[275,433,436],{"className":277,"code":434,"filename":435,"language":280,"meta":281,"style":281},".opensya\u002Fserver\n",".opensya",[283,437,438],{"__ignoreMap":281},[286,439,440],{"class":288,"line":289},[286,441,434],{},[184,443,444],{},"During development and production startup, OpenSya:",[446,447,448,451,454,457,460],"ol",{},[216,449,450],{},"Discovers the filesystem structure",[216,452,453],{},"Generates the backend runtime",[216,455,456],{},"Registers runtime definitions",[216,458,459],{},"Bootstraps the NestJS application",[216,461,462],{},"Executes the generated runtime automatically",[275,464,467],{"className":277,"code":465,"filename":466,"language":280,"meta":281,"style":281},"Filesystem Discovery\n        ↓\nRuntime Generation\n        ↓\nNestJS Orchestration\n        ↓\nApplication Bootstrap\n        ↓\nRuntime Execution\n","Runtime Lifecycle",[283,468,469,474,479,484,488,493,497,502,506],{"__ignoreMap":281},[286,470,471],{"class":288,"line":289},[286,472,473],{},"Filesystem Discovery\n",[286,475,476],{"class":288,"line":295},[286,477,478],{},"        ↓\n",[286,480,481],{"class":288,"line":301},[286,482,483],{},"Runtime Generation\n",[286,485,486],{"class":288,"line":307},[286,487,478],{},[286,489,490],{"class":288,"line":313},[286,491,492],{},"NestJS Orchestration\n",[286,494,495],{"class":288,"line":319},[286,496,478],{},[286,498,499],{"class":288,"line":325},[286,500,501],{},"Application Bootstrap\n",[286,503,504],{"class":288,"line":331},[286,505,478],{},[286,507,509],{"class":288,"line":508},9,[286,510,511],{},"Runtime Execution\n",[184,513,514],{},"The generated backend runtime is fully managed by OpenSya and should not be edited manually.\n::",[199,516,518],{"id":517},"why-opensya-nestjs","Why OpenSya + NestJS?",[184,520,521],{},"OpenSya leverages the power of NestJS while reducing configuration complexity through conventions and runtime orchestration.",[184,523,524],{},"This provides:",[526,527,528,535,541,548],"card-group",{},[529,530,532],"card",{"icon":29,"title":531},"Convention Driven",[184,533,534],{},"Organize backend applications through filesystem conventions.",[529,536,538],{"icon":39,"title":537},"Runtime Orchestration",[184,539,540],{},"Automatically discover and orchestrate backend runtime definitions.",[529,542,545],{"icon":543,"title":544},"i-lucide-badge-check","Generated Typings",[184,546,547],{},"Generate strong typings automatically from discovered runtime structures.",[529,549,552],{"icon":550,"title":551},"i-lucide-boxes","Scalable Architecture",[184,553,554],{},"Build modular and scalable recruitment infrastructures.",[199,556,202],{"id":557},"philosophy-1",[184,559,560],{},"OpenSya is not a NestJS boilerplate.",[184,562,563],{},"It is a runtime architecture layer designed to orchestrate scalable backend infrastructures through conventions, runtime discovery and generated typings.",[184,565,566],{},"This allows teams to build modern recruitment and business platforms with less configuration and more consistency.",[568,569,570],"style",{},"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":281,"searchDepth":289,"depth":295,"links":572},[573,574,575,576,577,578,579],{"id":201,"depth":295,"text":202},{"id":236,"depth":295,"text":237},{"id":269,"depth":295,"text":270},{"id":340,"depth":295,"text":341},{"id":424,"depth":295,"text":425},{"id":517,"depth":295,"text":518},{"id":557,"depth":295,"text":202},"Understand how OpenSya orchestrates the NestJS backend runtime.","md",null,{},{"icon":8},{"title":5,"description":580},"96nOlERdhzmIfaBVcWwheTyNXZVMIVu8HJQ7hd2X3lY",[588,590],{"title":41,"path":42,"stem":43,"description":589,"icon":44,"children":-1},"Learn how OpenSya modules extend and orchestrate recruitment and business infrastructures.",{"title":56,"path":57,"stem":58,"description":591,"icon":8,"children":-1},"Understand how OpenSya manages data and why MongoDB powers the backend infrastructure.",1779143767266]