[{"data":1,"prerenderedAt":380},["ShallowReactive",2],{"navigation_docs":3,"-apps-application-structure-overview":196,"-apps-application-structure-overview-surround":375},[4,127,166],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":36},"Kinotic Apps","i-lucide-rocket","\u002Fapps","1.apps",[10,14,18,37,58,91,106,122],{"title":11,"path":12,"stem":13},"Introduction","\u002Fapps\u002Fintroduction","1.apps\u002F1.introduction",{"title":15,"path":16,"stem":17},"Quick Start","\u002Fapps\u002Fquick-start","1.apps\u002F2.quick-start",{"title":19,"icon":20,"path":21,"stem":22,"children":23,"page":36},"Application Structure","i-lucide-folder-tree","\u002Fapps\u002Fapplication-structure","1.apps\u002F3.application-structure",[24,28,32],{"title":25,"path":26,"stem":27},"Overview","\u002Fapps\u002Fapplication-structure\u002Foverview","1.apps\u002F3.application-structure\u002F1.overview",{"title":29,"path":30,"stem":31},"Applications and Projects","\u002Fapps\u002Fapplication-structure\u002Fapplications-and-projects","1.apps\u002F3.application-structure\u002F2.applications-and-projects",{"title":33,"path":34,"stem":35},"Artifact Types","\u002Fapps\u002Fapplication-structure\u002Fartifact-types","1.apps\u002F3.application-structure\u002F3.artifact-types",false,{"title":38,"icon":39,"path":40,"stem":41,"children":42,"page":36},"Services","i-lucide-network","\u002Fapps\u002Fservices","1.apps\u002F4.services",[43,46,50,54],{"title":25,"path":44,"stem":45},"\u002Fapps\u002Fservices\u002Foverview","1.apps\u002F4.services\u002F1.overview",{"title":47,"path":48,"stem":49},"Publishing Services","\u002Fapps\u002Fservices\u002Fpublishing-services","1.apps\u002F4.services\u002F2.publishing-services",{"title":51,"path":52,"stem":53},"Service Proxies","\u002Fapps\u002Fservices\u002Fservice-proxies","1.apps\u002F4.services\u002F3.service-proxies",{"title":55,"path":56,"stem":57},"Streaming","\u002Fapps\u002Fservices\u002Fstreaming","1.apps\u002F4.services\u002F4.streaming",{"title":59,"icon":60,"path":61,"stem":62,"children":63,"page":36},"Persistence","i-lucide-database","\u002Fapps\u002Fpersistence","1.apps\u002F5.persistence",[64,67,71,75,79,83,87],{"title":25,"path":65,"stem":66},"\u002Fapps\u002Fpersistence\u002Foverview","1.apps\u002F5.persistence\u002F1.overview",{"title":68,"path":69,"stem":70},"Defining Entities","\u002Fapps\u002Fpersistence\u002Fdefining-entities","1.apps\u002F5.persistence\u002F2.defining-entities",{"title":72,"path":73,"stem":74},"Entity Decorators","\u002Fapps\u002Fpersistence\u002Fentity-decorators","1.apps\u002F5.persistence\u002F3.entity-decorators",{"title":76,"path":77,"stem":78},"CRUD Operations","\u002Fapps\u002Fpersistence\u002Fcrud-operations","1.apps\u002F5.persistence\u002F4.crud-operations",{"title":80,"path":81,"stem":82},"Named Queries","\u002Fapps\u002Fpersistence\u002Fnamed-queries","1.apps\u002F5.persistence\u002F5.named-queries",{"title":84,"path":85,"stem":86},"Multi-Tenancy","\u002Fapps\u002Fpersistence\u002Fmulti-tenancy","1.apps\u002F5.persistence\u002F6.multi-tenancy",{"title":88,"path":89,"stem":90},"Migrations","\u002Fapps\u002Fpersistence\u002Fmigrations","1.apps\u002F5.persistence\u002F7.migrations",{"title":92,"icon":93,"path":94,"stem":95,"children":96,"page":36},"Security","i-lucide-shield-check","\u002Fapps\u002Fsecurity","1.apps\u002F6.security",[97,101],{"title":98,"path":99,"stem":100,"icon":93},"Access Control","\u002Fapps\u002Fsecurity\u002Faccess-control","1.apps\u002F6.security\u002F1.access-control",{"title":102,"path":103,"stem":104,"icon":105},"Authentication","\u002Fapps\u002Fsecurity\u002Fauthentication","1.apps\u002F6.security\u002F2.authentication","i-lucide-key-round",{"title":107,"icon":108,"path":109,"stem":110,"children":111,"page":36},"Deployment","i-lucide-cloud-upload","\u002Fapps\u002Fdeployment","1.apps\u002F7.deployment",[112,117],{"title":113,"path":114,"stem":115,"icon":116},"Deployment Workflow","\u002Fapps\u002Fdeployment\u002Fworkflow","1.apps\u002F7.deployment\u002F1.workflow","i-lucide-git-branch",{"title":118,"path":119,"stem":120,"icon":121},"Environments","\u002Fapps\u002Fdeployment\u002Fenvironments","1.apps\u002F7.deployment\u002F2.environments","i-lucide-server",{"title":123,"path":124,"stem":125,"icon":126},"CLI Reference","\u002Fapps\u002Fcli-reference","1.apps\u002F8.cli-reference","i-lucide-terminal",{"title":128,"icon":121,"path":129,"stem":130,"children":131,"page":36},"Kinotic OS","\u002Fplatform","2.platform",[132,137,141,146,151,156,161],{"title":133,"path":134,"stem":135,"icon":136},"System Architecture","\u002Fplatform\u002Farchitecture","2.platform\u002F1.architecture","i-lucide-boxes",{"title":138,"path":139,"stem":140,"icon":6},"Deployment Guide","\u002Fplatform\u002Fdeployment-guide","2.platform\u002F2.deployment-guide",{"title":142,"path":143,"stem":144,"icon":145},"Configuration","\u002Fplatform\u002Fconfiguration","2.platform\u002F3.configuration","i-lucide-settings",{"title":147,"path":148,"stem":149,"icon":150},"Organization Management","\u002Fplatform\u002Forganization-management","2.platform\u002F4.organization-management","i-lucide-building-2",{"title":152,"path":153,"stem":154,"icon":155},"System Security","\u002Fplatform\u002Fsystem-security","2.platform\u002F5.system-security","i-lucide-shield",{"title":157,"path":158,"stem":159,"icon":160},"Observability","\u002Fplatform\u002Fobservability","2.platform\u002F6.observability","i-lucide-activity",{"title":162,"path":163,"stem":164,"icon":165},"Contributing","\u002Fplatform\u002Fcontributing","2.platform\u002F7.contributing","i-lucide-git-pull-request",{"title":167,"icon":168,"path":169,"stem":170,"children":171,"page":36},"Reference","i-lucide-book-open","\u002Freference","3.reference",[172,177,181,186,191],{"title":173,"path":174,"stem":175,"icon":176},"Decorators Reference","\u002Freference\u002Fdecorators","3.reference\u002F1.decorators","i-lucide-at-sign",{"title":178,"path":179,"stem":180,"icon":60},"Migration SQL Grammar","\u002Freference\u002Fmigration-sql-grammar","3.reference\u002F2.migration-sql-grammar",{"title":182,"path":183,"stem":184,"icon":185},"ABAC Expression Language","\u002Freference\u002Fabac-expression-language","3.reference\u002F3.abac-expression-language","i-lucide-file-code",{"title":187,"path":188,"stem":189,"icon":190},"CRI Format","\u002Freference\u002Fcri-format","3.reference\u002F4.cri-format","i-lucide-link",{"title":192,"path":193,"stem":194,"icon":195},"SDK Packages","\u002Freference\u002Fsdk-packages","3.reference\u002F5.sdk-packages","i-lucide-package",{"id":197,"title":25,"body":198,"description":368,"extension":369,"links":370,"meta":371,"navigation":372,"path":26,"seo":373,"stem":27,"__hash__":374},"docs\u002F1.apps\u002F3.application-structure\u002F1.overview.md",{"type":199,"value":200,"toc":356},"minimark",[201,205,210,221,226,229,233,236,240,251,254,258,265,269,277,280,284,287,347,350],[202,203,204],"p",{},"Kinotic applications follow a clear hierarchy that keeps large systems organized while giving individual teams autonomy over their own pieces.",[206,207,209],"h2",{"id":208},"the-hierarchy","The Hierarchy",[211,212,217],"pre",{"className":213,"code":215,"language":216},[214],"language-text","Organization\n └── Application\n      └── Project\n           └── Artifact(s)\n","text",[218,219,215],"code",{"__ignoreMap":220},"",[222,223,225],"h3",{"id":224},"organizations","Organizations",[202,227,228],{},"An organization is the top-level grouping. It represents a company, team, or any logical boundary that owns one or more applications. Organizations control billing, membership, and shared configuration.",[222,230,232],{"id":231},"applications","Applications",[202,234,235],{},"An application is the primary unit of deployment. It is the top-level container for a system that you build, ship, and run. A single organization can own many applications, and each application has its own name, configuration, and lifecycle.",[222,237,239],{"id":238},"projects","Projects",[202,241,242,243,246,247,250],{},"A project is a functional unit within an application. Each project has its own ",[218,244,245],{},"package.json"," and a ",[218,248,249],{},".kinotic.json"," configuration file that tells the CLI how the project relates to the broader application.",[202,252,253],{},"Projects exist so that different concerns can live in separate packages while still participating in the same application. For example, one project might define the domain entities, another might contain the business-logic microservices, and a third might be the frontend.",[222,255,257],{"id":256},"artifacts","Artifacts",[202,259,260,261,264],{},"Artifacts are the outputs that a project contributes to the application. A single project can produce one or more artifacts -- a set of persisted entities, a microservice, a batch job, a UI component library, or a complete frontend. See ",[262,263,33],"a",{"href":34}," for the full list.",[206,266,268],{"id":267},"the-service-directory","The Service Directory",[202,270,271,272,276],{},"Kinotic OS maintains a ",[273,274,275],"strong",{},"Service Directory"," -- a live registry of all services published across an application. When a project publishes a service (either explicitly or through generated entity services), it is registered in the directory and becomes callable by any other project in the same application.",[202,278,279],{},"This means you never have to hard-code service endpoints or manage connection strings between internal services. The platform handles discovery and routing automatically.",[206,281,283],{"id":282},"putting-it-together","Putting It Together",[202,285,286],{},"A typical application looks something like this:",[288,289,290,305],"table",{},[291,292,293],"thead",{},[294,295,296,300,302],"tr",{},[297,298,299],"th",{},"Project",[297,301,257],{},[297,303,304],{},"Purpose",[306,307,308,321,334],"tbody",{},[294,309,310,316,318],{},[311,312,313],"td",{},[218,314,315],{},"data",[311,317,59],{},[311,319,320],{},"Defines entities and gets auto-generated CRUD services",[294,322,323,328,331],{},[311,324,325],{},[218,326,327],{},"services",[311,329,330],{},"Microservice",[311,332,333],{},"Contains business logic that orchestrates across entities",[294,335,336,341,344],{},[311,337,338],{},[218,339,340],{},"web",[311,342,343],{},"Frontend",[311,345,346],{},"A user interface that consumes services from the other projects",[202,348,349],{},"Each project is developed, tested, and versioned independently, but they all deploy as part of the same application and can call each other through the Service Directory.",[202,351,352,353,355],{},"For details on how to configure an application and its projects, see ",[262,354,29],{"href":30},".",{"title":220,"searchDepth":357,"depth":357,"links":358},2,[359,366,367],{"id":208,"depth":357,"text":209,"children":360},[361,363,364,365],{"id":224,"depth":362,"text":225},3,{"id":231,"depth":362,"text":232},{"id":238,"depth":362,"text":239},{"id":256,"depth":362,"text":257},{"id":267,"depth":357,"text":268},{"id":282,"depth":357,"text":283},"Understand how Kinotic apps are organized -- from organizations down to individual artifacts.","md",null,{},true,{"title":25,"description":368},"XMh5KRDnne6bS5_4XrlllcZu40gb_7gmwo_M_6S_Yik",[376,378],{"title":15,"path":16,"stem":17,"description":377,"children":-1},"Get started building your first Kinotic App -- from installation to a running CRUD service in under five minutes.",{"title":29,"path":30,"stem":31,"description":379,"children":-1},"Learn how to configure Kinotic applications and the projects that compose them.",1775187762911]