[{"data":1,"prerenderedAt":224},["ShallowReactive",2],{"application-guide-nav":3,"application-guide-flowfuse-app-delivery-methods":101},[4,11,15,21,24,30,35,41,46,52,57,63,68,74,79,85,91,97],{"guide":5,"slug":6,"title":7,"navOrder":8,"blurb":9,"path":10},"flowfuse","overview","Overview",1,"Turn an app idea into FlowFuse pieces you can name and say in one sentence.","\u002Fapplication-guide\u002Fflowfuse\u002Foverview\u002F",{"guide":12,"slug":6,"title":7,"navOrder":8,"blurb":13,"path":14},"node-red","Turn an architecture sentence into a clean flow shape you can read at a glance.","\u002Fapplication-guide\u002Fnode-red\u002Foverview\u002F",{"guide":5,"slug":16,"title":17,"navOrder":18,"blurb":19,"path":20},"foundations","Foundations",2,"The foundation to build on: what FlowFuse is, its core pieces, and how code is shared across teams.","\u002Fapplication-guide\u002Fflowfuse\u002Ffoundations\u002F",{"guide":12,"slug":16,"title":17,"navOrder":18,"blurb":22,"path":23},"The handful of concepts you need to build with Node-RED, and how they fit together.","\u002Fapplication-guide\u002Fnode-red\u002Ffoundations\u002F",{"guide":5,"slug":25,"title":26,"navOrder":27,"blurb":28,"path":29},"app-delivery-methods","App delivery methods",3,"Two different units of code, delivered two ways: ship the whole app, or publish one reusable piece.","\u002Fapplication-guide\u002Fflowfuse\u002Fapp-delivery-methods\u002F",{"guide":12,"slug":31,"title":32,"navOrder":27,"blurb":33,"path":34},"flow-shape","Flow shape","Turn an architecture sentence into a flow you can read at a glance.","\u002Fapplication-guide\u002Fnode-red\u002Fflow-shape\u002F",{"guide":5,"slug":36,"title":37,"navOrder":38,"blurb":39,"path":40},"hardware-apps","Hardware apps",4,"The three shapes a FlowFuse app takes when it runs on a device.","\u002Fapplication-guide\u002Fflowfuse\u002Fhardware-apps\u002F",{"guide":12,"slug":42,"title":43,"navOrder":38,"blurb":44,"path":45},"design-patterns","Design patterns","The moves that turn a flow into something you can reuse, test and hand off.","\u002Fapplication-guide\u002Fnode-red\u002Fdesign-patterns\u002F",{"guide":5,"slug":47,"title":48,"navOrder":49,"blurb":50,"path":51},"software-apps","Software apps",5,"The three shapes a FlowFuse app takes when it runs on the platform.","\u002Fapplication-guide\u002Fflowfuse\u002Fsoftware-apps\u002F",{"guide":12,"slug":53,"title":54,"navOrder":49,"blurb":55,"path":56},"handling-data","Handling data","Sort data by what it is for before you tune anything.","\u002Fapplication-guide\u002Fnode-red\u002Fhandling-data\u002F",{"guide":5,"slug":58,"title":59,"navOrder":60,"blurb":61,"path":62},"data-plane","Data plane",6,"Before you pick where things run, decide how data is handled.","\u002Fapplication-guide\u002Fflowfuse\u002Fdata-plane\u002F",{"guide":12,"slug":64,"title":65,"navOrder":60,"blurb":66,"path":67},"operating-flows","Operating flows","Four operational habits that keep a flow running when the real world pushes back.","\u002Fapplication-guide\u002Fnode-red\u002Foperating-flows\u002F",{"guide":5,"slug":69,"title":70,"navOrder":71,"blurb":72,"path":73},"architectures","Architectures",7,"The same building blocks, arranged for where they run.","\u002Fapplication-guide\u002Fflowfuse\u002Farchitectures\u002F",{"guide":12,"slug":75,"title":76,"navOrder":71,"blurb":77,"path":78},"worked-example","Worked example","The shape rules and patterns applied end to end.","\u002Fapplication-guide\u002Fnode-red\u002Fworked-example\u002F",{"guide":5,"slug":80,"title":81,"navOrder":82,"blurb":83,"path":84},"it-architectures","IT architectures",8,"Hosting the platform and serving the wider organisation.","\u002Fapplication-guide\u002Fflowfuse\u002Fit-architectures\u002F",{"guide":5,"slug":86,"title":87,"navOrder":88,"blurb":89,"path":90},"ot-architectures","OT architectures",9,"How FlowFuse deploys in operational-technology environments, near the equipment.","\u002Fapplication-guide\u002Fflowfuse\u002Fot-architectures\u002F",{"guide":5,"slug":92,"title":93,"navOrder":94,"blurb":95,"path":96},"iiot-architectures","IIoT architectures",10,"Distributed edge nodes, each doing one small job, feeding one central system.","\u002Fapplication-guide\u002Fflowfuse\u002Fiiot-architectures\u002F",{"guide":5,"slug":75,"title":76,"navOrder":98,"blurb":99,"path":100},11,"OEE, end to end — two packages, two connections.","\u002Fapplication-guide\u002Fflowfuse\u002Fworked-example\u002F",{"id":102,"title":26,"blocks":103,"blurb":28,"extension":220,"guide":5,"meta":221,"navOrder":27,"slug":25,"stem":222,"__hash__":223},"applicationGuide\u002Fapplication-guide\u002Fflowfuse\u002F03-app-delivery-methods.yml",[104,108],{"type":105,"kicker":106,"body":107},"prose","App delivery methods — start here","Two different units of code, delivered two ways. Ship the whole app — a complete, versioned project promoted through environments — or publish one reusable piece — a package the whole team installs and upgrades in one place. Pick by what you're shipping: the app, or a part of it.",{"type":109,"panels":110},"tabs",[111,163],{"label":112,"kicker":113,"kickerNote":114,"diagram":115,"summary":143,"useWhen":144,"how":145,"lists":146,"footnote":159},"Whole app","Snapshots & pipelines","Promote a complete, versioned project through dev → staging → prod to every place that runs it.",{"lanes":116,"legend":137},[117,124,126],{"label":118,"tone":119,"nodes":120},"Dev · one build","it",[121],{"title":122,"sub":123,"tone":119},"Dev instance","build & test once",{"link":125},"snapshot · pipeline",{"label":127,"tone":128,"nodes":129},"Fleet · one instance per place, each pointed at its own data","ot",[130,133,135],{"title":131,"sub":132,"tone":128},"Remote Instance","Site A · env A",{"title":131,"sub":134,"tone":128},"Site B · env B",{"title":131,"sub":136,"tone":128},"Site C · env C",[138,140],{"label":139,"tone":119},"Managed",{"label":141,"tone":142},"Snapshot \u002F pipeline","neutral","Take the whole app — every flow, setting and dependency — as a versioned snapshot, then promote that one controlled build through pipeline stages to every place that should run it.","You're shipping a complete application and every site should run the same, controlled version.","A pipeline promotes a snapshot dev → staging → production; each target is parameterised by its own env vars, so one controlled build serves every site.",[147,154],{"heading":148,"items":149},"Major components",[150,151,152,153],"Snapshot — the whole app, frozen as one versioned build","Pipeline — promotes that snapshot through dev → staging → prod","Dev instance — where you build and test the project","Remote \u002F Hosted Instances — the fleet each snapshot rolls out to",{"heading":155,"items":156},"Where config & data live",[157,158],"Config — each target is parameterised by its own env vars.","Rollout — Device Groups + pipeline promotion: one controlled build, many places.",{"text":160,"link":161},"Dev and prod on separate servers — dev in IT or the cloud, prod in OT or air-gapped? A GitHub bridge carries the same versioned code across the boundary. That's an architecture decision.",{"label":162,"to":73},"See Architectures →",{"label":164,"kicker":165,"kickerNote":166,"diagram":167,"summary":206,"useWhen":207,"how":208,"lists":209},"Pieces","Subflow export","Publish one piece as a package the team installs, like a shared library.",{"lanes":168,"legend":202},[169,175,177,182,184,194,196],{"label":170,"tone":119,"nodes":171},"Team · one versioned library, version-tracked",[172],{"title":173,"sub":174,"tone":119},"Subflow","reusable block",{"link":176},"export \u002F publish",{"label":178,"tone":119,"nodes":179},"Team Library",[180],{"title":178,"sub":181,"tone":119},"installable node",{"link":183},"install",{"label":185,"tone":142,"nodes":186},"Apps that install the piece",[187,190,192],{"title":188,"sub":189},"Instance","App A · v1.2",{"title":188,"sub":191},"App B · v1.2",{"title":188,"sub":193},"App C · v1.1",{"link":195},"tracked in",{"label":197,"tone":142,"nodes":198},"Bill of Materials",[199],{"title":197,"sub":200,"tone":201},"which version each app runs","muted",[203,204],{"label":183,"tone":119},{"label":205,"tone":142},"version-tracked","Package a single piece of a flow — a block of logic or UI — as a reusable subflow, and publish it to the Team Library as an installable node other apps pull in, instead of copying code between projects.","A part of an app should be reused across many apps and upgraded in one place — a shared library, not a whole application.","Export the subflow as importable JSON, or publish it to the Team Library as an installable package with an example flow. Apps install it like a library dependency, and the Bill of Materials tracks every version in use.",[210,216],{"heading":148,"items":211},[212,213,214,215],"Subflow — the one reusable piece you package","Team Library — the catalogue you publish the package to","Instances — the apps that install and run the piece","Bill of Materials — tracks which version each app runs",{"heading":155,"items":217},[218,219],"Config — the subflow's instance properties \u002F env where it's installed.","Distribution — publish once to the Team Library; apps install and upgrade from it, like a library.","yml",{},"application-guide\u002Fflowfuse\u002F03-app-delivery-methods","3LrQ32L41FdSdgcGr8IofM_AMWeLtAmjgdcXFRjDz_A",1786134120511]