[{"data":1,"prerenderedAt":469},["ShallowReactive",2],{"navigation":3,"\u002Fintroduction":173,"\u002Fintroduction-surround":466},[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":459,"extension":460,"links":461,"meta":462,"navigation":463,"path":6,"seo":464,"stem":7,"__hash__":465},"docs\u002F01.introduction.md",{"type":176,"value":177,"toc":452},"minimark",[178,182,185,188,207,214,219,222,225,242,245,248,251,287,290,310,313,317,320,370,373,376,380,410,414,417,420,423,434,437,448],[179,180,181],"p",{},"OpenSya Core is a convention-driven fullstack runtime designed to power modern recruitment and business platforms through modular architecture, filesystem conventions and generated typings.",[179,183,184],{},"Instead of manually wiring every controller, service, model, route or plugin, OpenSya automatically discovers and orchestrates your application based on your project structure.",[179,186,187],{},"The goal is simple:",[189,190,191,195,198,201,204],"ul",{},[192,193,194],"li",{},"Reduce repetitive configuration",[192,196,197],{},"Standardize architecture",[192,199,200],{},"Improve scalability",[192,202,203],{},"Generate consistent typings",[192,205,206],{},"Provide a unified fullstack developer experience",[208,209,211],"callout",{"color":210,"icon":34},"primary",[179,212,213],{},"OpenSya focuses on conventions and runtime orchestration rather than boilerplate generation.",[215,216,218],"h2",{"id":217},"the-opensya-vision","The OpenSya Vision",[179,220,221],{},"OpenSya is designed to become a complete and extensible infrastructure for recruitment platforms and business ecosystems.",[179,223,224],{},"The project aims to provide:",[189,226,227,230,233,236,239],{},[192,228,229],{},"A modular architecture",[192,231,232],{},"Fully self-hosted deployments",[192,234,235],{},"Shared fullstack conventions",[192,237,238],{},"Open and extensible runtimes",[192,240,241],{},"Strong ownership of data and infrastructure",[179,243,244],{},"Unlike traditional SaaS platforms, OpenSya is built around openness, extensibility and long-term scalability.",[215,246,26],{"id":247},"architecture",[179,249,250],{},"OpenSya Core currently provides two runtimes:",[252,253,258],"pre",{"className":254,"code":255,"filename":26,"language":256,"meta":257,"style":257},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","@opensya\u002Fcore\n├── nest\u002F    → Backend runtime powered by NestJS\n├── nuxt\u002F    → Frontend runtime powered by Nuxt (coming soon)\n└── shared\u002F  → Shared conventions and generated typings\n","txt","",[259,260,261,269,275,281],"code",{"__ignoreMap":257},[262,263,266],"span",{"class":264,"line":265},"line",1,[262,267,268],{},"@opensya\u002Fcore\n",[262,270,272],{"class":264,"line":271},2,[262,273,274],{},"├── nest\u002F    → Backend runtime powered by NestJS\n",[262,276,278],{"class":264,"line":277},3,[262,279,280],{},"├── nuxt\u002F    → Frontend runtime powered by Nuxt (coming soon)\n",[262,282,284],{"class":264,"line":283},4,[262,285,286],{},"└── shared\u002F  → Shared conventions and generated typings\n",[179,288,289],{},"The backend runtime is already available and handles:",[189,291,292,294,296,299,301,304,307],{},[192,293,73],{},[192,295,83],{},[192,297,298],{},"Database (models, plugins)",[192,300,78],{},[192,302,303],{},"Environment variables",[192,305,306],{},"Generated typings",[192,308,309],{},"Runtime orchestration",[179,311,312],{},"The frontend runtime will provide a shared convention system for Nuxt applications with integrated typing and module orchestration.",[215,314,316],{"id":315},"convention-driven","Convention Driven",[179,318,319],{},"OpenSya uses your filesystem as the primary source of truth.",[252,321,324],{"className":254,"code":322,"filename":323,"language":256,"meta":257,"style":257},"server\u002F\n├── controllers\u002F\n├── services\u002F\n├── database\u002F\n│   ├── models\u002F\n│   └── plugins\u002F\n├── guards\u002F\n└── locales\u002F\n","Example",[259,325,326,331,336,341,346,352,358,364],{"__ignoreMap":257},[262,327,328],{"class":264,"line":265},[262,329,330],{},"server\u002F\n",[262,332,333],{"class":264,"line":271},[262,334,335],{},"├── controllers\u002F\n",[262,337,338],{"class":264,"line":277},[262,339,340],{},"├── services\u002F\n",[262,342,343],{"class":264,"line":283},[262,344,345],{},"├── database\u002F\n",[262,347,349],{"class":264,"line":348},5,[262,350,351],{},"│   ├── models\u002F\n",[262,353,355],{"class":264,"line":354},6,[262,356,357],{},"│   └── plugins\u002F\n",[262,359,361],{"class":264,"line":360},7,[262,362,363],{},"├── guards\u002F\n",[262,365,367],{"class":264,"line":366},8,[262,368,369],{},"└── locales\u002F\n",[179,371,372],{},"Each directory has a specific responsibility and is automatically discovered by the runtime.",[179,374,375],{},"This allows developers to focus on business logic instead of framework wiring.",[215,377,379],{"id":378},"why-opensya","Why OpenSya?",[381,382,383,389,396,403],"card-group",{},[384,385,386],"card",{"icon":29,"title":316},[179,387,388],{},"Structure your application using clear filesystem conventions.",[384,390,393],{"icon":391,"title":392},"i-lucide-server","Backend Runtime",[179,394,395],{},"Automatically orchestrates controllers, services, models and plugins with NestJS.",[384,397,400],{"icon":398,"title":399},"i-lucide-monitor-smartphone","Frontend Runtime",[179,401,402],{},"Shared conventions and typings for Nuxt applications.",[384,404,407],{"icon":405,"title":406},"i-lucide-badge-check","Generated Typings",[179,408,409],{},"Strongly typed runtime with automatic type generation.",[215,411,413],{"id":412},"philosophy","Philosophy",[179,415,416],{},"OpenSya is not a boilerplate or starter kit.",[179,418,419],{},"It is a runtime architecture layer designed to standardize how modern recruitment and business applications are structured, discovered and executed.",[179,421,422],{},"OpenSya relies on three core ideas:",[424,425,426,429,431],"ol",{},[192,427,428],{},"Filesystem conventions",[192,430,309],{},[192,432,433],{},"Generated types",[179,435,436],{},"Together, these concepts create a scalable and maintainable developer experience for both backend and frontend applications.",[208,438,441],{"color":439,"icon":440},"info","i-lucide-book-open",[179,442,443,444,447],{},"The backend runtime documentation starts with the NestJS runtime available in the ",[259,445,446],{},"nest\u002F"," directory.",[449,450,451],"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":257,"searchDepth":265,"depth":271,"links":453},[454,455,456,457,458],{"id":217,"depth":271,"text":218},{"id":247,"depth":271,"text":26},{"id":315,"depth":271,"text":316},{"id":378,"depth":271,"text":379},{"id":412,"depth":271,"text":413},"OpenSya is the open-source recruitment infrastructure for modern companies. Modular, scalable, and fully owned by you.","md",null,{},{"icon":8},{"title":5,"description":459},"o0YzyszhyU_rFJaPSFr4yf5cDr_rFkaAV7xDgrgOWIo",[461,467],{"title":10,"path":11,"stem":12,"description":468,"icon":13,"children":-1},"Understand how OpenSya manages data and why MongoDB powers the backend infrastructure.",1779143766844]