[{"data":1,"prerenderedAt":244},["ShallowReactive",2],{"application-guide-nav":3,"application-guide-flowfuse-software-apps":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":48,"blocks":103,"blurb":50,"extension":240,"guide":5,"meta":241,"navOrder":49,"slug":47,"stem":242,"__hash__":243},"applicationGuide\u002Fapplication-guide\u002Fflowfuse\u002F05-software-apps.yml",[104,108],{"type":105,"kicker":106,"body":107},"prose","Software apps — start here","The three shapes a FlowFuse app takes when it runs on the platform. Pick by what it needs: a headless job (Packaged App), a user-facing app driven by data (Data-Driven App), or a reusable piece other apps embed (Shared Building Block).",{"type":109,"panels":110},"tabs",[111,158,197],{"label":112,"kicker":113,"kickerNote":114,"diagram":115,"summary":142,"useWhen":143,"how":144,"lists":145},"Packaged App","Headless · no UI","Headless job on a Hosted or Remote Instance, no screen.",{"lanes":116,"note":141},[117,124,126,133,135],{"label":118,"tone":119,"nodes":120},"Event stream","broker",[121],{"title":122,"sub":123,"tone":119},"Team Broker","MQTT",{"link":125},"subscribes",{"label":127,"tone":128,"nodes":129},"Platform","it",[130],{"title":131,"sub":132,"tone":128},"Hosted Instance","headless · no UI",{"link":134},"writes",{"label":136,"tone":128,"nodes":137},"Records",[138],{"title":139,"sub":140,"tone":128},"FlowFuse Tables","writes rows","No dashboard","A headless, self-contained job that runs the same everywhere — an MQTT-to-DB connector, a pipeline, a scheduled task. No UI.","A self-contained job with no screen and no per-site settings: connectors, pipelines, scheduled work.","Built and promoted through a pipeline; runs headless on a Hosted (or Remote) Instance. Everything is baked into the snapshot; only fixed env vars vary at deploy.",[146,153],{"heading":147,"items":148},"Major components",[149,150,151,152],"Team Broker (MQTT) — the event stream the app subscribes to","Hosted Instance — FlowFuse-managed Node-RED running the headless app","Packaged App (no UI) — the logic itself, no dashboard","FlowFuse Tables — where the app writes its rows",{"heading":154,"items":155},"Where config & data live",[156,157],"Config — baked into the snapshot; only fixed env vars at deploy.","Data — reads the Team Broker, writes FlowFuse Tables.",{"label":159,"kicker":160,"kickerNote":161,"diagram":162,"summary":184,"useWhen":185,"how":186,"lists":187},"Data-Driven App","User-facing · backed by data","User-facing app on a Hosted Instance, backed by data.",{"lanes":163},[164,172,174,178,180],{"label":165,"tone":166,"nodes":167},"People","neutral",[168],{"title":169,"sub":170,"tone":171},"Users","browser","muted",{"link":173},"opens",{"label":127,"tone":128,"nodes":175},[176],{"title":131,"sub":177,"tone":128},"data-driven app",{"link":179},"reads · writes",{"label":136,"tone":128,"nodes":181},[182],{"title":139,"sub":183,"tone":128},"records","A user-facing app on a Hosted Instance — a time clock, an asset manager — whose content is driven by data. It needs a backend and a data source to be complete.","Apps whose displayed settings or records change between deployments and grow over time: time clocks, registries, asset managers.","Same pipeline delivery to a Hosted Instance; the runtime loads its data from FlowFuse Tables or the Team Broker, served by a backend behind the screen.",[188,193],{"heading":147,"items":189},[190,191,192],"Users (browser) — the people using the app's dashboard","Hosted Instance — runs the data-driven app and serves its UI","FlowFuse Tables — the records the app reads and writes",{"heading":154,"items":194},[195,196],"Config — app settings and records live in FlowFuse Tables (or context), editable without redeploying.","Data — FlowFuse Tables for records, the Team Broker for live values.",{"label":198,"kicker":199,"kickerNote":200,"diagram":201,"summary":227,"useWhen":228,"how":229,"lists":230},"Shared Building Block","Embedded by other apps","Reusable UI or logic many Hosted Instances embed.",{"lanes":202},[203,208,210,216,218],{"label":204,"tone":128,"nodes":205},"Authored once",[206],{"title":198,"sub":207,"tone":128},"reusable subflows",{"link":209},"publish",{"label":211,"tone":128,"nodes":212},"Catalogue",[213],{"title":214,"sub":215,"tone":128},"Team Library","catalogue",{"link":217},"embedded in",{"label":219,"tone":166,"nodes":220},"Apps that embed it",[221,223,225],{"title":131,"sub":222},"App A · block",{"title":131,"sub":224},"App B · block",{"title":131,"sub":226},"App C · block","A reusable piece of UI or logic that other apps embed — not an app itself. Think a common dashboard surface many Hosted Instances present through.","Many apps should share one piece of UI or logic and upgrade it in lockstep.","Published as subflows to the Team Library with an example flow; updating the subflow updates every Hosted Instance that adopts the new version.",[231,236],{"heading":147,"items":232},[233,234,235],"Shared Building Block (reusable subflows) — the block authored once","Team Library — the catalogue it's published to","Hosted Instances — the apps that embed it and upgrade together",{"heading":154,"items":237},[238,239],"Config — via the subflow's instance properties \u002F env where it's embedded.","Data — none of its own; it embeds into the host app's data.","yml",{},"application-guide\u002Fflowfuse\u002F05-software-apps","8BrxTvxEcrhljcLC5mfXNKs-pnDpd4gzWx03Tuw99Eg",1786132520467]