[{"data":1,"prerenderedAt":1304},["ShallowReactive",2],{"handbook-\u002Fhandbook\u002Fengineering\u002Fops\u002Fdeployment\u002F":3,"handbook-nav":458},{"id":4,"title":5,"body":6,"description":17,"extension":451,"meta":452,"navigation":453,"path":454,"seo":455,"stem":456,"__hash__":457},"handbook\u002Fhandbook\u002Fengineering\u002Fops\u002Fdeployment.md","Deployment",{"type":7,"value":8,"toc":448},"minimark",[9,14,18,132,137,160,179,182,444],[10,11,13],"h1",{"id":12},"dependencies-within-the-cicd-process","Dependencies within the CI\u002FCD process",[15,16,17],"p",{},"This paragraph shows a graphical presentation of dependencies between each build pipeline in our CI\u002FCD process.",[19,20,25],"pre",{"className":21,"code":22,"language":23,"meta":24,"style":24},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","graph TB\n    A[NR-File-Nodes package] & C[NR-Project-Nodes package] --> B[NR-launcher package]\n    B ----> X[Node-RED container build]\n    B --> D[LocalFS package]\n    D --> E[FlowFuse package]\n    E & F[K8s package] --> Y[Flowfuse container build]\n    G[File-server package] -----> Z[File-server container build]\n    click A href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-file-nodes\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" \"NR-File-Nodes package\" _blank\n    click B href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-launcher\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" \"NR-launcher package\" _blank\n    click C href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-project-nodes\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n    click D href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdriver-localfs\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n    click E href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n    click F href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdriver-k8s\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n    click G href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Ffile-server\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n    click X href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fnodered-container.yml\" _blank\n    click Y href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fflowforge-container.yml\" _blank\n    click Z href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Ffileserver-container.yml\" _blank\n","mermaid","",[26,27,28,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126],"code",{"__ignoreMap":24},[29,30,33],"span",{"class":31,"line":32},"line",1,[29,34,35],{},"graph TB\n",[29,37,39],{"class":31,"line":38},2,[29,40,41],{},"    A[NR-File-Nodes package] & C[NR-Project-Nodes package] --> B[NR-launcher package]\n",[29,43,45],{"class":31,"line":44},3,[29,46,47],{},"    B ----> X[Node-RED container build]\n",[29,49,51],{"class":31,"line":50},4,[29,52,53],{},"    B --> D[LocalFS package]\n",[29,55,57],{"class":31,"line":56},5,[29,58,59],{},"    D --> E[FlowFuse package]\n",[29,61,63],{"class":31,"line":62},6,[29,64,65],{},"    E & F[K8s package] --> Y[Flowfuse container build]\n",[29,67,69],{"class":31,"line":68},7,[29,70,71],{},"    G[File-server package] -----> Z[File-server container build]\n",[29,73,75],{"class":31,"line":74},8,[29,76,77],{},"    click A href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-file-nodes\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" \"NR-File-Nodes package\" _blank\n",[29,79,81],{"class":31,"line":80},9,[29,82,83],{},"    click B href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-launcher\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" \"NR-launcher package\" _blank\n",[29,85,87],{"class":31,"line":86},10,[29,88,89],{},"    click C href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fnr-project-nodes\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n",[29,91,93],{"class":31,"line":92},11,[29,94,95],{},"    click D href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdriver-localfs\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n",[29,97,99],{"class":31,"line":98},12,[29,100,101],{},"    click E href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fflowfuse\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n",[29,103,105],{"class":31,"line":104},13,[29,106,107],{},"    click F href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fdriver-k8s\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n",[29,109,111],{"class":31,"line":110},14,[29,112,113],{},"    click G href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Ffile-server\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fpublish.yml\" _blank\n",[29,115,117],{"class":31,"line":116},15,[29,118,119],{},"    click X href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fnodered-container.yml\" _blank\n",[29,121,123],{"class":31,"line":122},16,[29,124,125],{},"    click Y href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fflowforge-container.yml\" _blank\n",[29,127,129],{"class":31,"line":128},17,[29,130,131],{},"    click Z href \"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Ffileserver-container.yml\" _blank\n",[133,134,136],"h2",{"id":135},"how-does-it-work","How does it work?",[15,138,139,140,143,144,147,148,151,152,159],{},"The CI\u002FCD process is executed by GitHub Actions.\nEach change pushed to the repositories ",[26,141,142],{},"main"," branch initiates the process.\nNode package publish process is defined in the file ",[26,145,146],{},".github\u002Fworkflows\u002Fpublish.yml"," in each repository while container images build steps can be found in ",[26,149,150],{},".github\u002Fworkflows\u002F*-containers.yml"," files in ",[153,154,158],"a",{"href":155,"rel":156},"https:\u002F\u002Fgithub.com\u002FFlowFuse\u002Fhelm\u002Ftree\u002Fmain\u002F.github\u002Fworkflows",[157],"nofollow","helm repository",".",[15,161,162,163,168,169,174,175,178],{},"Each package has its dedicated code repository. Due to the security limitations of GitHub Actions, there is no possibility to access the pipeline from one repository to another.\nTherefore, there is a need to use a dedicated ",[153,164,167],{"href":165,"rel":166},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fapps\u002Foverview",[157],"GitHub App"," to access repositories and trigger the build process of the dependent package. The process of creating such GitHub App is described in the ",[153,170,173],{"href":171,"rel":172},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fdevelopers\u002Fapps\u002Fcreating-a-github-app",[157],"GitHub documentation",".\nBecause such GitHub App imitates a regular user, it is necessary to include ",[26,176,177],{},"workflow_dispatch"," event in the dependent workflow definition.",[15,180,181],{},"Example of job responsible for triggering dependent pipeline:",[19,183,187],{"className":184,"code":185,"language":186,"meta":24,"style":24},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","  dispatch_container_build:\n    runs-on: ubuntu-latest\n    steps:\n        # This step uses GitHub App to generate a token \n        # which is used to trigger dependent pipeline\n      - name: Generate a token\n        # ID of the step to reference it in the next one\n        id: generate_token                                        \n        # Name of the action\n        uses: tibdex\u002Fgithub-app-token@v1\n        with:\n          # GitHub App ID\n          app_id: ${{ secrets.GH_BOT_APP_ID }}\n          # GitHub App private key\n          private_key: ${{ secrets.GH_BOT_APP_KEY }}\n\n        # This step triggers dependent pipeline located in \n        # the `helm` repository and defined in the \n        # `flowforge-container.yml` file\n      - name: Trigger flowforge container build\n        # Name of the action\n        uses: benc-uk\u002Fworkflow-dispatch@v1\n        with:\n          # Name of the workflow to trigger\n          workflow: flowforge-container.yml\n          # Name of the repository where \n          # the dependent workflow is located\n          repo: flowfuse\u002Fhelm\n          # Branch name\n          ref: main\n          # Token generated in the previous step                                                 \n          token: ${{ steps.generate_token.outputs.token }}\n","yaml",[26,188,189,199,211,218,224,229,242,247,261,266,276,283,288,298,303,313,319,324,330,336,348,353,363,370,376,387,393,399,410,416,427,433],{"__ignoreMap":24},[29,190,191,195],{"class":31,"line":32},[29,192,194],{"class":193},"swJcz","  dispatch_container_build",[29,196,198],{"class":197},"sMK4o",":\n",[29,200,201,204,207],{"class":31,"line":38},[29,202,203],{"class":193},"    runs-on",[29,205,206],{"class":197},":",[29,208,210],{"class":209},"sfazB"," ubuntu-latest\n",[29,212,213,216],{"class":31,"line":44},[29,214,215],{"class":193},"    steps",[29,217,198],{"class":197},[29,219,220],{"class":31,"line":50},[29,221,223],{"class":222},"sHwdD","        # This step uses GitHub App to generate a token \n",[29,225,226],{"class":31,"line":56},[29,227,228],{"class":222},"        # which is used to trigger dependent pipeline\n",[29,230,231,234,237,239],{"class":31,"line":62},[29,232,233],{"class":197},"      -",[29,235,236],{"class":193}," name",[29,238,206],{"class":197},[29,240,241],{"class":209}," Generate a token\n",[29,243,244],{"class":31,"line":68},[29,245,246],{"class":222},"        # ID of the step to reference it in the next one\n",[29,248,249,252,254,257],{"class":31,"line":74},[29,250,251],{"class":193},"        id",[29,253,206],{"class":197},[29,255,256],{"class":209}," generate_token",[29,258,260],{"class":259},"sTEyZ","                                        \n",[29,262,263],{"class":31,"line":80},[29,264,265],{"class":222},"        # Name of the action\n",[29,267,268,271,273],{"class":31,"line":86},[29,269,270],{"class":193},"        uses",[29,272,206],{"class":197},[29,274,275],{"class":209}," tibdex\u002Fgithub-app-token@v1\n",[29,277,278,281],{"class":31,"line":92},[29,279,280],{"class":193},"        with",[29,282,198],{"class":197},[29,284,285],{"class":31,"line":98},[29,286,287],{"class":222},"          # GitHub App ID\n",[29,289,290,293,295],{"class":31,"line":104},[29,291,292],{"class":193},"          app_id",[29,294,206],{"class":197},[29,296,297],{"class":209}," ${{ secrets.GH_BOT_APP_ID }}\n",[29,299,300],{"class":31,"line":110},[29,301,302],{"class":222},"          # GitHub App private key\n",[29,304,305,308,310],{"class":31,"line":116},[29,306,307],{"class":193},"          private_key",[29,309,206],{"class":197},[29,311,312],{"class":209}," ${{ secrets.GH_BOT_APP_KEY }}\n",[29,314,315],{"class":31,"line":122},[29,316,318],{"emptyLinePlaceholder":317},true,"\n",[29,320,321],{"class":31,"line":128},[29,322,323],{"class":222},"        # This step triggers dependent pipeline located in \n",[29,325,327],{"class":31,"line":326},18,[29,328,329],{"class":222},"        # the `helm` repository and defined in the \n",[29,331,333],{"class":31,"line":332},19,[29,334,335],{"class":222},"        # `flowforge-container.yml` file\n",[29,337,339,341,343,345],{"class":31,"line":338},20,[29,340,233],{"class":197},[29,342,236],{"class":193},[29,344,206],{"class":197},[29,346,347],{"class":209}," Trigger flowforge container build\n",[29,349,351],{"class":31,"line":350},21,[29,352,265],{"class":222},[29,354,356,358,360],{"class":31,"line":355},22,[29,357,270],{"class":193},[29,359,206],{"class":197},[29,361,362],{"class":209}," benc-uk\u002Fworkflow-dispatch@v1\n",[29,364,366,368],{"class":31,"line":365},23,[29,367,280],{"class":193},[29,369,198],{"class":197},[29,371,373],{"class":31,"line":372},24,[29,374,375],{"class":222},"          # Name of the workflow to trigger\n",[29,377,379,382,384],{"class":31,"line":378},25,[29,380,381],{"class":193},"          workflow",[29,383,206],{"class":197},[29,385,386],{"class":209}," flowforge-container.yml\n",[29,388,390],{"class":31,"line":389},26,[29,391,392],{"class":222},"          # Name of the repository where \n",[29,394,396],{"class":31,"line":395},27,[29,397,398],{"class":222},"          # the dependent workflow is located\n",[29,400,402,405,407],{"class":31,"line":401},28,[29,403,404],{"class":193},"          repo",[29,406,206],{"class":197},[29,408,409],{"class":209}," flowfuse\u002Fhelm\n",[29,411,413],{"class":31,"line":412},29,[29,414,415],{"class":222},"          # Branch name\n",[29,417,419,422,424],{"class":31,"line":418},30,[29,420,421],{"class":193},"          ref",[29,423,206],{"class":197},[29,425,426],{"class":209}," main\n",[29,428,430],{"class":31,"line":429},31,[29,431,432],{"class":222},"          # Token generated in the previous step                                                 \n",[29,434,436,439,441],{"class":31,"line":435},32,[29,437,438],{"class":193},"          token",[29,440,206],{"class":197},[29,442,443],{"class":209}," ${{ steps.generate_token.outputs.token }}\n",[445,446,447],"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);}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":24,"searchDepth":50,"depth":50,"links":449},[450],{"id":135,"depth":38,"text":136},"md",{},null,"\u002Fhandbook\u002Fengineering\u002Fops\u002Fdeployment",{"title":5,"description":17},"handbook\u002Fengineering\u002Fops\u002Fdeployment","eRV_JYLaEXRf3WDC36fcGaqP_bCJjjgC4cZ6WLoJp-I",[459],{"title":460,"path":461,"stem":462,"children":463},"Handbook","\u002Fhandbook","handbook",[464,466,591,623,849,937,999,1140,1145],{"title":460,"path":461,"stem":465},"handbook\u002Findex",{"title":467,"group":467,"icon":468,"order":32,"path":469,"stem":470,"children":471},"Company","i-lucide-building-2","\u002Fhandbook\u002Fcompany","handbook\u002Fcompany\u002Findex",[472,473,477,481,485,504,508,512,516,583,587],{"title":467,"path":469,"stem":470},{"title":474,"path":475,"stem":476},"Board & Investors","\u002Fhandbook\u002Fcompany\u002Fboard","handbook\u002Fcompany\u002Fboard",{"title":478,"path":479,"stem":480},"Communications","\u002Fhandbook\u002Fcompany\u002Fcommunication","handbook\u002Fcompany\u002Fcommunication",{"title":482,"path":483,"stem":484},"Decision making and project management","\u002Fhandbook\u002Fcompany\u002Fdecisions","handbook\u002Fcompany\u002Fdecisions",{"title":486,"icon":487,"path":488,"stem":489,"children":490},"Guides","i-lucide-book-open","\u002Fhandbook\u002Fcompany\u002Fguides","handbook\u002Fcompany\u002Fguides\u002Findex",[491,492,496,500],{"title":486,"path":488,"stem":489},{"title":493,"path":494,"stem":495},"Editing the Handbook","\u002Fhandbook\u002Fcompany\u002Fguides\u002Fgit","handbook\u002Fcompany\u002Fguides\u002Fgit",{"title":497,"path":498,"stem":499},"Google Workspace","\u002Fhandbook\u002Fcompany\u002Fguides\u002Fgworkspace","handbook\u002Fcompany\u002Fguides\u002Fgworkspace",{"title":501,"path":502,"stem":503},"Markdown Guide","\u002Fhandbook\u002Fcompany\u002Fguides\u002Fmarkdown","handbook\u002Fcompany\u002Fguides\u002Fmarkdown",{"title":505,"path":506,"stem":507},"Organizational Structure","\u002Fhandbook\u002Fcompany\u002Forganizational-structure","handbook\u002Fcompany\u002Forganizational-structure",{"title":509,"path":510,"stem":511},"Principles","\u002Fhandbook\u002Fcompany\u002Fprinciples","handbook\u002Fcompany\u002Fprinciples",{"title":513,"path":514,"stem":515},"Remote Work","\u002Fhandbook\u002Fcompany\u002Fremote","handbook\u002Fcompany\u002Fremote",{"title":517,"icon":518,"path":519,"stem":520,"children":521},"Security","i-lucide-shield","\u002Fhandbook\u002Fcompany\u002Fsecurity","handbook\u002Fcompany\u002Fsecurity\u002Findex",[522,523,527,531,535,539,543,547,551,555,559,563,567,571,575,579],{"title":517,"path":519,"stem":520},{"title":524,"path":525,"stem":526},"Access Control Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Faccess-control","handbook\u002Fcompany\u002Fsecurity\u002Faccess-control",{"title":528,"path":529,"stem":530},"AI Development and Customer Data Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fai-development-and-customer-data","handbook\u002Fcompany\u002Fsecurity\u002Fai-development-and-customer-data",{"title":532,"path":533,"stem":534},"Asset Management Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fasset-management","handbook\u002Fcompany\u002Fsecurity\u002Fasset-management",{"title":536,"path":537,"stem":538},"Business Continuity & Disaster Recovery Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fbusiness-continuity","handbook\u002Fcompany\u002Fsecurity\u002Fbusiness-continuity",{"title":540,"path":541,"stem":542},"Hardware Security Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fcomputer-security","handbook\u002Fcompany\u002Fsecurity\u002Fcomputer-security",{"title":544,"path":545,"stem":546},"Cryptography Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fcryptography","handbook\u002Fcompany\u002Fsecurity\u002Fcryptography",{"title":548,"path":549,"stem":550},"Data Management Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fdata-management","handbook\u002Fcompany\u002Fsecurity\u002Fdata-management",{"title":552,"path":553,"stem":554},"Human Resources Security Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fhuman-resources","handbook\u002Fcompany\u002Fsecurity\u002Fhuman-resources",{"title":556,"path":557,"stem":558},"Incident Response Plan","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fincident-response","handbook\u002Fcompany\u002Fsecurity\u002Fincident-response",{"title":560,"path":561,"stem":562},"Information Security Policy and Acceptable Use Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Finformation-security","handbook\u002Fcompany\u002Fsecurity\u002Finformation-security",{"title":564,"path":565,"stem":566},"Information Security Roles and Responsibilities","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Finformation-security-roles","handbook\u002Fcompany\u002Fsecurity\u002Finformation-security-roles",{"title":568,"path":569,"stem":570},"Operations Security Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Foperations-security","handbook\u002Fcompany\u002Fsecurity\u002Foperations-security",{"title":572,"path":573,"stem":574},"Risk Management Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Frisk-management","handbook\u002Fcompany\u002Fsecurity\u002Frisk-management",{"title":576,"path":577,"stem":578},"Secure Development Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fsecure-development","handbook\u002Fcompany\u002Fsecurity\u002Fsecure-development",{"title":580,"path":581,"stem":582},"Third-Party Risk Management Policy","\u002Fhandbook\u002Fcompany\u002Fsecurity\u002Fthird-party-risk-management","handbook\u002Fcompany\u002Fsecurity\u002Fthird-party-risk-management",{"title":584,"path":585,"stem":586},"Strategy","\u002Fhandbook\u002Fcompany\u002Fstrategy","handbook\u002Fcompany\u002Fstrategy",{"title":588,"path":589,"stem":590},"Values","\u002Fhandbook\u002Fcompany\u002Fvalues","handbook\u002Fcompany\u002Fvalues",{"title":592,"group":593,"icon":594,"order":50,"path":595,"stem":596,"children":597},"Design","Engineering & Design Practices","i-lucide-pen-tool","\u002Fhandbook\u002Fdesign","handbook\u002Fdesign\u002Findex",[598,599,603,607,611,615,619],{"title":592,"path":595,"stem":596},{"title":600,"path":601,"stem":602},"Art Requests","\u002Fhandbook\u002Fdesign\u002Fart-requests","handbook\u002Fdesign\u002Fart-requests",{"title":604,"path":605,"stem":606},"Branding","\u002Fhandbook\u002Fdesign\u002Fbranding","handbook\u002Fdesign\u002Fbranding",{"title":608,"path":609,"stem":610},"Design Thinking","\u002Fhandbook\u002Fdesign\u002Fdesign-thinking","handbook\u002Fdesign\u002Fdesign-thinking",{"title":612,"path":613,"stem":614},"Process","\u002Fhandbook\u002Fdesign\u002Fprocess","handbook\u002Fdesign\u002Fprocess",{"title":616,"path":617,"stem":618},"Tools","\u002Fhandbook\u002Fdesign\u002Ftools","handbook\u002Fdesign\u002Ftools",{"title":620,"path":621,"stem":622},"Video","\u002Fhandbook\u002Fdesign\u002Fvideos","handbook\u002Fdesign\u002Fvideos",{"title":624,"group":593,"icon":625,"order":44,"path":626,"stem":627,"children":628},"Engineering","i-lucide-code-2","\u002Fhandbook\u002Fengineering","handbook\u002Fengineering\u002Findex",[629,630,634,649,653,657,661,695,735,739,796,800,827,831,846],{"title":624,"path":626,"stem":627},{"title":631,"path":632,"stem":633},"Blueprints","\u002Fhandbook\u002Fengineering\u002Fblueprints","handbook\u002Fengineering\u002Fblueprints",{"title":635,"icon":636,"path":637,"stem":638,"children":639},"Contributing","i-lucide-git-pull-request","\u002Fhandbook\u002Fengineering\u002Fcontributing","handbook\u002Fengineering\u002Fcontributing\u002Findex",[640,641,645],{"title":635,"path":637,"stem":638},{"title":642,"path":643,"stem":644},"FF Tables","\u002Fhandbook\u002Fengineering\u002Fcontributing\u002Fff-tables","handbook\u002Fengineering\u002Fcontributing\u002Fff-tables",{"title":646,"path":647,"stem":648},"Team NPM Registry","\u002Fhandbook\u002Fengineering\u002Fcontributing\u002Fteam-npm-registry","handbook\u002Fengineering\u002Fcontributing\u002Fteam-npm-registry",{"title":650,"path":651,"stem":652},"Node-RED Dashboard","\u002Fhandbook\u002Fengineering\u002Fdashboard","handbook\u002Fengineering\u002Fdashboard",{"title":654,"path":655,"stem":656},"Dependency Updates","\u002Fhandbook\u002Fengineering\u002Fdependency-updates","handbook\u002Fengineering\u002Fdependency-updates",{"title":658,"path":659,"stem":660},"Feature Flags in PostHog","\u002Fhandbook\u002Fengineering\u002Ffeature-flags","handbook\u002Fengineering\u002Ffeature-flags",{"title":662,"icon":663,"path":664,"stem":665,"children":666},"Front End","i-lucide-layout-dashboard","\u002Fhandbook\u002Fengineering\u002Ffrontend","handbook\u002Fengineering\u002Ffrontend\u002Findex",[667,668,672,676,680,684],{"title":662,"path":664,"stem":665},{"title":669,"path":670,"stem":671},"Data Attributes","\u002Fhandbook\u002Fengineering\u002Ffrontend\u002Fdata-attributes","handbook\u002Fengineering\u002Ffrontend\u002Fdata-attributes",{"title":673,"path":674,"stem":675},"Front-End Layouts","\u002Fhandbook\u002Fengineering\u002Ffrontend\u002Flayouts","handbook\u002Fengineering\u002Ffrontend\u002Flayouts",{"title":677,"path":678,"stem":679},"Front-End Services","\u002Fhandbook\u002Fengineering\u002Ffrontend\u002Fservices","handbook\u002Fengineering\u002Ffrontend\u002Fservices",{"title":681,"path":682,"stem":683},"Front-End Testing","\u002Fhandbook\u002Fengineering\u002Ffrontend\u002Ftesting","handbook\u002Fengineering\u002Ffrontend\u002Ftesting",{"title":685,"icon":686,"path":687,"stem":688,"children":689},"UI Conventions and Style Guide","i-lucide-palette","\u002Fhandbook\u002Fengineering\u002Ffrontend\u002Fui-conventions","handbook\u002Fengineering\u002Ffrontend\u002Fui-conventions\u002Findex",[690,691],{"title":685,"path":687,"stem":688},{"title":692,"path":693,"stem":694},"Feature Flags","\u002Fhandbook\u002Fengineering\u002Ffrontend\u002Fui-conventions\u002Ffeature-flags","handbook\u002Fengineering\u002Ffrontend\u002Fui-conventions\u002Ffeature-flags",{"title":696,"icon":697,"path":698,"stem":699,"children":700},"Platform Ops","i-lucide-server","\u002Fhandbook\u002Fengineering\u002Fops","handbook\u002Fengineering\u002Fops\u002Findex",[701,702,706,710,711,715,719,723,727,731],{"title":696,"path":698,"stem":699},{"title":703,"path":704,"stem":705},"Certified Nodes","\u002Fhandbook\u002Fengineering\u002Fops\u002Fcertified-nodes","handbook\u002Fengineering\u002Fops\u002Fcertified-nodes",{"title":707,"path":708,"stem":709},"FlowFuse Dedicated","\u002Fhandbook\u002Fengineering\u002Fops\u002Fdedicated","handbook\u002Fengineering\u002Fops\u002Fdedicated",{"title":5,"path":454,"stem":456},{"title":712,"path":713,"stem":714},"Incident Response","\u002Fhandbook\u002Fengineering\u002Fops\u002Fincident-response","handbook\u002Fengineering\u002Fops\u002Fincident-response",{"title":716,"path":717,"stem":718},"Observability","\u002Fhandbook\u002Fengineering\u002Fops\u002Fobservability","handbook\u002Fengineering\u002Fops\u002Fobservability",{"title":720,"path":721,"stem":722},"Production Environment","\u002Fhandbook\u002Fengineering\u002Fops\u002Fproduction","handbook\u002Fengineering\u002Fops\u002Fproduction",{"title":724,"path":725,"stem":726},"Update Stacks on Production","\u002Fhandbook\u002Fengineering\u002Fops\u002Fproduction-stack-update","handbook\u002Fengineering\u002Fops\u002Fproduction-stack-update",{"title":728,"path":729,"stem":730},"Self Hosted Assistant","\u002Fhandbook\u002Fengineering\u002Fops\u002Fself-hosted-assistant","handbook\u002Fengineering\u002Fops\u002Fself-hosted-assistant",{"title":732,"path":733,"stem":734},"Staging Environment","\u002Fhandbook\u002Fengineering\u002Fops\u002Fstaging","handbook\u002Fengineering\u002Fops\u002Fstaging",{"title":736,"path":737,"stem":738},"Packaging Guidelines","\u002Fhandbook\u002Fengineering\u002Fpackaging","handbook\u002Fengineering\u002Fpackaging",{"title":740,"icon":741,"path":742,"stem":743,"children":744},"Product","i-lucide-package","\u002Fhandbook\u002Fengineering\u002Fproduct","handbook\u002Fengineering\u002Fproduct\u002Findex",[745,746,750,754,758,762,766,773,777,780,784,788,792],{"title":740,"path":742,"stem":743},{"title":747,"path":748,"stem":749},"Feature Catalog","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Ffeatures","handbook\u002Fengineering\u002Fproduct\u002Ffeatures",{"title":751,"path":752,"stem":753},"Feedback","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Ffeedback","handbook\u002Fengineering\u002Fproduct\u002Ffeedback",{"title":755,"path":756,"stem":757},"Glossary","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fglossary","handbook\u002Fengineering\u002Fproduct\u002Fglossary",{"title":759,"path":760,"stem":761},"Methodology","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fmethodology","handbook\u002Fengineering\u002Fproduct\u002Fmethodology",{"title":763,"path":764,"stem":765},"Metrics","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fmetrics","handbook\u002Fengineering\u002Fproduct\u002Fmetrics",{"title":767,"path":768,"stem":769,"children":770,"icon":772},"Personas","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fpersonas","handbook\u002Fengineering\u002Fproduct\u002Fpersonas\u002Findex",[771],{"title":767,"path":768,"stem":769},"i-lucide-user-circle",{"title":774,"path":775,"stem":776},"Pricing Principles","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fpricing","handbook\u002Fengineering\u002Fproduct\u002Fpricing",{"title":509,"path":778,"stem":779},"\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fprinciples","handbook\u002Fengineering\u002Fproduct\u002Fprinciples",{"title":781,"path":782,"stem":783},"Product Swimlanes","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fproduct-swimlanes","handbook\u002Fengineering\u002Fproduct\u002Fproduct-swimlanes",{"title":785,"path":786,"stem":787},"Product Growth","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Ftelemetry","handbook\u002Fengineering\u002Fproduct\u002Ftelemetry",{"title":789,"path":790,"stem":791},"Versioning","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fversioning","handbook\u002Fengineering\u002Fproduct\u002Fversioning",{"title":793,"path":794,"stem":795},"Market Segments","\u002Fhandbook\u002Fengineering\u002Fproduct\u002Fverticals","handbook\u002Fengineering\u002Fproduct\u002Fverticals",{"title":797,"path":798,"stem":799},"Project Management","\u002Fhandbook\u002Fengineering\u002Fproject-management","handbook\u002Fengineering\u002Fproject-management",{"title":801,"icon":802,"path":803,"stem":804,"children":805},"Releases","i-lucide-rocket","\u002Fhandbook\u002Fengineering\u002Freleases","handbook\u002Fengineering\u002Freleases\u002Findex",[806,807,811,815,819,823],{"title":801,"path":803,"stem":804},{"title":808,"path":809,"stem":810},"Dashboard 2.0 Releases","\u002Fhandbook\u002Fengineering\u002Freleases\u002Fdashboard-2","handbook\u002Fengineering\u002Freleases\u002Fdashboard-2",{"title":812,"path":813,"stem":814},"Release Process - Digital Ocean","\u002Fhandbook\u002Fengineering\u002Freleases\u002Fdigital-ocean","handbook\u002Fengineering\u002Freleases\u002Fdigital-ocean",{"title":816,"path":817,"stem":818},"Release Process","\u002Fhandbook\u002Fengineering\u002Freleases\u002Fprocess","handbook\u002Fengineering\u002Freleases\u002Fprocess",{"title":820,"path":821,"stem":822},"Release Blogs","\u002Fhandbook\u002Fengineering\u002Freleases\u002Frelease-blogs","handbook\u002Fengineering\u002Freleases\u002Frelease-blogs",{"title":824,"path":825,"stem":826},"Changelog Posts","\u002Fhandbook\u002Fengineering\u002Freleases\u002Fwriting-changelog","handbook\u002Fengineering\u002Freleases\u002Fwriting-changelog",{"title":828,"path":829,"stem":830},"Security Policy","\u002Fhandbook\u002Fengineering\u002Fsecurity","handbook\u002Fengineering\u002Fsecurity",{"title":832,"path":833,"stem":834,"children":835,"icon":845},"Support","\u002Fhandbook\u002Fengineering\u002Fsupport","handbook\u002Fengineering\u002Fsupport\u002Findex",[836,837,841],{"title":832,"path":833,"stem":834},{"title":838,"path":839,"stem":840},"Triage Duty","\u002Fhandbook\u002Fengineering\u002Fsupport\u002Ftriage","handbook\u002Fengineering\u002Fsupport\u002Ftriage",{"title":842,"path":843,"stem":844},"Troubleshooting","\u002Fhandbook\u002Fengineering\u002Fsupport\u002Ftroubleshooting","handbook\u002Fengineering\u002Fsupport\u002Ftroubleshooting","i-lucide-life-buoy",{"title":616,"path":847,"stem":848},"\u002Fhandbook\u002Fengineering\u002Ftools","handbook\u002Fengineering\u002Ftools",{"title":850,"group":851,"icon":852,"order":62,"path":853,"stem":854,"children":855},"Marketing","Marketing department","i-lucide-megaphone","\u002Fhandbook\u002Fmarketing","handbook\u002Fmarketing\u002Findex",[856,857,863,867,882,901,905,909,913,917,921,925,929,933],{"title":850,"path":853,"stem":854},{"title":858,"path":859,"stem":860,"children":861},"Account-Based Marketing","\u002Fhandbook\u002Fmarketing\u002Faccount-based-marketing","handbook\u002Fmarketing\u002Faccount-based-marketing\u002Findex",[862],{"title":858,"path":859,"stem":860},{"title":864,"path":865,"stem":866},"Brand Voice","\u002Fhandbook\u002Fmarketing\u002Fbrand-voice","handbook\u002Fmarketing\u002Fbrand-voice",{"title":868,"icon":869,"path":870,"stem":871,"children":872},"Community","i-lucide-users-2","\u002Fhandbook\u002Fmarketing\u002Fcommunity","handbook\u002Fmarketing\u002Fcommunity\u002Findex",[873,874,878],{"title":868,"path":870,"stem":871},{"title":875,"path":876,"stem":877},"Community Guidelines","\u002Fhandbook\u002Fmarketing\u002Fcommunity\u002Fcommunity-guidelines","handbook\u002Fmarketing\u002Fcommunity\u002Fcommunity-guidelines",{"title":879,"path":880,"stem":881},"Forums And Support","\u002Fhandbook\u002Fmarketing\u002Fcommunity\u002Fforums-and-support","handbook\u002Fmarketing\u002Fcommunity\u002Fforums-and-support",{"title":883,"icon":884,"path":885,"stem":886,"children":887,"order":32},"Content Strategy","i-lucide-file-text","\u002Fhandbook\u002Fmarketing\u002Fcontent-strategy","handbook\u002Fmarketing\u002Fcontent-strategy\u002Findex",[888,889,893,897],{"title":883,"path":885,"stem":886,"order":32},{"title":890,"path":891,"stem":892},"Blog","\u002Fhandbook\u002Fmarketing\u002Fcontent-strategy\u002Fblog","handbook\u002Fmarketing\u002Fcontent-strategy\u002Fblog",{"title":894,"path":895,"stem":896},"Customer Stories","\u002Fhandbook\u002Fmarketing\u002Fcontent-strategy\u002Fcustomer-stories","handbook\u002Fmarketing\u002Fcontent-strategy\u002Fcustomer-stories",{"title":898,"path":899,"stem":900},"Webinars","\u002Fhandbook\u002Fmarketing\u002Fcontent-strategy\u002Fwebinars","handbook\u002Fmarketing\u002Fcontent-strategy\u002Fwebinars",{"title":902,"path":903,"stem":904},"Events","\u002Fhandbook\u002Fmarketing\u002Fevents","handbook\u002Fmarketing\u002Fevents",{"title":906,"path":907,"stem":908},"How we work","\u002Fhandbook\u002Fmarketing\u002Fhow-we-work","handbook\u002Fmarketing\u002Fhow-we-work",{"title":910,"path":911,"stem":912},"Lead Activation","\u002Fhandbook\u002Fmarketing\u002Flead-activation","handbook\u002Fmarketing\u002Flead-activation",{"title":914,"path":915,"stem":916},"Lead Generation","\u002Fhandbook\u002Fmarketing\u002Fleads","handbook\u002Fmarketing\u002Fleads",{"title":918,"path":919,"stem":920},"Company Messaging","\u002Fhandbook\u002Fmarketing\u002Fmessaging","handbook\u002Fmarketing\u002Fmessaging",{"title":922,"path":923,"stem":924},"Marketing Programs","\u002Fhandbook\u002Fmarketing\u002Fprograms","handbook\u002Fmarketing\u002Fprograms",{"title":926,"path":927,"stem":928},"Sales Development Representative (SDR)","\u002Fhandbook\u002Fmarketing\u002Fsdr","handbook\u002Fmarketing\u002Fsdr",{"title":930,"path":931,"stem":932},"Social Media","\u002Fhandbook\u002Fmarketing\u002Fsocial-media","handbook\u002Fmarketing\u002Fsocial-media",{"title":934,"path":935,"stem":936},"Website","\u002Fhandbook\u002Fmarketing\u002Fwebsite","handbook\u002Fmarketing\u002Fwebsite",{"title":938,"group":467,"icon":939,"order":38,"path":940,"stem":941,"children":942},"Operations","i-lucide-settings-2","\u002Fhandbook\u002Foperations","handbook\u002Foperations\u002Findex",[943,944,948,952,956,979,983,987,991,995],{"title":938,"path":940,"stem":941},{"title":945,"path":946,"stem":947},"Accounting","\u002Fhandbook\u002Foperations\u002Faccounting","handbook\u002Foperations\u002Faccounting",{"title":949,"path":950,"stem":951},"Accounts","\u002Fhandbook\u002Foperations\u002Faccounts","handbook\u002Foperations\u002Faccounts",{"title":953,"path":954,"stem":955},"Billing","\u002Fhandbook\u002Foperations\u002Fbilling","handbook\u002Foperations\u002Fbilling",{"title":957,"icon":958,"path":959,"stem":960,"children":961},"CEO Ops","i-lucide-briefcase","\u002Fhandbook\u002Foperations\u002Fceo-ops","handbook\u002Foperations\u002Fceo-ops\u002Findex",[962,963,967,971,975],{"title":957,"path":959,"stem":960},{"title":964,"path":965,"stem":966},"Calendar Management","\u002Fhandbook\u002Foperations\u002Fceo-ops\u002Fcalendar-management","handbook\u002Foperations\u002Fceo-ops\u002Fcalendar-management",{"title":968,"path":969,"stem":970},"Inbox Management","\u002Fhandbook\u002Foperations\u002Fceo-ops\u002Finbox-management","handbook\u002Foperations\u002Fceo-ops\u002Finbox-management",{"title":972,"path":973,"stem":974},"Task Management","\u002Fhandbook\u002Foperations\u002Fceo-ops\u002Ftask-managment","handbook\u002Foperations\u002Fceo-ops\u002Ftask-managment",{"title":976,"path":977,"stem":978},"Travel Booking","\u002Fhandbook\u002Foperations\u002Fceo-ops\u002Ftravel-booking","handbook\u002Foperations\u002Fceo-ops\u002Ftravel-booking",{"title":980,"path":981,"stem":982},"Change Control","\u002Fhandbook\u002Foperations\u002Fchange","handbook\u002Foperations\u002Fchange",{"title":984,"path":985,"stem":986},"Commission Payment","\u002Fhandbook\u002Foperations\u002Fcommission-payment","handbook\u002Foperations\u002Fcommission-payment",{"title":988,"path":989,"stem":990},"Data at FlowFuse","\u002Fhandbook\u002Foperations\u002Fdata","handbook\u002Foperations\u002Fdata",{"title":992,"path":993,"stem":994},"Signatures","\u002Fhandbook\u002Foperations\u002Fsignatures","handbook\u002Foperations\u002Fsignatures",{"title":996,"path":997,"stem":998},"Vendors","\u002Fhandbook\u002Foperations\u002Fvendors","handbook\u002Foperations\u002Fvendors",{"title":1000,"group":1001,"icon":1002,"order":56,"path":1003,"stem":1004,"children":1005},"People Ops","Internal Operations","i-lucide-users","\u002Fhandbook\u002Fpeopleops","handbook\u002Fpeopleops\u002Findex",[1006,1007,1011,1015,1019,1023,1027,1050,1116,1120,1124,1128,1132,1136],{"title":1000,"path":1003,"stem":1004},{"title":1008,"path":1009,"stem":1010},"Coaching Plans","\u002Fhandbook\u002Fpeopleops\u002Fcoaching-plans","handbook\u002Fpeopleops\u002Fcoaching-plans",{"title":1012,"path":1013,"stem":1014},"Code of Conduct","\u002Fhandbook\u002Fpeopleops\u002Fcode-of-conduct","handbook\u002Fpeopleops\u002Fcode-of-conduct",{"title":1016,"path":1017,"stem":1018},"Compensation","\u002Fhandbook\u002Fpeopleops\u002Fcompensation","handbook\u002Fpeopleops\u002Fcompensation",{"title":1020,"path":1021,"stem":1022},"Compliance & Regulatory","\u002Fhandbook\u002Fpeopleops\u002Fcompliance","handbook\u002Fpeopleops\u002Fcompliance",{"title":1024,"path":1025,"stem":1026},"Expenses","\u002Fhandbook\u002Fpeopleops\u002Fexpenses","handbook\u002Fpeopleops\u002Fexpenses",{"title":1028,"icon":1029,"path":1030,"stem":1031,"children":1032},"Hiring","i-lucide-user-plus","\u002Fhandbook\u002Fpeopleops\u002Fhiring","handbook\u002Fpeopleops\u002Fhiring\u002Findex",[1033,1034,1038,1042,1046],{"title":1028,"path":1030,"stem":1031},{"title":1035,"path":1036,"stem":1037},"GitHub Navigation","\u002Fhandbook\u002Fpeopleops\u002Fhiring\u002Fgithub-navigation","handbook\u002Fpeopleops\u002Fhiring\u002Fgithub-navigation",{"title":1039,"path":1040,"stem":1041},"Working with Recruiters","\u002Fhandbook\u002Fpeopleops\u002Fhiring\u002Frecruiters","handbook\u002Fpeopleops\u002Fhiring\u002Frecruiters",{"title":1043,"path":1044,"stem":1045},"Screening Call","\u002Fhandbook\u002Fpeopleops\u002Fhiring\u002Fscreening-call","handbook\u002Fpeopleops\u002Fhiring\u002Fscreening-call",{"title":1047,"path":1048,"stem":1049},"STAR Questions","\u002Fhandbook\u002Fpeopleops\u002Fhiring\u002Fstar-questions","handbook\u002Fpeopleops\u002Fhiring\u002Fstar-questions",{"title":1051,"icon":1052,"path":1053,"stem":1054,"children":1055},"Job Descriptions","i-lucide-file-badge","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Findex",[1056,1057,1061,1065,1069,1073,1077,1081,1085,1089,1093,1097,1101,1105,1108,1112],{"title":1051,"path":1053,"stem":1054},{"title":1058,"path":1059,"stem":1060},"Account Executive","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Faccount-executive","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Faccount-executive",{"title":1062,"path":1063,"stem":1064},"CEO","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fceo","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fceo",{"title":1066,"path":1067,"stem":1068},"Chief of Staff","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fchief-of-staff","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fchief-of-staff",{"title":1070,"path":1071,"stem":1072},"CTO","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fcto","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fcto",{"title":1074,"path":1075,"stem":1076},"Engineering Levels","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fengineering-levels","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fengineering-levels",{"title":1078,"path":1079,"stem":1080},"Engineering Manager","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fengineering-manager","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fengineering-manager",{"title":1082,"path":1083,"stem":1084},"Fullstack Engineer","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Ffullstack-engineer","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Ffullstack-engineer",{"title":1086,"path":1087,"stem":1088},"Fullstack Engineer (AI-Focused)","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Ffullstack-engineer-ai","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Ffullstack-engineer-ai",{"title":1090,"path":1091,"stem":1092},"Head of Marketing","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fhead-of-marketing","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fhead-of-marketing",{"title":1094,"path":1095,"stem":1096},"Lead Product Manager","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Flead-product-manager","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Flead-product-manager",{"title":1098,"path":1099,"stem":1100},"Product Manager","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fproduct-manager","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fproduct-manager",{"title":1102,"path":1103,"stem":1104},"Product Marketer","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fproduct-marketer","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fproduct-marketer",{"title":926,"path":1106,"stem":1107},"\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fsales-development-representative","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fsales-development-representative",{"title":1109,"path":1110,"stem":1111},"Solutions Engineer","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fsolutions-engineer","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fsolutions-engineer",{"title":1113,"path":1114,"stem":1115},"VP of Sales","\u002Fhandbook\u002Fpeopleops\u002Fjob-descriptions\u002Fvp-sales","handbook\u002Fpeopleops\u002Fjob-descriptions\u002Fvp-sales",{"title":1117,"path":1118,"stem":1119},"Holiday & Leave","\u002Fhandbook\u002Fpeopleops\u002Fleave","handbook\u002Fpeopleops\u002Fleave",{"title":1121,"path":1122,"stem":1123},"PeopleOps Policies","\u002Fhandbook\u002Fpeopleops\u002Forganization","handbook\u002Fpeopleops\u002Forganization",{"title":1125,"path":1126,"stem":1127},"Performance review","\u002Fhandbook\u002Fpeopleops\u002Fperformance-review","handbook\u002Fpeopleops\u002Fperformance-review",{"title":1129,"path":1130,"stem":1131},"Summit","\u002Fhandbook\u002Fpeopleops\u002Fsummit","handbook\u002Fpeopleops\u002Fsummit",{"title":1133,"path":1134,"stem":1135},"Travel","\u002Fhandbook\u002Fpeopleops\u002Ftravel","handbook\u002Fpeopleops\u002Ftravel",{"title":1137,"path":1138,"stem":1139},"U.S. Compliance Policies","\u002Fhandbook\u002Fpeopleops\u002Fus-compliance","handbook\u002Fpeopleops\u002Fus-compliance",{"title":1141,"path":1142,"stem":1143,"group":460,"order":1144},"Recent Updates","\u002Fhandbook\u002Frecent-changes","handbook\u002Frecent-changes",0,{"title":1146,"group":1146,"icon":1147,"order":68,"path":1148,"stem":1149,"children":1150},"Commercial Organization","i-lucide-trending-up","\u002Fhandbook\u002Fsales","handbook\u002Fsales\u002Findex",[1151,1152,1159,1163,1167,1171,1177,1181,1185,1190,1194,1198,1202,1225,1229,1233,1255,1261,1265,1272,1276,1280,1284,1288,1292,1296,1300],{"title":1146,"path":1148,"stem":1149},{"title":1153,"path":1154,"stem":1155,"children":1156,"order":355,"icon":1158},"Sales Compensation Plan","\u002Fhandbook\u002Fsales\u002Fcommission-plan","handbook\u002Fsales\u002Fcommission-plan\u002Findex",[1157],{"title":1153,"path":1154,"stem":1155},"i-lucide-dollar-sign",{"title":1160,"path":1161,"stem":1162,"order":86},"Customer Journey Alignment","\u002Fhandbook\u002Fsales\u002Fcustomer-journey","handbook\u002Fsales\u002Fcustomer-journey",{"title":1164,"path":1165,"stem":1166,"order":44},"Customer Success","\u002Fhandbook\u002Fsales\u002Fcustomer-success","handbook\u002Fsales\u002Fcustomer-success",{"title":1168,"path":1169,"stem":1170,"order":338},"Self Hosted Dashboard v2 Multi User","\u002Fhandbook\u002Fsales\u002Fdashboard-v2","handbook\u002Fsales\u002Fdashboard-v2",{"title":1172,"path":1173,"stem":1174,"order":1175,"icon":1176},"Demo Apps","\u002Fhandbook\u002Fsales\u002Fdemo-apps","handbook\u002Fsales\u002Fdemo-apps",13.7,"i-lucide-layout-grid",{"title":1178,"path":1179,"stem":1180,"order":332},"Edge Connectivity Sales Process","\u002Fhandbook\u002Fsales\u002Fedge-connect-process","handbook\u002Fsales\u002Fedge-connect-process",{"title":1182,"path":1183,"stem":1184,"order":110},"Engagements & Pricing","\u002Fhandbook\u002Fsales\u002Fengagements","handbook\u002Fsales\u002Fengagements",{"title":1186,"path":1187,"stem":1188,"order":1189,"icon":697},"FlowFuse Trial Environment","\u002Fhandbook\u002Fsales\u002Fflowfuse-trial-environment","handbook\u002Fsales\u002Fflowfuse-trial-environment",13.6,{"title":1191,"path":1192,"stem":1193,"order":116},"Forecast Review","\u002Fhandbook\u002Fsales\u002Fforecast-review","handbook\u002Fsales\u002Fforecast-review",{"title":1195,"path":1196,"stem":1197,"order":122},"HubSpot","\u002Fhandbook\u002Fsales\u002Fhubspot","handbook\u002Fsales\u002Fhubspot",{"title":1199,"path":1200,"stem":1201,"order":350},"Legal","\u002Fhandbook\u002Fsales\u002Flegal","handbook\u002Fsales\u002Flegal",{"title":1203,"order":104,"icon":1204,"path":1205,"stem":1206,"children":1207},"Sales Meetings","i-lucide-calendar","\u002Fhandbook\u002Fsales\u002Fmeetings","handbook\u002Fsales\u002Fmeetings\u002Findex",[1208,1209,1213,1217,1221],{"title":1203,"path":1205,"stem":1206},{"title":1210,"path":1211,"stem":1212,"order":38},"Demo","\u002Fhandbook\u002Fsales\u002Fmeetings\u002Fdemo","handbook\u002Fsales\u002Fmeetings\u002Fdemo",{"title":1214,"path":1215,"stem":1216,"order":32},"Discovery Meeting","\u002Fhandbook\u002Fsales\u002Fmeetings\u002Fdiscovery","handbook\u002Fsales\u002Fmeetings\u002Fdiscovery",{"title":1218,"path":1219,"stem":1220,"order":50},"Proof of Value","\u002Fhandbook\u002Fsales\u002Fmeetings\u002Fpov","handbook\u002Fsales\u002Fmeetings\u002Fpov",{"title":1222,"path":1223,"stem":1224,"order":44},"Solution","\u002Fhandbook\u002Fsales\u002Fmeetings\u002Fsolution","handbook\u002Fsales\u002Fmeetings\u002Fsolution",{"title":1226,"path":1227,"stem":1228,"order":92},"Onboarding & Development","\u002Fhandbook\u002Fsales\u002Fonboarding","handbook\u002Fsales\u002Fonboarding",{"title":1230,"path":1231,"stem":1232,"order":62},"Commercial Team Operating Principles","\u002Fhandbook\u002Fsales\u002Foperating-principles","handbook\u002Fsales\u002Foperating-principles",{"title":1234,"order":56,"icon":1235,"path":1236,"stem":1237,"children":1238},"Partnerships","i-lucide-handshake","\u002Fhandbook\u002Fsales\u002Fpartnerships","handbook\u002Fsales\u002Fpartnerships\u002Findex",[1239,1240,1244],{"title":1234,"path":1236,"stem":1237},{"title":1241,"path":1242,"stem":1243,"order":38},"Channel Partners","\u002Fhandbook\u002Fsales\u002Fpartnerships\u002Fchannel-partners","handbook\u002Fsales\u002Fpartnerships\u002Fchannel-partners",{"title":1245,"path":1246,"stem":1247,"children":1248,"order":32,"icon":1254},"Hardware Partners","\u002Fhandbook\u002Fsales\u002Fpartnerships\u002Fhardware-partners","handbook\u002Fsales\u002Fpartnerships\u002Fhardware-partners\u002Findex",[1249,1250],{"title":1245,"path":1246,"stem":1247},{"title":1251,"path":1252,"stem":1253,"order":32},"Hardware Partner Workbook","\u002Fhandbook\u002Fsales\u002Fpartnerships\u002Fhardware-partners\u002Fworkbook","handbook\u002Fsales\u002Fpartnerships\u002Fhardware-partners\u002Fworkbook","i-lucide-cpu",{"title":1256,"path":1257,"stem":1258,"order":1259,"icon":1260},"PoV Workbook","\u002Fhandbook\u002Fsales\u002Fpov-workbook","handbook\u002Fsales\u002Fpov-workbook",13.5,"i-lucide-clipboard-list",{"title":1262,"path":1263,"stem":1264,"order":326},"Pricing Decks","\u002Fhandbook\u002Fsales\u002Fpricing-decks","handbook\u002Fsales\u002Fpricing-decks",{"title":1266,"path":1267,"stem":1268,"children":1269,"order":98,"icon":1271},"Processes","\u002Fhandbook\u002Fsales\u002Fprocesses","handbook\u002Fsales\u002Fprocesses\u002Findex",[1270],{"title":1266,"path":1267,"stem":1268},"i-lucide-workflow",{"title":1273,"path":1274,"stem":1275,"order":50},"Professional Services","\u002Fhandbook\u002Fsales\u002Fprofessional-services","handbook\u002Fsales\u002Fprofessional-services",{"title":1277,"path":1278,"stem":1279,"order":68},"Sales Regions","\u002Fhandbook\u002Fsales\u002Fregions","handbook\u002Fsales\u002Fregions",{"title":1281,"path":1282,"stem":1283,"order":128},"Sales Deck","\u002Fhandbook\u002Fsales\u002Fsales-deck","handbook\u002Fsales\u002Fsales-deck",{"title":1285,"path":1286,"stem":1287,"order":32},"Sales","\u002Fhandbook\u002Fsales\u002Fsales-team","handbook\u002Fsales\u002Fsales-team",{"title":1289,"path":1290,"stem":1291,"order":38},"Solution Engineering","\u002Fhandbook\u002Fsales\u002Fsolution-engineering","handbook\u002Fsales\u002Fsolution-engineering",{"title":1293,"path":1294,"stem":1295,"order":365},"Subscription Agreement 1.5","\u002Fhandbook\u002Fsales\u002Fsubscription-agreement-1.5","handbook\u002Fsales\u002Fsubscription-agreement-1.5",{"title":1297,"path":1298,"stem":1299,"order":74},"Systems & Tools","\u002Fhandbook\u002Fsales\u002Ftools","handbook\u002Fsales\u002Ftools",{"title":1301,"path":1302,"stem":1303,"order":80},"Working Norms","\u002Fhandbook\u002Fsales\u002Fworking-norms","handbook\u002Fsales\u002Fworking-norms",1788365178332]