[{"data":1,"prerenderedAt":555},["ShallowReactive",2],{"navigation":3,"\u002Fnest\u002Fdatabase":173,"\u002Fnest\u002Fdatabase-surround":550},[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":56,"body":175,"description":543,"extension":544,"links":545,"meta":546,"navigation":547,"path":57,"seo":548,"stem":58,"__hash__":549},"docs\u002F11.nest\u002F2.database\u002F1.index.md",{"type":176,"value":177,"toc":534},"minimark",[178,182,186,189,194,197,200,231,234,237,254,257,261,264,267,298,301,305,308,339,342,354,357,360,363,366,392,395,398,401,403,434,437,441,444,447,465,517,520,524,527,530],[179,180,56],"h1",{"id":181},"database",[183,184,185],"p",{},"OpenSya relies on a flexible and scalable database architecture powered by MongoDB.",[183,187,188],{},"The database runtime is fully orchestrated by OpenSya through filesystem conventions, runtime discovery and generated typings.",[190,191,193],"h2",{"id":192},"philosophy","Philosophy",[183,195,196],{},"Modern recruitment and business platforms handle highly dynamic and evolving data structures.",[183,198,199],{},"Examples include:",[201,202,203,207,210,213,216,219,222,225,228],"ul",{},[204,205,206],"li",{},"Candidate profiles",[204,208,209],{},"Job applications",[204,211,212],{},"Pipelines",[204,214,215],{},"Custom workflows",[204,217,218],{},"HR data",[204,220,221],{},"Activity logs",[204,223,224],{},"Attachments",[204,226,227],{},"Integrations",[204,229,230],{},"Analytics",[183,232,233],{},"These structures evolve constantly between organizations and business domains.",[183,235,236],{},"Because of this, OpenSya prioritizes:",[201,238,239,242,245,248,251],{},[204,240,241],{},"Flexibility",[204,243,244],{},"Scalability",[204,246,247],{},"Rapid iteration",[204,249,250],{},"Schema evolution",[204,252,253],{},"Modular architecture",[183,255,256],{},"OpenSya is designed for evolving infrastructures rather than rigid database schemas.\n::",[190,258,260],{"id":259},"why-mongodb","Why MongoDB?",[183,262,263],{},"OpenSya uses MongoDB because it aligns naturally with the architecture and goals of the platform.",[183,265,266],{},"MongoDB provides several advantages for OpenSya infrastructures:",[268,269,270,278,285,291],"card-group",{},[271,272,275],"card",{"icon":273,"title":274},"i-lucide-box","Flexible Schemas",[183,276,277],{},"Easily evolve data structures without complex migrations.",[271,279,282],{"icon":280,"title":281},"i-lucide-boxes","Modular Data",[183,283,284],{},"Perfect for modular architectures and independently evolving features.",[271,286,288],{"icon":287,"title":244},"i-lucide-server-cog",[183,289,290],{},"Built for scalable and distributed infrastructures.",[271,292,295],{"icon":293,"title":294},"i-lucide-badge-check","Developer Experience",[183,296,297],{},"Strong integration with TypeScript and generated typings.",[183,299,300],{},"MongoDB allows OpenSya to model recruitment and business workflows with far less friction than traditional relational architectures.",[190,302,304],{"id":303},"database-runtime","Database Runtime",[183,306,307],{},"The database layer is orchestrated automatically by the OpenSya runtime.",[309,310,316],"pre",{"className":311,"code":312,"filename":313,"language":314,"meta":315,"style":315},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","server\u002Fdatabase\u002F\n├── models\u002F\n└── plugins\u002F\n","Database Structure","txt","",[317,318,319,327,333],"code",{"__ignoreMap":315},[320,321,324],"span",{"class":322,"line":323},"line",1,[320,325,326],{},"server\u002Fdatabase\u002F\n",[320,328,330],{"class":322,"line":329},2,[320,331,332],{},"├── models\u002F\n",[320,334,336],{"class":322,"line":335},3,[320,337,338],{},"└── plugins\u002F\n",[183,340,341],{},"The runtime continuously discovers:",[201,343,344,346,348,351],{},[204,345,62],{},[204,347,67],{},[204,349,350],{},"Database definitions",[204,352,353],{},"Runtime hooks",[183,355,356],{},"and automatically integrates them into the generated backend runtime.",[190,358,62],{"id":359},"models",[183,361,362],{},"Models define application entities and business data structures.",[183,364,365],{},"Examples:",[309,367,369],{"className":311,"code":368,"filename":62,"language":314,"meta":315,"style":315},"server\u002Fdatabase\u002Fmodels\u002F\n├── user.ts\n├── company.ts\n├── apply.ts\n",[317,370,371,376,381,386],{"__ignoreMap":315},[320,372,373],{"class":322,"line":323},[320,374,375],{},"server\u002Fdatabase\u002Fmodels\u002F\n",[320,377,378],{"class":322,"line":329},[320,379,380],{},"├── user.ts\n",[320,382,383],{"class":322,"line":335},[320,384,385],{},"├── company.ts\n",[320,387,389],{"class":322,"line":388},4,[320,390,391],{},"├── apply.ts\n",[183,393,394],{},"Models are automatically discovered, registered and typed by the runtime.",[190,396,67],{"id":397},"plugins",[183,399,400],{},"Plugins provide reusable database behaviors and extensions shared across models.",[183,402,365],{},[309,404,406],{"className":311,"code":405,"filename":67,"language":314,"meta":315,"style":315},"server\u002Fdatabase\u002Fplugins\u002F\n├── timestamps.ts\n├── soft-delete.ts\n├── slug.ts\n└── audit.ts\n",[317,407,408,413,418,423,428],{"__ignoreMap":315},[320,409,410],{"class":322,"line":323},[320,411,412],{},"server\u002Fdatabase\u002Fplugins\u002F\n",[320,414,415],{"class":322,"line":329},[320,416,417],{},"├── timestamps.ts\n",[320,419,420],{"class":322,"line":335},[320,421,422],{},"├── soft-delete.ts\n",[320,424,425],{"class":322,"line":388},[320,426,427],{},"├── slug.ts\n",[320,429,431],{"class":322,"line":430},5,[320,432,433],{},"└── audit.ts\n",[183,435,436],{},"Plugins allow infrastructures to remain modular and maintainable at scale.",[190,438,440],{"id":439},"runtime-integration","Runtime Integration",[183,442,443],{},"The database runtime is deeply integrated into the OpenSya orchestration system.",[183,445,446],{},"During startup, OpenSya automatically:",[448,449,450,453,456,459,462],"ol",{},[204,451,452],{},"Discovers database definitions",[204,454,455],{},"Registers models",[204,457,458],{},"Loads plugins",[204,460,461],{},"Generates typings",[204,463,464],{},"Integrates the database layer into the backend runtime",[309,466,469],{"className":311,"code":467,"filename":468,"language":314,"meta":315,"style":315},"Filesystem Discovery\n        ↓\nModel Registration\n        ↓\nPlugin Initialization\n        ↓\nType Generation\n        ↓\nRuntime Integration\n","Runtime Lifecycle",[317,470,471,476,481,486,490,495,500,506,511],{"__ignoreMap":315},[320,472,473],{"class":322,"line":323},[320,474,475],{},"Filesystem Discovery\n",[320,477,478],{"class":322,"line":329},[320,479,480],{},"        ↓\n",[320,482,483],{"class":322,"line":335},[320,484,485],{},"Model Registration\n",[320,487,488],{"class":322,"line":388},[320,489,480],{},[320,491,492],{"class":322,"line":430},[320,493,494],{},"Plugin Initialization\n",[320,496,498],{"class":322,"line":497},6,[320,499,480],{},[320,501,503],{"class":322,"line":502},7,[320,504,505],{},"Type Generation\n",[320,507,509],{"class":322,"line":508},8,[320,510,480],{},[320,512,514],{"class":322,"line":513},9,[320,515,516],{},"Runtime Integration\n",[183,518,519],{},"Database orchestration is fully managed by the OpenSya runtime.\n::",[190,521,523],{"id":522},"future-evolution","Future Evolution",[183,525,526],{},"OpenSya currently focuses on MongoDB because it provides the best balance between flexibility, scalability and developer experience for recruitment infrastructures.",[183,528,529],{},"However, the architecture is intentionally designed to remain modular and extensible for future database integrations.",[531,532,533],"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":315,"searchDepth":323,"depth":329,"links":535},[536,537,538,539,540,541,542],{"id":192,"depth":329,"text":193},{"id":259,"depth":329,"text":260},{"id":303,"depth":329,"text":304},{"id":359,"depth":329,"text":62},{"id":397,"depth":329,"text":67},{"id":439,"depth":329,"text":440},{"id":522,"depth":329,"text":523},"Understand how OpenSya manages data and why MongoDB powers the backend infrastructure.","md",null,{},{"icon":8},{"title":56,"description":543},"5wAJncoo1OjfzlX6CGzSWz2K9yG2icaPfZKQz0LY2y0",[551,553],{"title":5,"path":53,"stem":54,"description":552,"icon":8,"children":-1},"Understand how OpenSya orchestrates the NestJS backend runtime.",{"title":62,"path":63,"stem":64,"description":554,"icon":65,"children":-1},"Learn how to define and orchestrate database models in OpenSya.",1779143770775]