[{"data":1,"prerenderedAt":889},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Fengineering\u002Fframework":180,"\u002Fdocs\u002Fengineering\u002Fframework-surround":884},[4,8,20,24,59,65,69,73,77,100,104,108,112,116,120,124,128,160,164,168,172,176],{"title":5,"path":6,"stem":7},"","\u002Fdocs","1.docs\u002Findex",{"title":9,"path":10,"stem":11,"children":12,"icon":19},"Getting Started","\u002Fdocs\u002Fgetting-started","1.docs\u002F01.getting-started\u002F1.index",[13,15],{"title":14,"path":10,"stem":11},"Bosca",{"title":16,"path":17,"stem":18},"Quickstart","\u002Fdocs\u002Fgetting-started\u002Fquickstart","1.docs\u002F01.getting-started\u002F2.quickstart",false,{"title":21,"path":22,"stem":23},"Kit","\u002Fdocs\u002Fkit","1.docs\u002F01.kit",{"title":25,"path":26,"stem":27,"children":28},"Content","\u002Fdocs\u002Fcontent","1.docs\u002F02.content\u002F1.index",[29,31,53],{"title":30,"path":26,"stem":27},"Content Strategy",{"title":32,"path":33,"stem":34,"children":35},"Metadata","\u002Fdocs\u002Fcontent\u002Fmetadata","1.docs\u002F02.content\u002F1.metadata\u002F1.index",[36,37,41,45,49],{"title":32,"path":33,"stem":34},{"title":38,"path":39,"stem":40},"Supplementary","\u002Fdocs\u002Fcontent\u002Fmetadata\u002Fsupplementary","1.docs\u002F02.content\u002F1.metadata\u002F2.supplementary",{"title":42,"path":43,"stem":44},"Documents","\u002Fdocs\u002Fcontent\u002Fmetadata\u002Fdocuments","1.docs\u002F02.content\u002F1.metadata\u002F3.documents",{"title":46,"path":47,"stem":48},"Guides","\u002Fdocs\u002Fcontent\u002Fmetadata\u002Fguides","1.docs\u002F02.content\u002F1.metadata\u002F4.guides",{"title":50,"path":51,"stem":52},"Bible","\u002Fdocs\u002Fcontent\u002Fmetadata\u002Fbible","1.docs\u002F02.content\u002F1.metadata\u002F5.bible",{"title":54,"path":55,"stem":56,"children":57},"Collections","\u002Fdocs\u002Fcontent\u002Fcollections","1.docs\u002F02.content\u002F2.collections\u002F1.index",[58],{"title":54,"path":55,"stem":56},{"title":60,"path":61,"stem":62,"children":63},"Workflows","\u002Fdocs\u002Fworkflows","1.docs\u002F03.workflows\u002F1.index",[64],{"title":60,"path":61,"stem":62},{"title":66,"path":67,"stem":68},"Search","\u002Fdocs\u002Fsearch","1.docs\u002F04.search",{"title":70,"path":71,"stem":72},"Profiles","\u002Fdocs\u002Fprofiles","1.docs\u002F05.profiles",{"title":74,"path":75,"stem":76},"Organizations","\u002Fdocs\u002Forganizations","1.docs\u002F06.organizations",{"title":78,"path":79,"stem":80,"children":81,"icon":99},"Engineering","\u002Fdocs\u002Fengineering","1.docs\u002F07.engineering\u002F1.index",[82,83,87,91,95],{"title":78,"path":79,"stem":80},{"title":84,"path":85,"stem":86},"Infrastructure","\u002Fdocs\u002Fengineering\u002Finfrastructure","1.docs\u002F07.engineering\u002F2.infrastructure",{"title":88,"path":89,"stem":90},"Backend Services","\u002Fdocs\u002Fengineering\u002Fservices","1.docs\u002F07.engineering\u002F3.services",{"title":92,"path":93,"stem":94},"Deployment","\u002Fdocs\u002Fengineering\u002Fdeployment","1.docs\u002F07.engineering\u002F4.deployment",{"title":96,"path":97,"stem":98},"Framework Modules","\u002Fdocs\u002Fengineering\u002Fframework","1.docs\u002F07.engineering\u002F5.framework","i-heroicons-wrench-screwdriver",{"title":101,"path":102,"stem":103},"Identity Management","\u002Fdocs\u002Fidentity","1.docs\u002F07.identity",{"title":105,"path":106,"stem":107},"Localization","\u002Fdocs\u002Flocalization","1.docs\u002F08.localization",{"title":109,"path":110,"stem":111},"Analytics","\u002Fdocs\u002Fanalytics","1.docs\u002F09.analytics",{"title":113,"path":114,"stem":115},"AI & Agents","\u002Fdocs\u002Fai","1.docs\u002F10.ai",{"title":117,"path":118,"stem":119},"Messaging & Email","\u002Fdocs\u002Fmessages","1.docs\u002F11.messages",{"title":121,"path":122,"stem":123},"Scheduler","\u002Fdocs\u002Fscheduler","1.docs\u002F12.scheduler",{"title":125,"path":126,"stem":127},"Backup & Restore","\u002Fdocs\u002Fbackup","1.docs\u002F13.backup",{"title":129,"path":130,"stem":131,"children":132},"Architecture","\u002Fdocs\u002Farchitecture","1.docs\u002F14.architecture\u002F1.index",[133,134,137,141,145,149,153,157],{"title":129,"path":130,"stem":131},{"title":92,"path":135,"stem":136},"\u002Fdocs\u002Farchitecture\u002Fdeployment","1.docs\u002F14.architecture\u002F2.deployment",{"title":138,"path":139,"stem":140},"Security","\u002Fdocs\u002Farchitecture\u002Fsecurity","1.docs\u002F14.architecture\u002F3.security",{"title":142,"path":143,"stem":144},"Telemetry","\u002Fdocs\u002Farchitecture\u002Ftelemetry","1.docs\u002F14.architecture\u002F4.telemetry",{"title":146,"path":147,"stem":148},"Administration","\u002Fdocs\u002Farchitecture\u002Fadministration","1.docs\u002F14.architecture\u002F5.administration",{"title":150,"path":151,"stem":152},"GraphQL Schema","\u002Fdocs\u002Farchitecture\u002Fgraphql","1.docs\u002F14.architecture\u002F6.graphql",{"title":154,"path":155,"stem":156},"Storage","\u002Fdocs\u002Farchitecture\u002Fstorage","1.docs\u002F14.architecture\u002F7.storage",{"title":105,"path":158,"stem":159},"\u002Fdocs\u002Farchitecture\u002Flocalization","1.docs\u002F14.architecture\u002F8.localization",{"title":161,"path":162,"stem":163},"Scripting","\u002Fdocs\u002Fscripting","1.docs\u002F15.scripting",{"title":165,"path":166,"stem":167},"Configuration","\u002Fdocs\u002Fconfiguration","1.docs\u002F16.configuration",{"title":169,"path":170,"stem":171},"Forms","\u002Fdocs\u002Fforms","1.docs\u002F17.forms",{"title":173,"path":174,"stem":175},"Segmentation & Campaigns","\u002Fdocs\u002Fsegmentation","1.docs\u002F18.segmentation",{"title":177,"path":178,"stem":179},"Devices & Push","\u002Fdocs\u002Fdevices","1.docs\u002F19.devices",{"id":181,"title":96,"body":182,"description":879,"extension":880,"meta":881,"navigation":747,"path":97,"seo":882,"stem":98,"__hash__":883},"docs\u002F1.docs\u002F07.engineering\u002F5.framework.md",{"type":183,"value":184,"toc":864},"minimark",[185,189,206,215,218,223,226,379,383,386,540,547,550,592,599,602,636,643,646,666,673,678,860],[186,187,96],"h1",{"id":188},"framework-modules",[190,191,192,193,197,198,201,202,205],"p",{},"The Bosca Framework is composed of a rich set of modules, primarily split between the ",[194,195,196],"code",{},"backend"," and general ",[194,199,200],{},"framework"," libraries. Each domain follows a pattern of a ",[194,203,204],{},"core-*"," module (interfaces and models) paired with an implementation module.",[207,208,210,211,214],"h2",{"id":209},"backend-framework-backendframework","Backend Framework (",[194,212,213],{},":backend:framework",")",[190,216,217],{},"This set of modules implements the core business logic of the Bosca platform.",[219,220,222],"h3",{"id":221},"core-layer","Core Layer",[190,224,225],{},"These modules define the fundamental interfaces, data structures, and utilities.",[227,228,229,239,267,275,283,291,299,307,315,323,331,339,347,355,363,371],"ul",{},[230,231,232,238],"li",{},[233,234,235],"strong",{},[194,236,237],{},"core",": Base definitions, utilities, GraphQL scalars, attribute types, and find\u002Fquery primitives.",[230,240,241,246,247,250,251,250,254,250,257,250,260,250,263,266],{},[233,242,243],{},[194,244,245],{},"core-annotations",": Annotations for KSP code generation (",[194,248,249],{},"@TypeController",", ",[194,252,253],{},"@Repository",[194,255,256],{},"@JobDefinition",[194,258,259],{},"@PageController",[194,261,262],{},"@RouteController",[194,264,265],{},"@ServiceImplementation",").",[230,268,269,274],{},[233,270,271],{},[194,272,273],{},"core-ksp",": KSP symbol processor that generates GraphQL dispatchers, DI registrations, and repository implementations from annotations.",[230,276,277,282],{},[233,278,279],{},[194,280,281],{},"core-ai",": AI model, agent, prompt, tool, and chat service interfaces.",[230,284,285,290],{},[233,286,287],{},[194,288,289],{},"core-analytics",": Analytics dashboard, query, visualization, and event pipeline interfaces.",[230,292,293,298],{},[233,294,295],{},[194,296,297],{},"core-comments",": Comment model and service interfaces.",[230,300,301,306],{},[233,302,303],{},[194,304,305],{},"core-configuration",": Configuration key-value store interfaces.",[230,308,309,314],{},[233,310,311],{},[194,312,313],{},"core-content",": Content model definitions (collections, metadata, documents, guides, categories, traits, templates, time events, workflow states, and transitions).",[230,316,317,322],{},[233,318,319],{},[194,320,321],{},"core-languages",": Language model and service interfaces.",[230,324,325,330],{},[233,326,327],{},[194,328,329],{},"core-messages",": Message, channel, and template interfaces for transactional messaging.",[230,332,333,338],{},[233,334,335],{},[194,336,337],{},"core-profile",": Profile, attribute, bookmark, mark, rating, and relationship interfaces.",[230,340,341,346],{},[233,342,343],{},[194,344,345],{},"core-scheduler",": Scheduled job, cron, and execution history interfaces.",[230,348,349,354],{},[233,350,351],{},[194,352,353],{},"core-scripting",": Script model, execution context, and trigger binding interfaces.",[230,356,357,362],{},[233,358,359],{},[194,360,361],{},"core-search",": Search abstraction interfaces.",[230,364,365,370],{},[233,366,367],{},[194,368,369],{},"core-security",": Security primitives (Principals, Credentials, Groups, Permissions, Encryption).",[230,372,373,378],{},[233,374,375],{},[194,376,377],{},"core-storage",": Storage system and URL signing interfaces.",[219,380,382],{"id":381},"implementation-layer","Implementation Layer",[190,384,385],{},"These modules provide the concrete implementations of the core interfaces.",[227,387,388,396,404,412,420,428,436,444,452,460,468,476,484,492,500,508,516,524,532],{},[230,389,390,395],{},[233,391,392],{},[194,393,394],{},"ai",": Agent system (built on Google ADK), model registry, prompt management, chat sessions, MCP server registration, and GraphQL controllers.",[230,397,398,403],{},[233,399,400],{},[194,401,402],{},"analytics",": Dashboard, query execution, visualization services, and GraphQL controllers.",[230,405,406,411],{},[233,407,408],{},[194,409,410],{},"analytics-ai",": AI-powered analytics features.",[230,413,414,419],{},[233,415,416],{},[194,417,418],{},"analytics-models",": Analytics event and data models.",[230,421,422,427],{},[233,423,424],{},[194,425,426],{},"backup",": Platform data export and import with conflict resolution.",[230,429,430,435],{},[233,431,432],{},[194,433,434],{},"bible",": Bible data processing (USX format parsing, style registry, chapter\u002Fverse organization).",[230,437,438,443],{},[233,439,440],{},[194,441,442],{},"configuration",": Configuration key-value store implementation and GraphQL controllers.",[230,445,446,451],{},[233,447,448],{},[194,449,450],{},"content",": Content management, collections, metadata, documents, guides, categories, traits, templates, time events, workflow states, transitions, and GraphQL controllers.",[230,453,454,459],{},[233,455,456],{},[194,457,458],{},"docs",": API documentation extraction from source code with search indexing.",[230,461,462,467],{},[233,463,464],{},[194,465,466],{},"languages",": Language registry, GraphQL controllers, and default language installer.",[230,469,470,475],{},[233,471,472],{},[194,473,474],{},"mcp",": Model Context Protocol server (SSE transport, GraphQL introspection tools, schema caching).",[230,477,478,483],{},[233,479,480],{},[194,481,482],{},"messages",": Transactional email delivery (SendGrid), job-based async processing, and template rendering.",[230,485,486,491],{},[233,487,488],{},[194,489,490],{},"profile",": User profiles, attributes, bookmarks, marks, ratings, relationships, organizations, and GraphQL controllers.",[230,493,494,499],{},[233,495,496],{},[194,497,498],{},"scheduler",": Cron-based job scheduling, execution history, catch-up behavior, and GraphQL controllers.",[230,501,502,507],{},[233,503,504],{},[194,505,506],{},"scripting",": Kotlin Script (KTS) execution engine, trigger bindings, and GraphQL controllers.",[230,509,510,515],{},[233,511,512],{},[194,513,514],{},"search",": Meilisearch integration, indexing, Jsonata transformations, and GraphQL controllers.",[230,517,518,523],{},[233,519,520],{},[194,521,522],{},"security",": Authentication (Argon2id, scrypt, OAuth2), JWT tokens, GraphQL controllers, and email templates.",[230,525,526,531],{},[233,527,528],{},[194,529,530],{},"slugs",": URL-friendly slug generation with transliteration and collision resolution.",[230,533,534,539],{},[233,535,536],{},[194,537,538],{},"storage",": S3-compatible object storage, signed URLs, and GraphQL controllers.",[207,541,543,544,214],{"id":542},"general-framework-framework","General Framework (",[194,545,546],{},":framework",[190,548,549],{},"These are lower-level libraries that can be used across different types of applications (not just backend).",[227,551,552,560,568,576,584],{},[230,553,554,559],{},[233,555,556],{},[194,557,558],{},"di",": Dependency Injection framework (multiplatform, suspend-friendly).",[230,561,562,567],{},[233,563,564],{},[194,565,566],{},"di-ksp",": KSP processor for DI annotations.",[230,569,570,575],{},[233,571,572],{},[194,573,574],{},"service",": Base service interface (multiplatform).",[230,577,578,583],{},[233,579,580],{},[194,581,582],{},"service-ksp",": KSP processor for service annotations.",[230,585,586,591],{},[233,587,588],{},[194,589,590],{},"base-ksp",": Shared KSP utilities.",[207,593,595,596,214],{"id":594},"backend-utilities-backendutilities","Backend Utilities (",[194,597,598],{},":backend:utilities",[190,600,601],{},"Infrastructure libraries used by the backend services:",[227,603,604,612,620,628],{},[230,605,606,611],{},[233,607,608],{},[194,609,610],{},"sharedqueue",": Distributed job queue supporting Redis and NATS backends, with parent-child job relationships, failure tracking, and configurable retry limits.",[230,613,614,619],{},[233,615,616],{},[194,617,618],{},"collaboration",": Real-time collaborative editing engine using Rust-based CRDT (Yjs) with Kotlin FFI bindings via Uniffi. Tracks dirty state for collections, relationships, and attributes.",[230,621,622,627],{},[233,623,624],{},[194,625,626],{},"diagnostics",": System monitoring with GraphQL API for job queue introspection and status inspection.",[230,629,630,635],{},[233,631,632],{},[194,633,634],{},"firebase-scrypt",": Firebase-compatible password hashing (Rust FFI) for migrating Firebase users to Bosca authentication.",[207,637,639,640,214],{"id":638},"kit-ai-agent-orchestration-backendkit","Kit (AI Agent Orchestration) (",[194,641,642],{},":backend:kit",[190,644,645],{},"The Kit module provides the AI agent orchestration layer built on Google ADK. It includes:",[227,647,648,654,660],{},[230,649,650,653],{},[233,651,652],{},"Agent Builder",": Constructs agent hierarchies from database definitions with recursive sub-agent resolution, dynamic tool loading, and MCP server integration.",[230,655,656,659],{},[233,657,658],{},"Tool Library",": Content browsing, GraphQL queries, SQL analytics, Bible search, script management, document processing, image generation\u002Fediting, PDF extraction, and search tools.",[230,661,662,665],{},[233,663,664],{},"Chat Dispatcher",": Routes chat requests to the appropriate agents with session management and streaming responses.",[207,667,669,670,214],{"id":668},"applications-framework-apps","Applications Framework (",[194,671,672],{},":apps",[227,674,675],{},[230,676,677],{},"Compose Multiplatform client application (Android, iOS, Desktop).",[679,680,684],"pre",{"className":681,"code":682,"language":683,"meta":5,"style":5},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","graph TD\n    subgraph \"Backend Framework\"\n        Core[Core]\n        Content[Content]\n        Security[Security]\n        Search[Search]\n        AI[AI & Agents]\n        Analytics[Analytics]\n        Scripting[Scripting]\n\n        Content --> Core\n        Security --> Core\n        Search --> Core\n        AI --> Core\n        Analytics --> Core\n        Scripting --> Core\n    end\n\n    subgraph \"Servers\"\n        Bosca[Bosca Server]\n        Collector[Analytics Collector]\n    end\n\n    Bosca --> Content\n    Bosca --> Security\n    Bosca --> Search\n    Bosca --> AI\n    Bosca --> Scripting\n    Collector --> Analytics\n","mermaid",[194,685,686,694,700,706,712,718,724,730,736,742,749,755,761,767,773,779,785,791,796,802,808,814,819,824,830,836,842,848,854],{"__ignoreMap":5},[687,688,691],"span",{"class":689,"line":690},"line",1,[687,692,693],{},"graph TD\n",[687,695,697],{"class":689,"line":696},2,[687,698,699],{},"    subgraph \"Backend Framework\"\n",[687,701,703],{"class":689,"line":702},3,[687,704,705],{},"        Core[Core]\n",[687,707,709],{"class":689,"line":708},4,[687,710,711],{},"        Content[Content]\n",[687,713,715],{"class":689,"line":714},5,[687,716,717],{},"        Security[Security]\n",[687,719,721],{"class":689,"line":720},6,[687,722,723],{},"        Search[Search]\n",[687,725,727],{"class":689,"line":726},7,[687,728,729],{},"        AI[AI & Agents]\n",[687,731,733],{"class":689,"line":732},8,[687,734,735],{},"        Analytics[Analytics]\n",[687,737,739],{"class":689,"line":738},9,[687,740,741],{},"        Scripting[Scripting]\n",[687,743,745],{"class":689,"line":744},10,[687,746,748],{"emptyLinePlaceholder":747},true,"\n",[687,750,752],{"class":689,"line":751},11,[687,753,754],{},"        Content --> Core\n",[687,756,758],{"class":689,"line":757},12,[687,759,760],{},"        Security --> Core\n",[687,762,764],{"class":689,"line":763},13,[687,765,766],{},"        Search --> Core\n",[687,768,770],{"class":689,"line":769},14,[687,771,772],{},"        AI --> Core\n",[687,774,776],{"class":689,"line":775},15,[687,777,778],{},"        Analytics --> Core\n",[687,780,782],{"class":689,"line":781},16,[687,783,784],{},"        Scripting --> Core\n",[687,786,788],{"class":689,"line":787},17,[687,789,790],{},"    end\n",[687,792,794],{"class":689,"line":793},18,[687,795,748],{"emptyLinePlaceholder":747},[687,797,799],{"class":689,"line":798},19,[687,800,801],{},"    subgraph \"Servers\"\n",[687,803,805],{"class":689,"line":804},20,[687,806,807],{},"        Bosca[Bosca Server]\n",[687,809,811],{"class":689,"line":810},21,[687,812,813],{},"        Collector[Analytics Collector]\n",[687,815,817],{"class":689,"line":816},22,[687,818,790],{},[687,820,822],{"class":689,"line":821},23,[687,823,748],{"emptyLinePlaceholder":747},[687,825,827],{"class":689,"line":826},24,[687,828,829],{},"    Bosca --> Content\n",[687,831,833],{"class":689,"line":832},25,[687,834,835],{},"    Bosca --> Security\n",[687,837,839],{"class":689,"line":838},26,[687,840,841],{},"    Bosca --> Search\n",[687,843,845],{"class":689,"line":844},27,[687,846,847],{},"    Bosca --> AI\n",[687,849,851],{"class":689,"line":850},28,[687,852,853],{},"    Bosca --> Scripting\n",[687,855,857],{"class":689,"line":856},29,[687,858,859],{},"    Collector --> Analytics\n",[861,862,863],"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":5,"searchDepth":696,"depth":696,"links":865},[866,871,873,875,877],{"id":209,"depth":696,"text":867,"children":868},"Backend Framework (:backend:framework)",[869,870],{"id":221,"depth":702,"text":222},{"id":381,"depth":702,"text":382},{"id":542,"depth":696,"text":872},"General Framework (:framework)",{"id":594,"depth":696,"text":874},"Backend Utilities (:backend:utilities)",{"id":638,"depth":696,"text":876},"Kit (AI Agent Orchestration) (:backend:kit)",{"id":668,"depth":696,"text":878},"Applications Framework (:apps)","The Bosca Framework is composed of a rich set of modules, primarily split between the backend and general framework libraries. Each domain follows a pattern of a core-* module (interfaces and models) paired with an implementation module.","md",{},{"title":96,"description":879},"Qb2TgzRu-Uk99z6_O_xi0wwbieOaEnWnOj9SKBIuB4c",[885,887],{"title":92,"path":93,"stem":94,"description":886,"children":-1},"Bosca is designed to be cloud-native and deployable in various environments, from local development machines to large-scale Kubernetes clusters.",{"title":101,"path":102,"stem":103,"description":888,"children":-1},"Authentication, signup, credential management, and session handling in Bosca.",1775372112860]