[{"data":1,"prerenderedAt":167},["ShallowReactive",2],{"agmd-node-red-patterns":3,"application-guide-nav":65},{"id":4,"title":5,"blurb":6,"body":7,"description":17,"extension":55,"guide":56,"meta":57,"navOrder":58,"navTitle":5,"navigation":59,"parent":60,"path":61,"seo":62,"slug":13,"stem":63,"__hash__":64},"applicationGuideDoc\u002Fapplication-guide\u002Fnode-red\u002Fpatterns.md","Patterns","The moves that turn an architecture into a clean, reusable flow — find the seams and reuse well, then handle data on the right paths.",{"type":8,"value":9,"toc":51},"minimark",[10,14,18],[11,12,5],"h1",{"id":13},"patterns",[15,16,17],"p",{},"Once you have the foundations, these are the moves that turn an architecture into a clean, reusable flow. Work through them in order, or jump to the one you need.",[19,20,21,33,42],"ul",{},[22,23,24,32],"li",{},[25,26,27],"strong",{},[28,29,31],"a",{"href":30},"\u002Fapplication-guide\u002Fnode-red\u002Fdesign-patterns\u002F","Design patterns"," — find the seams, then reuse each piece at the lightest level that solves it: link in\u002Fout, link call, subflow, or packaged node.",[22,34,35,41],{},[25,36,37],{},[28,38,40],{"href":39},"\u002Fapplication-guide\u002Fnode-red\u002Fhandling-data\u002F","Handling data"," — classify data by what it's for, treat telemetry and control on their own paths, pace fast inputs, and hold state and config in context.",[22,43,44,50],{},[25,45,46],{},[28,47,49],{"href":48},"\u002Fapplication-guide\u002Fnode-red\u002Fgood-form\u002F","Good form"," — the habits that keep a flow readable and out of spaghetti: call shared things, decouple UI from logic, catch errors where you can see them.",{"title":52,"searchDepth":53,"depth":53,"links":54},"",4,[],"md","node-red",{},3,true,null,"\u002Fapplication-guide\u002Fnode-red\u002Fpatterns",{"title":5,"description":17},"application-guide\u002Fnode-red\u002Fpatterns","uG8R2O-jv4sErbnaEWPWXNg3EHizShMfd2J2i-GHVuA",[66,73,76,82,85,90,92,98,101,107,110,114,119,124,130,136,142,147,152,157,161],{"guide":67,"slug":68,"title":69,"navOrder":70,"parent":60,"blurb":71,"path":72},"flowfuse","overview","Overview",1,"The map of the FlowFuse guide — apps, architectures, and a worked example.","\u002Fapplication-guide\u002Fflowfuse\u002Foverview\u002F",{"guide":56,"slug":68,"title":69,"navOrder":70,"parent":60,"blurb":74,"path":75},"The map of the Node-RED guide — the pattern families that turn an app into a clean flow.","\u002Fapplication-guide\u002Fnode-red\u002Foverview\u002F",{"guide":67,"slug":77,"title":78,"navOrder":79,"parent":60,"blurb":80,"path":81},"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":56,"slug":77,"title":78,"navOrder":79,"parent":60,"blurb":83,"path":84},"The handful of concepts you need to build with Node-RED, and how they fit together.","\u002Fapplication-guide\u002Fnode-red\u002Ffoundations\u002F",{"guide":67,"slug":86,"title":87,"navOrder":58,"parent":60,"blurb":88,"path":89},"app-delivery-methods","App delivery methods","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.","\u002Fapplication-guide\u002Fflowfuse\u002Fapp-delivery-methods\u002F",{"guide":56,"slug":13,"title":5,"navOrder":58,"parent":60,"blurb":6,"path":91},"\u002Fapplication-guide\u002Fnode-red\u002Fpatterns\u002F",{"guide":67,"slug":93,"title":94,"navOrder":95,"parent":86,"blurb":96,"path":97},"hardware-apps","Hardware apps",3.1,"The three shapes a FlowFuse app takes when it runs on a device. Pick by how much varies per site: nothing (Packaged App), a few settings (Configurable App), or you assemble it yourself (Edge Building Block).","\u002Fapplication-guide\u002Fflowfuse\u002Fhardware-apps\u002F",{"guide":56,"slug":99,"title":31,"navOrder":95,"parent":13,"blurb":100,"path":30},"design-patterns","The structural choices you select for a flow: find the seams it breaks into, then reuse each piece at the lightest level that solves it — link in\u002Fout, link call, subflow, or packaged node.",{"guide":67,"slug":102,"title":103,"navOrder":104,"parent":86,"blurb":105,"path":106},"software-apps","Software apps",3.2,"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).","\u002Fapplication-guide\u002Fflowfuse\u002Fsoftware-apps\u002F",{"guide":56,"slug":108,"title":40,"navOrder":104,"parent":13,"blurb":109,"path":39},"handling-data","Classify each signal by shape, purpose and direction, then pick the methods it needs — separate the paths, pace the flow, hold state in context, and manage config. The methods you select to move a flow's data.",{"guide":56,"slug":111,"title":49,"navOrder":112,"parent":13,"blurb":113,"path":48},"good-form",3.3,"A clean flow isn't luck — it's a handful of habits. Wire for reading, lay it out on a grid, decouple UI from logic, catch errors where you can see them, and keep data on a stable contract. Follow these and a flow stays readable, reusable, and out of spaghetti.",{"guide":67,"slug":115,"title":116,"navOrder":53,"parent":60,"blurb":117,"path":118},"data-plane","Data plane","Before you pick where things run, decide how data is handled. Two stores come built into every FlowFuse server install — the Team Broker and relational Tables — exposed to every instance with nothing extra to stand up. Everything else you bring your own: run it (a time-series DB, an existing database, a model) and expose it to the fleet over Project Link, no inbound ports. This is the data plane the architectures on the next pages all sit on.","\u002Fapplication-guide\u002Fflowfuse\u002Fdata-plane\u002F",{"guide":56,"slug":120,"title":121,"navOrder":53,"parent":60,"blurb":122,"path":123},"worked-examples","Worked examples","Turn an app concept into a Node-RED flow — or a few — leaning on the design patterns and data handling. The method, then the OEE apps end to end.","\u002Fapplication-guide\u002Fnode-red\u002Fworked-examples\u002F",{"guide":56,"slug":125,"title":126,"navOrder":127,"parent":120,"blurb":128,"path":129},"oee-edge-aggregator","OEE - Edge Aggregator",4.1,"The edge app from the OEE use case as a Node-RED flow — a straight-line flow packaged as a subflow and configured per line (its PLC tags, via a config UI and a get-config node), with the data treated as a stream and its counts held in context.","\u002Fapplication-guide\u002Fnode-red\u002Foee-edge-aggregator\u002F",{"guide":56,"slug":131,"title":132,"navOrder":133,"parent":120,"blurb":134,"path":135},"oee-central-dashboard","OEE - Central Dashboard",4.2,"The cloud app from the OEE use case as a Node-RED flow — one link out fanning to two link ins on separate tabs (dashboard and batched history), so the live and history paths stay separate and easy to read.","\u002Fapplication-guide\u002Fnode-red\u002Foee-central-dashboard\u002F",{"guide":67,"slug":137,"title":138,"navOrder":139,"parent":60,"blurb":140,"path":141},"architectures","Architectures",5,"Every FlowFuse deployment is the same building blocks arranged for where it runs — pick the world you're designing for.","\u002Fapplication-guide\u002Fflowfuse\u002Farchitectures\u002F",{"guide":67,"slug":143,"title":144,"navOrder":145,"parent":137,"blurb":60,"path":146},"it-architectures","IT architectures",5.1,"\u002Fapplication-guide\u002Fflowfuse\u002Fit-architectures\u002F",{"guide":67,"slug":148,"title":149,"navOrder":150,"parent":137,"blurb":60,"path":151},"ot-architectures","OT architectures",5.2,"\u002Fapplication-guide\u002Fflowfuse\u002Fot-architectures\u002F",{"guide":67,"slug":153,"title":154,"navOrder":155,"parent":137,"blurb":60,"path":156},"iiot-architectures","IIoT architectures",5.3,"\u002Fapplication-guide\u002Fflowfuse\u002Fiiot-architectures\u002F",{"guide":67,"slug":120,"title":121,"navOrder":158,"parent":60,"blurb":159,"path":160},6,"Start from a use case, break it into apps, and draw the architecture that ties them together — the same method a FlowFuse Proof of Value runs.","\u002Fapplication-guide\u002Fflowfuse\u002Fworked-examples\u002F",{"guide":67,"slug":162,"title":163,"navOrder":164,"parent":120,"blurb":165,"path":166},"worked-example","OEE, end to end",6.1,"One use case — OEE across three lines — broken into two apps and two shared services, then drawn out end to end.","\u002Fapplication-guide\u002Fflowfuse\u002Fworked-example\u002F",1787843653139]