[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"landing-footer-link-groups:localized-content-set-v3":3,"landing-page-seo:\u002Ffeatures:localized-content-set-v3":206,"landing-site-settings:localized-content-set-v4":225,"landing-navigation-items:localized-content-set-v4":250,"landing-page:\u002Ffeatures:sections-items-localized-content-set-v3":317},[4,60,107,156],{"id":5,"type":6,"order":7,"contentSet":8,"children":17},14,"group",1,{"id":9,"contents":10},52,[11],{"languageCode":12,"values":13,"isActive":15,"id":16},"en",{"label":14},"Product",true,545,[18,29,39,49],{"id":7,"type":19,"to":20,"href":21,"order":7,"isActive":15,"contentSet":22},"internal","\u002Ffeatures",null,{"id":23,"contents":24},57,[25],{"languageCode":12,"values":26,"isActive":15,"id":28},{"label":27},"Features",532,{"id":30,"type":19,"to":31,"href":21,"order":30,"isActive":15,"contentSet":32},2,"\u002Fgetting-started",{"id":33,"contents":34},58,[35],{"languageCode":12,"values":36,"isActive":15,"id":38},{"label":37},"Getting Started",533,{"id":40,"type":19,"to":41,"href":21,"order":40,"isActive":15,"contentSet":42},3,"\u002Fdocs",{"id":43,"contents":44},59,[45],{"languageCode":12,"values":46,"isActive":15,"id":48},{"label":47},"Documentation",534,{"id":50,"type":51,"to":21,"href":52,"order":50,"isActive":15,"contentSet":53},4,"external","https:\u002F\u002Fdemo.enfyra.io\u002F",{"id":54,"contents":55},60,[56],{"languageCode":12,"values":57,"isActive":15,"id":59},{"label":58},"Demo",535,{"id":61,"type":6,"order":30,"contentSet":62,"children":69},15,{"id":63,"contents":64},53,[65],{"languageCode":12,"values":66,"isActive":15,"id":68},{"label":67},"Resources",546,[70,79,88,97],{"id":71,"type":19,"to":41,"href":21,"order":7,"isActive":15,"contentSet":72},9,{"id":73,"contents":74},65,[75],{"languageCode":12,"values":76,"isActive":15,"id":78},{"label":77},"API Reference",540,{"id":80,"type":19,"to":41,"href":21,"order":30,"isActive":15,"contentSet":81},10,{"id":82,"contents":83},66,[84],{"languageCode":12,"values":85,"isActive":15,"id":87},{"label":86},"Examples",541,{"id":89,"type":19,"to":41,"href":21,"order":40,"isActive":15,"contentSet":90},11,{"id":91,"contents":92},91,[93],{"languageCode":12,"values":94,"isActive":15,"id":96},{"label":95},"Architecture",542,{"id":98,"type":51,"to":21,"href":99,"order":50,"isActive":15,"contentSet":100},12,"https:\u002F\u002Fgithub.com\u002Fenfyra\u002Fenfyra",{"id":101,"contents":102},92,[103],{"languageCode":12,"values":104,"isActive":15,"id":106},{"label":105},"Contributing",543,{"id":108,"type":6,"order":40,"contentSet":109,"children":116},16,{"id":110,"contents":111},54,[112],{"languageCode":12,"values":113,"isActive":15,"id":115},{"label":114},"Community",547,[117,126,136,146],{"id":118,"type":51,"to":21,"href":99,"order":7,"isActive":15,"contentSet":119},5,{"id":120,"contents":121},61,[122],{"languageCode":12,"values":123,"isActive":15,"id":125},{"label":124},"GitHub",536,{"id":127,"type":51,"to":21,"href":128,"order":30,"isActive":15,"contentSet":129},6,"https:\u002F\u002Fdiscord.gg\u002FDH5sXtFVWM",{"id":130,"contents":131},62,[132],{"languageCode":12,"values":133,"isActive":15,"id":135},{"label":134},"Discord",537,{"id":137,"type":19,"to":138,"href":21,"order":40,"isActive":15,"contentSet":139},7,"\u002Fcommunity",{"id":140,"contents":141},63,[142],{"languageCode":12,"values":143,"isActive":15,"id":145},{"label":144},"Discussions",538,{"id":147,"type":51,"to":21,"href":148,"order":50,"isActive":15,"contentSet":149},8,"https:\u002F\u002Fgithub.com\u002Fenfyra\u002Fenfyra\u002Fissues",{"id":150,"contents":151},64,[152],{"languageCode":12,"values":153,"isActive":15,"id":155},{"label":154},"Issues",539,{"id":157,"type":6,"order":50,"contentSet":158,"children":165},17,{"id":159,"contents":160},55,[161],{"languageCode":12,"values":162,"isActive":15,"id":164},{"label":163},"Legal",548,[166,176,186,196],{"id":167,"type":19,"to":168,"href":21,"order":7,"isActive":15,"contentSet":169},13,"\u002Fcloud-terms",{"id":170,"contents":171},93,[172],{"languageCode":12,"values":173,"isActive":15,"id":175},{"label":174},"Cloud Terms",544,{"id":177,"type":19,"to":178,"href":21,"order":30,"isActive":15,"contentSet":179},18,"\u002Fprivacy-policy",{"id":180,"contents":181},94,[182],{"languageCode":12,"values":183,"isActive":15,"id":185},{"label":184},"Privacy Policy",549,{"id":187,"type":19,"to":188,"href":21,"order":40,"isActive":15,"contentSet":189},19,"\u002Frefund-policy",{"id":190,"contents":191},95,[192],{"languageCode":12,"values":193,"isActive":15,"id":195},{"label":194},"Refund Policy",550,{"id":197,"type":19,"to":198,"href":21,"order":50,"isActive":15,"contentSet":199},20,"\u002Fcloud-headroom",{"id":200,"contents":201},96,[202],{"languageCode":12,"values":203,"isActive":15,"id":205},{"label":204},"Cloud Provider Model",551,[207],{"path":20,"changefreq":208,"priority":209,"ogImage":21,"contentSet":210},"weekly","0.9",{"id":211,"contents":212},322,[213],{"languageCode":12,"values":214,"isActive":15,"id":224},{"title":215,"description":216,"keywords":217,"structuredData":21},"Features - Enfyra","Explore Enfyra capabilities across generated REST APIs, optional per-table GraphQL, live metadata schema, permissions, custom logic, realtime, files, and workflows.",[218,219,220,221,222,223],"Enfyra","Backend","BaaS","REST API","Metadata","Runtime",508,[226],{"siteUrl":227,"githubUrl":99,"enfyraVersion":228,"contentSet":229},"https:\u002F\u002Fenfyra.io","2.2.20",{"id":230,"contents":231},56,[232],{"languageCode":12,"values":233,"isActive":15,"id":249},{"siteName":218,"logoText":218,"description":234,"copyrightText":235,"navMenuTitle":236,"navMenuDescription":237,"docsSearchButtonLabel":238,"docsSidebarToggleLabel":239,"docsSearchTitle":238,"docsSearchDescription":240,"docsSearchPlaceholder":241,"docsSearchEmptyText":242,"docsSearchNoResultsText":243,"docsSearchFooterHint":244,"copyCommandLabel":245,"copiedCommandLabel":246,"backToTopLabel":247,"themeMenuLabel":248},"Live metadata backend platform for APIs, permissions, hooks, workflows, realtime behavior, and admin tools on Enfyra Cloud or your own infrastructure.","© 2026 Enfyra. Licensed under Elastic License 2.0.","Navigation","Primary Enfyra navigation","Search documentation","Toggle documentation navigation","Search docs by title, summary, slug, and body content.","Search docs...","Type to search every cached documentation page.","No matching docs found.","↑↓ Enter Esc","Copy command","Copied command","Back to top","Theme menu",524,[251,263,271,282,292,300,308],{"id":7,"kind":252,"type":19,"to":253,"href":21,"icon":21,"order":7,"metadata":254,"contentSet":256},"primary","\u002F",{"active":255},"exact",{"id":257,"contents":258},46,[259],{"languageCode":12,"values":260,"isActive":15,"id":262},{"label":261,"ariaLabel":21},"Home",525,{"id":30,"kind":252,"type":19,"to":20,"href":21,"icon":21,"order":30,"metadata":264,"contentSet":265},{"active":255},{"id":266,"contents":267},47,[268],{"languageCode":12,"values":269,"isActive":15,"id":270},{"label":27,"ariaLabel":21},526,{"id":137,"kind":252,"type":19,"to":272,"href":21,"icon":273,"order":40,"metadata":274,"contentSet":275},"\u002Fpricing","lucide:badge-dollar-sign",{"active":255},{"id":276,"contents":277},51,[278],{"languageCode":12,"values":279,"isActive":15,"id":281},{"label":280,"ariaLabel":280},"Pricing",531,{"id":40,"kind":252,"type":19,"to":41,"href":21,"icon":21,"order":50,"metadata":283,"contentSet":285},{"active":284},"prefix",{"id":286,"contents":287},48,[288],{"languageCode":12,"values":289,"isActive":15,"id":291},{"label":290,"ariaLabel":21},"Docs",527,{"id":50,"kind":252,"type":19,"to":31,"href":21,"icon":21,"order":118,"metadata":293,"contentSet":294},{"active":255},{"id":295,"contents":296},49,[297],{"languageCode":12,"values":298,"isActive":15,"id":299},{"label":37,"ariaLabel":21},528,{"id":118,"kind":252,"type":19,"to":138,"href":21,"icon":21,"order":127,"metadata":301,"contentSet":302},{"active":255},{"id":303,"contents":304},50,[305],{"languageCode":12,"values":306,"isActive":15,"id":307},{"label":114,"ariaLabel":21},529,{"id":127,"kind":309,"type":51,"to":21,"href":99,"icon":310,"order":7,"metadata":21,"contentSet":311},"social","lucide:github",{"id":312,"contents":313},338,[314],{"languageCode":12,"values":315,"isActive":15,"id":316},{"label":124,"ariaLabel":124},530,[318],{"id":30,"path":20,"slug":319,"order":30,"isActive":15,"contentSet":320,"sections":325},"features",{"id":30,"contents":321},[322],{"languageCode":12,"values":323,"isActive":15,"id":30},{"title":27,"description":324},"Features that stay connected to the backend runtime.",[326,390,404,454,504,550,596,642],{"id":71,"sectionKey":327,"icon":328,"layout":329,"actionPath":21,"secondaryActionPath":21,"order":7,"isActive":15,"contentSet":330,"items":337},"feature_section","lucide:database","feature-section",{"id":5,"contents":331},[332],{"languageCode":12,"values":333,"isActive":15,"id":336},{"eyebrow":21,"title":334,"description":335,"actionText":21,"secondaryActionText":21},"Query Engine","Filter, sort, limit, and shape generated REST reads without hand-writing basic CRUD.",397,[338,349,360,370,380],{"id":339,"icon":21,"href":21,"path":21,"code":340,"metadata":341,"order":7,"isActive":15,"contentSet":343},33,"const products = await @REPOS.products.find({\n  filter: { status: { _eq: 'active' } },\n  fields: 'id,title,author.name',\n  sort: '-createdAt',\n  limit: 10\n});\n\nreturn products;",{"kind":342},"codeSnippet",{"id":344,"contents":345},292,[346],{"languageCode":12,"values":347,"isActive":15,"id":348},{"label":21,"title":21,"description":21,"value":21},447,{"id":350,"icon":21,"href":21,"path":21,"code":21,"metadata":351,"order":30,"isActive":15,"contentSet":353},34,{"kind":352},"feature",{"id":354,"contents":355},76,[356],{"languageCode":12,"values":357,"isActive":15,"id":359},{"label":358,"title":21,"description":21,"value":21},"Complex filters with AND\u002FOR conditions",448,{"id":361,"icon":21,"href":21,"path":21,"code":21,"metadata":362,"order":40,"isActive":15,"contentSet":363},35,{"kind":352},{"id":364,"contents":365},77,[366],{"languageCode":12,"values":367,"isActive":15,"id":369},{"label":368,"title":21,"description":21,"value":21},"Multi-table joins and relations",449,{"id":371,"icon":21,"href":21,"path":21,"code":21,"metadata":372,"order":50,"isActive":15,"contentSet":373},36,{"kind":352},{"id":374,"contents":375},78,[376],{"languageCode":12,"values":377,"isActive":15,"id":379},{"label":378,"title":21,"description":21,"value":21},"Aggregations (count, sum, avg, min, max)",450,{"id":381,"icon":21,"href":21,"path":21,"code":21,"metadata":382,"order":118,"isActive":15,"contentSet":383},37,{"kind":352},{"id":384,"contents":385},79,[386],{"languageCode":12,"values":387,"isActive":15,"id":389},{"label":388,"title":21,"description":21,"value":21},"Full-text search with ranking",451,{"id":147,"sectionKey":391,"icon":392,"layout":393,"actionPath":21,"secondaryActionPath":21,"order":7,"isActive":15,"contentSet":394,"items":403},"hero","lucide:layers","capability-map",{"id":167,"contents":395},[396],{"languageCode":12,"values":397,"isActive":15,"id":402},{"eyebrow":398,"title":324,"description":399,"actionText":400,"secondaryActionText":401},"Platform capabilities","Enfyra keeps schema, generated REST APIs, permissions, files, realtime, workflows, and custom logic close to the same product model.","capability map","metadata-backed",396,[],{"id":80,"sectionKey":327,"icon":405,"layout":329,"actionPath":21,"secondaryActionPath":21,"order":30,"isActive":15,"contentSet":406,"items":413},"lucide:radio",{"id":61,"contents":407},[408],{"languageCode":12,"values":409,"isActive":15,"id":412},{"eyebrow":21,"title":410,"description":411,"actionText":21,"secondaryActionText":21},"Realtime","Use Socket.IO gateways for product flows that need live messages, notifications, or collaboration.",398,[414,424,434,444],{"id":415,"icon":21,"href":21,"path":21,"code":416,"metadata":417,"order":7,"isActive":15,"contentSet":418},38,"const { roomId } = @BODY;\nif (!roomId) @THROW.badRequest('roomId is required');\n\n@SOCKET.join(`notifications_${roomId}`);\n@SOCKET.emitToRoom(`notifications_${roomId}`, 'notification', {\n  userId: @USER.id,\n  message: @BODY.message\n});\n\nreturn { joined: roomId };",{"kind":342},{"id":419,"contents":420},293,[421],{"languageCode":12,"values":422,"isActive":15,"id":423},{"label":21,"title":21,"description":21,"value":21},452,{"id":425,"icon":21,"href":21,"path":21,"code":21,"metadata":426,"order":30,"isActive":15,"contentSet":427},39,{"kind":352},{"id":428,"contents":429},80,[430],{"languageCode":12,"values":431,"isActive":15,"id":433},{"label":432,"title":21,"description":21,"value":21},"Subscribe to table changes (insert\u002Fupdate\u002Fdelete)",453,{"id":435,"icon":21,"href":21,"path":21,"code":21,"metadata":436,"order":40,"isActive":15,"contentSet":437},40,{"kind":352},{"id":438,"contents":439},294,[440],{"languageCode":12,"values":441,"isActive":15,"id":443},{"label":442,"title":21,"description":21,"value":21},"Filter subscriptions with query conditions",454,{"id":445,"icon":21,"href":21,"path":21,"code":21,"metadata":446,"order":50,"isActive":15,"contentSet":447},41,{"kind":352},{"id":448,"contents":449},295,[450],{"languageCode":12,"values":451,"isActive":15,"id":453},{"label":452,"title":21,"description":21,"value":21},"Room-based messaging and presence",455,{"id":89,"sectionKey":327,"icon":455,"layout":329,"actionPath":21,"secondaryActionPath":21,"order":40,"isActive":15,"contentSet":456,"items":463},"lucide:zap",{"id":108,"contents":457},[458],{"languageCode":12,"values":459,"isActive":15,"id":462},{"eyebrow":21,"title":460,"description":461,"actionText":21,"secondaryActionText":21},"Generated APIs","REST routes are generated from metadata. GraphQL can be enabled per table when the project needs it.",399,[464,474,484,494],{"id":465,"icon":21,"href":21,"path":21,"code":466,"metadata":467,"order":7,"isActive":15,"contentSet":468},42,"const result = await @REPOS.products.find({\n  filter: @QUERY.filter || {},\n  fields: @QUERY.fields || 'id,title',\n  sort: @QUERY.sort || '-createdAt',\n  limit: Number(@QUERY.limit || 10)\n});\n\nreturn result;",{"kind":342},{"id":469,"contents":470},296,[471],{"languageCode":12,"values":472,"isActive":15,"id":473},{"label":21,"title":21,"description":21,"value":21},456,{"id":475,"icon":21,"href":21,"path":21,"code":21,"metadata":476,"order":30,"isActive":15,"contentSet":477},43,{"kind":352},{"id":478,"contents":479},297,[480],{"languageCode":12,"values":481,"isActive":15,"id":483},{"label":482,"title":21,"description":21,"value":21},"RESTful endpoints for all tables",457,{"id":485,"icon":21,"href":21,"path":21,"code":21,"metadata":486,"order":40,"isActive":15,"contentSet":487},44,{"kind":352},{"id":488,"contents":489},298,[490],{"languageCode":12,"values":491,"isActive":15,"id":493},{"label":492,"title":21,"description":21,"value":21},"GraphQL with introspection and playground",458,{"id":495,"icon":21,"href":21,"path":21,"code":21,"metadata":496,"order":50,"isActive":15,"contentSet":497},45,{"kind":352},{"id":498,"contents":499},299,[500],{"languageCode":12,"values":501,"isActive":15,"id":503},{"label":502,"title":21,"description":21,"value":21},"Automatic Swagger\u002FOpenAPI documentation",459,{"id":98,"sectionKey":327,"icon":505,"layout":329,"actionPath":21,"secondaryActionPath":21,"order":50,"isActive":15,"contentSet":506,"items":513},"lucide:lock",{"id":157,"contents":507},[508],{"languageCode":12,"values":509,"isActive":15,"id":512},{"eyebrow":21,"title":510,"description":511,"actionText":21,"secondaryActionText":21},"Authentication","JWT auth, refresh tokens, OAuth redirects, and role-aware access are part of the runtime.",400,[514,523,532,541],{"id":257,"icon":21,"href":21,"path":21,"code":515,"metadata":516,"order":7,"isActive":15,"contentSet":517},"if (!@USER) @THROW.unauthorized('Login required');\n\nreturn {\n  id: @USER.id,\n  email: @USER.email,\n  roles: @USER.roles || []\n};",{"kind":342},{"id":518,"contents":519},300,[520],{"languageCode":12,"values":521,"isActive":15,"id":522},{"label":21,"title":21,"description":21,"value":21},460,{"id":266,"icon":21,"href":21,"path":21,"code":21,"metadata":524,"order":30,"isActive":15,"contentSet":525},{"kind":352},{"id":526,"contents":527},301,[528],{"languageCode":12,"values":529,"isActive":15,"id":531},{"label":530,"title":21,"description":21,"value":21},"JWT token generation and validation",461,{"id":286,"icon":21,"href":21,"path":21,"code":21,"metadata":533,"order":40,"isActive":15,"contentSet":534},{"kind":352},{"id":535,"contents":536},302,[537],{"languageCode":12,"values":538,"isActive":15,"id":540},{"label":539,"title":21,"description":21,"value":21},"Role-based access control (RBAC)",462,{"id":295,"icon":21,"href":21,"path":21,"code":21,"metadata":542,"order":50,"isActive":15,"contentSet":543},{"kind":352},{"id":544,"contents":545},303,[546],{"languageCode":12,"values":547,"isActive":15,"id":549},{"label":548,"title":21,"description":21,"value":21},"Session management with refresh tokens",463,{"id":167,"sectionKey":327,"icon":551,"layout":329,"actionPath":21,"secondaryActionPath":21,"order":118,"isActive":15,"contentSet":552,"items":559},"lucide:hard-drive",{"id":177,"contents":553},[554],{"languageCode":12,"values":555,"isActive":15,"id":558},{"eyebrow":21,"title":556,"description":557,"actionText":21,"secondaryActionText":21},"Files","Upload, organize, and serve files through the same app API surface.",401,[560,569,578,587],{"id":303,"icon":21,"href":21,"path":21,"code":561,"metadata":562,"order":7,"isActive":15,"contentSet":563},"if (!@UPLOADED_FILE) @THROW.badRequest('file is required');\n\nconst file = await @REPOS.file_definition.find({\n  filter: { id: { _eq: @UPLOADED_FILE.id } },\n  limit: 1\n});\n\nreturn file.data[0];",{"kind":342},{"id":564,"contents":565},304,[566],{"languageCode":12,"values":567,"isActive":15,"id":568},{"label":21,"title":21,"description":21,"value":21},464,{"id":276,"icon":21,"href":21,"path":21,"code":21,"metadata":570,"order":30,"isActive":15,"contentSet":571},{"kind":352},{"id":572,"contents":573},305,[574],{"languageCode":12,"values":575,"isActive":15,"id":577},{"label":576,"title":21,"description":21,"value":21},"Upload files with automatic optimization",465,{"id":9,"icon":21,"href":21,"path":21,"code":21,"metadata":579,"order":40,"isActive":15,"contentSet":580},{"kind":352},{"id":581,"contents":582},306,[583],{"languageCode":12,"values":584,"isActive":15,"id":586},{"label":585,"title":21,"description":21,"value":21},"Image transformations (resize, crop, format)",466,{"id":63,"icon":21,"href":21,"path":21,"code":21,"metadata":588,"order":50,"isActive":15,"contentSet":589},{"kind":352},{"id":590,"contents":591},307,[592],{"languageCode":12,"values":593,"isActive":15,"id":595},{"label":594,"title":21,"description":21,"value":21},"Permission-based file access control",467,{"id":5,"sectionKey":327,"icon":597,"layout":329,"actionPath":21,"secondaryActionPath":21,"order":127,"isActive":15,"contentSet":598,"items":605},"lucide:code",{"id":187,"contents":599},[600],{"languageCode":12,"values":601,"isActive":15,"id":604},{"eyebrow":21,"title":602,"description":603,"actionText":21,"secondaryActionText":21},"Custom Logic","Add handlers and hooks around generated routes when the product flow needs more than CRUD.",402,[606,615,624,633],{"id":110,"icon":21,"href":21,"path":21,"code":607,"metadata":608,"order":7,"isActive":15,"contentSet":609},"const order = await @REPOS.orders.create({\n  data: {\n    customerId: @BODY.customerId,\n    status: 'pending'\n  }\n});\n\n@SOCKET.emitToRoom('orders', 'orderCreated', order);\nreturn order;",{"kind":342},{"id":610,"contents":611},308,[612],{"languageCode":12,"values":613,"isActive":15,"id":614},{"label":21,"title":21,"description":21,"value":21},468,{"id":159,"icon":21,"href":21,"path":21,"code":21,"metadata":616,"order":30,"isActive":15,"contentSet":617},{"kind":352},{"id":618,"contents":619},309,[620],{"languageCode":12,"values":621,"isActive":15,"id":623},{"label":622,"title":21,"description":21,"value":21},"Custom API endpoints with handlers",469,{"id":230,"icon":21,"href":21,"path":21,"code":21,"metadata":625,"order":40,"isActive":15,"contentSet":626},{"kind":352},{"id":627,"contents":628},310,[629],{"languageCode":12,"values":630,"isActive":15,"id":632},{"label":631,"title":21,"description":21,"value":21},"Background job processing",470,{"id":23,"icon":21,"href":21,"path":21,"code":21,"metadata":634,"order":50,"isActive":15,"contentSet":635},{"kind":352},{"id":636,"contents":637},311,[638],{"languageCode":12,"values":639,"isActive":15,"id":641},{"label":640,"title":21,"description":21,"value":21},"Scheduled tasks and cron jobs",471,{"id":61,"sectionKey":643,"icon":21,"layout":21,"actionPath":21,"secondaryActionPath":21,"order":644,"isActive":15,"contentSet":645,"items":652},"additional_features",100,{"id":197,"contents":646},[647],{"languageCode":12,"values":648,"isActive":15,"id":651},{"eyebrow":649,"title":650,"description":21,"actionText":21,"secondaryActionText":21},"More runtime surfaces","The supporting pieces stay connected.",403,[653,663,673,683,693],{"id":33,"icon":654,"href":21,"path":21,"code":21,"metadata":21,"order":7,"isActive":15,"contentSet":655},"lucide:webhook",{"id":656,"contents":657},312,[658],{"languageCode":12,"values":659,"isActive":15,"id":662},{"label":21,"title":660,"description":661,"value":21},"Hooks & Handlers","Lifecycle events and custom logic",472,{"id":43,"icon":664,"href":21,"path":21,"code":21,"metadata":21,"order":30,"isActive":15,"contentSet":665},"lucide:puzzle",{"id":666,"contents":667},313,[668],{"languageCode":12,"values":669,"isActive":15,"id":672},{"label":21,"title":670,"description":671,"value":21},"Extension System","Plugin architecture for extensibility",473,{"id":54,"icon":674,"href":21,"path":21,"code":21,"metadata":21,"order":40,"isActive":15,"contentSet":675},"lucide:package",{"id":676,"contents":677},314,[678],{"languageCode":12,"values":679,"isActive":15,"id":682},{"label":21,"title":680,"description":681,"value":21},"Package Management","Install and manage extensions",474,{"id":120,"icon":684,"href":21,"path":21,"code":21,"metadata":21,"order":50,"isActive":15,"contentSet":685},"lucide:shield",{"id":686,"contents":687},315,[688],{"languageCode":12,"values":689,"isActive":15,"id":692},{"label":21,"title":690,"description":691,"value":21},"Permission System","Fine-grained access control",475,{"id":130,"icon":694,"href":21,"path":21,"code":21,"metadata":21,"order":118,"isActive":15,"contentSet":695},"lucide:network",{"id":696,"contents":697},316,[698],{"languageCode":12,"values":699,"isActive":15,"id":702},{"label":21,"title":700,"description":701,"value":21},"Cluster Architecture","Horizontal scaling support",476]