[{"data":1,"prerenderedAt":275},["ShallowReactive",2],{"application-guide-nav":3,"agmd-node-red-worked-examples":118},[4,12,16,22,25,31,36,42,47,53,58,64,70,75,81,87,93,98,103,108,112],{"guide":5,"slug":6,"title":7,"navOrder":8,"parent":9,"blurb":10,"path":11},"flowfuse","overview","Overview",1,null,"The map of the FlowFuse guide — apps, architectures, and a worked example.","\u002Fapplication-guide\u002Fflowfuse\u002Foverview\u002F",{"guide":13,"slug":6,"title":7,"navOrder":8,"parent":9,"blurb":14,"path":15},"node-red","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":5,"slug":17,"title":18,"navOrder":19,"parent":9,"blurb":20,"path":21},"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":13,"slug":17,"title":18,"navOrder":19,"parent":9,"blurb":23,"path":24},"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":26,"title":27,"navOrder":28,"parent":9,"blurb":29,"path":30},"app-delivery-methods","App delivery methods",3,"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":13,"slug":32,"title":33,"navOrder":28,"parent":9,"blurb":34,"path":35},"patterns","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.","\u002Fapplication-guide\u002Fnode-red\u002Fpatterns\u002F",{"guide":5,"slug":37,"title":38,"navOrder":39,"parent":26,"blurb":40,"path":41},"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":13,"slug":43,"title":44,"navOrder":39,"parent":32,"blurb":45,"path":46},"design-patterns","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.","\u002Fapplication-guide\u002Fnode-red\u002Fdesign-patterns\u002F",{"guide":5,"slug":48,"title":49,"navOrder":50,"parent":26,"blurb":51,"path":52},"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":13,"slug":54,"title":55,"navOrder":50,"parent":32,"blurb":56,"path":57},"handling-data","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.","\u002Fapplication-guide\u002Fnode-red\u002Fhandling-data\u002F",{"guide":13,"slug":59,"title":60,"navOrder":61,"parent":32,"blurb":62,"path":63},"good-form","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.","\u002Fapplication-guide\u002Fnode-red\u002Fgood-form\u002F",{"guide":5,"slug":65,"title":66,"navOrder":67,"parent":9,"blurb":68,"path":69},"data-plane","Data plane",4,"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":13,"slug":71,"title":72,"navOrder":67,"parent":9,"blurb":73,"path":74},"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":13,"slug":76,"title":77,"navOrder":78,"parent":71,"blurb":79,"path":80},"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":13,"slug":82,"title":83,"navOrder":84,"parent":71,"blurb":85,"path":86},"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":5,"slug":88,"title":89,"navOrder":90,"parent":9,"blurb":91,"path":92},"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":5,"slug":94,"title":95,"navOrder":96,"parent":88,"blurb":9,"path":97},"it-architectures","IT architectures",5.1,"\u002Fapplication-guide\u002Fflowfuse\u002Fit-architectures\u002F",{"guide":5,"slug":99,"title":100,"navOrder":101,"parent":88,"blurb":9,"path":102},"ot-architectures","OT architectures",5.2,"\u002Fapplication-guide\u002Fflowfuse\u002Fot-architectures\u002F",{"guide":5,"slug":104,"title":105,"navOrder":106,"parent":88,"blurb":9,"path":107},"iiot-architectures","IIoT architectures",5.3,"\u002Fapplication-guide\u002Fflowfuse\u002Fiiot-architectures\u002F",{"guide":5,"slug":71,"title":72,"navOrder":109,"parent":9,"blurb":110,"path":111},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":5,"slug":113,"title":114,"navOrder":115,"parent":71,"blurb":116,"path":117},"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",{"id":119,"title":72,"blurb":73,"body":120,"description":267,"extension":268,"guide":13,"meta":269,"navOrder":67,"navTitle":72,"navigation":270,"parent":9,"path":271,"seo":272,"slug":71,"stem":273,"__hash__":274},"applicationGuideDoc\u002Fapplication-guide\u002Fnode-red\u002Fworked-examples.md",{"type":121,"value":122,"toc":262},"minimark",[123,126,148,159,166,171,174,219,226,230,237,249,259],[124,125,72],"h1",{"id":71},[127,128,129,130,134,135,139,140,143,144,147],"p",{},"An ",[131,132,133],"strong",{},"app"," is a job to do — with a delivery method and a pattern, decided in the ",[136,137,138],"a",{"href":111},"FlowFuse guide",". The ",[131,141,142],{},"solution"," is a Node-RED flow — and an app isn't always a single one. A bigger app is ",[131,145,146],{},"one or more flows working together",".",[127,149,150,151,154,155,158],{},"Each worked example takes a real app and turns it into a flow — showing the ",[136,152,153],{"href":46},"design pattern(s)"," and ",[136,156,157],{"href":57},"data-handling method(s)"," it selects, and why.",[127,160,161,162,165],{},"The app can be ",[131,163,164],{},"built entirely by FlowFuse, built together with your team, or built by you"," from these examples. The build is the same either way.",[167,168,170],"h2",{"id":169},"from-app-to-flow","From app to flow",[127,172,173],{},"Turn the app into a flow the same way each time — two selections, then keep to good form:",[175,176,177,187,193,204],"ol",{},[178,179,180,183,184,186],"li",{},[131,181,182],{},"Start from the app"," — its one job, and (from the ",[136,185,138],{"href":30},") how it's delivered and what shape it takes.",[178,188,189,192],{},[131,190,191],{},"Break it into flows"," — most apps are a single flow; a bigger one is a few, each doing a clear part.",[178,194,195,200,201],{},[131,196,197,198],{},"Select the ",[136,199,153],{"href":46}," — find the seams, then pick a reuse level for each piece: link in\u002Fout, link call, subflow, or packaged node. A flow often uses more than one — ",[131,202,203],{},"or none: a simple, one-path flow may need no pattern at all, and that's fine.",[178,205,206,210,211,214,215,218],{},[131,207,197,208],{},[136,209,157],{"href":57}," — this part is never skippable. Even a simple flow with no pattern still has to ",[131,212,213],{},"classify"," what it's getting (event or stream?) and decide whether it needs ",[131,216,217],{},"batching \u002F rate-limit",", separate paths, context, or config.",[127,220,221,222,225],{},"Then keep it in ",[136,223,224],{"href":63},"good form"," — the general habits (call shared things, one path per beginning, a single sink, catch errors) that keep any flow readable.",[167,227,229],{"id":228},"the-examples","The examples",[127,231,232,233,236],{},"The FlowFuse ",[136,234,235],{"href":117},"OEE worked example"," breaks that use case into two apps. Here's how each one looks as a Node-RED flow, shaped by the patterns it uses.",[238,239,241],"callout",{"icon":240},"i-lucide-arrow-right",[127,242,243,248],{},[131,244,245],{},[136,246,247],{"href":80},"OEE - Edge Aggregator →"," — the edge piece, packaged as a reusable subflow: poll → read → compute → publish, one per line.",[238,250,251],{"icon":240},[127,252,253,258],{},[131,254,255],{},[136,256,257],{"href":86},"OEE - Central Dashboard →"," — the cloud app: subscribe → compute → link out, fanning to a link in for the dashboard and a second link in for batched history, with the UI decoupled from the logic.",[127,260,261],{},"More examples will land here — each one takes an app and turns it into a flow, move by move.",{"title":263,"searchDepth":67,"depth":67,"links":264},"",[265,266],{"id":169,"depth":19,"text":170},{"id":228,"depth":19,"text":229},"An app is a job to do — with a delivery method and a pattern, decided in the FlowFuse guide. The solution is a Node-RED flow — and an app isn't always a single one. A bigger app is one or more flows working together.","md",{},true,"\u002Fapplication-guide\u002Fnode-red\u002Fworked-examples",{"title":72,"description":267},"application-guide\u002Fnode-red\u002Fworked-examples","7C2_fVqKKKQXnuOzsn8MAean3DHiXF4m3PbiG6XKI_I",1787070954208]