[{"data":1,"prerenderedAt":356},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Fengineering\u002Fservices":180,"\u002Fdocs\u002Fengineering\u002Fservices-surround":351},[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":88,"body":182,"description":192,"extension":347,"meta":348,"navigation":302,"path":89,"seo":349,"stem":90,"__hash__":350},"docs\u002F1.docs\u002F07.engineering\u002F3.services.md",{"type":183,"value":184,"toc":338},"minimark",[185,189,193,198,205,210,238,242,247,250,261,265,268,334],[186,187,88],"h1",{"id":188},"backend-services",[190,191,192],"p",{},"The backend logic is distributed across several key services, each responsible for a specific domain of the Bosca Framework.",[194,195,197],"h2",{"id":196},"bosca-server","Bosca Server",[190,199,200,201,204],{},"The ",[202,203,197],"strong",{}," is the core component of the system (port 8080). It exposes GraphQL and REST APIs for client applications and orchestrates the majority of business logic.",[206,207,209],"h3",{"id":208},"responsibilities","Responsibilities",[211,212,213,217,220,223,226,229,232,235],"ul",{},[214,215,216],"li",{},"User Authentication & Authorization",[214,218,219],{},"Content Management (collections, metadata, documents, guides)",[214,221,222],{},"Workflow Management & Job Processing",[214,224,225],{},"AI agent orchestration and chat sessions",[214,227,228],{},"Search indexing and querying",[214,230,231],{},"Profile and organization management",[214,233,234],{},"MCP server for AI client integration",[214,236,237],{},"API Gateway for clients",[194,239,241],{"id":240},"analytics-collector","Analytics Collector",[190,243,200,244,246],{},[202,245,241],{}," is a high-throughput service designed to ingest telemetry data from clients. It processes events asynchronously and persists them using Apache Iceberg for long-term storage.",[206,248,209],{"id":249},"responsibilities-1",[211,251,252,255,258],{},[214,253,254],{},"Ingest client events (clicks, views, interactions, scrolls, form submissions)",[214,256,257],{},"Persist events to Iceberg tables backed by S3-compatible storage",[214,259,260],{},"Feed data pipelines for downstream analysis via Trino",[194,262,264],{"id":263},"text-extractor","Text Extractor",[190,266,267],{},"A dedicated utility service for extracting text content from binary files (PDFs, images, etc.), facilitating full-text search and AI processing.",[269,270,274],"pre",{"className":271,"code":272,"language":273,"meta":5,"style":5},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","graph LR\n    Client -->|GraphQL| BoscaServer\n    Client -->|Events| AnalyticsCollector\n\n    BoscaServer -->|Task| TextExtractor\n    BoscaServer -->|Query| DB[(PostgreSQL)]\n    BoscaServer -->|Search| Meilisearch\n    BoscaServer -->|\"Cache \u002F PubSub \u002F Jobs\"| RedisOrNATS[Redis \u002F NATS]\n    AnalyticsCollector -->|Store| S3[(S3 Storage)]\n","mermaid",[275,276,277,285,291,297,304,310,316,322,328],"code",{"__ignoreMap":5},[278,279,282],"span",{"class":280,"line":281},"line",1,[278,283,284],{},"graph LR\n",[278,286,288],{"class":280,"line":287},2,[278,289,290],{},"    Client -->|GraphQL| BoscaServer\n",[278,292,294],{"class":280,"line":293},3,[278,295,296],{},"    Client -->|Events| AnalyticsCollector\n",[278,298,300],{"class":280,"line":299},4,[278,301,303],{"emptyLinePlaceholder":302},true,"\n",[278,305,307],{"class":280,"line":306},5,[278,308,309],{},"    BoscaServer -->|Task| TextExtractor\n",[278,311,313],{"class":280,"line":312},6,[278,314,315],{},"    BoscaServer -->|Query| DB[(PostgreSQL)]\n",[278,317,319],{"class":280,"line":318},7,[278,320,321],{},"    BoscaServer -->|Search| Meilisearch\n",[278,323,325],{"class":280,"line":324},8,[278,326,327],{},"    BoscaServer -->|\"Cache \u002F PubSub \u002F Jobs\"| RedisOrNATS[Redis \u002F NATS]\n",[278,329,331],{"class":280,"line":330},9,[278,332,333],{},"    AnalyticsCollector -->|Store| S3[(S3 Storage)]\n",[335,336,337],"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":287,"depth":287,"links":339},[340,343,346],{"id":196,"depth":287,"text":197,"children":341},[342],{"id":208,"depth":293,"text":209},{"id":240,"depth":287,"text":241,"children":344},[345],{"id":249,"depth":293,"text":209},{"id":263,"depth":287,"text":264},"md",{},{"title":88,"description":192},"b44uwyTc3UI8Jg69hLGO6zNdVGXtS7hq4-GfD-fTbcE",[352,354],{"title":84,"path":85,"stem":86,"description":353,"children":-1},"The Bosca Framework relies on a set of robust infrastructure services to ensure scalability, reliability, and performance.",{"title":92,"path":93,"stem":94,"description":355,"children":-1},"Bosca is designed to be cloud-native and deployable in various environments, from local development machines to large-scale Kubernetes clusters.",1775372112858]