[{"data":1,"prerenderedAt":240},["ShallowReactive",2],{"application-guide-nav":3,"application-guide-node-red-overview":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":7,"blocks":103,"blurb":13,"extension":236,"guide":12,"meta":237,"navOrder":8,"slug":6,"stem":238,"__hash__":239},"applicationGuide\u002Fapplication-guide\u002Fnode-red\u002F01-overview.yml",[104,108,124,148,181,200,223],{"type":105,"kicker":106,"body":107},"prose","Node-RED — start here","Node-RED is a visual programming platform for integration and logic: you build by wiring pre-built nodes into flows. The connectors and the syntax are handled for you, so your effort goes into what the system should do — the logic — not the plumbing to connect things or the boilerplate of a language.",{"type":109,"heading":110,"items":111},"steps","The method, in four moves",[112,115,118,121],{"title":113,"body":114},"List the beginnings","Every way work enters the piece: an http in, an MQTT in, an inject. Each beginning is its own path.",{"title":116,"body":117},"Name the shared services","The pools and calls many paths depend on: a database pool, a model call, the broker. Call them, results return.",{"title":119,"body":120},"Pick the single sink","The one sink each family of paths converges on. It responds, it routes nothing.",{"title":122,"body":123},"Draw the shape","Paths across, services called in the middle, one sink each. Now you can read the flow at a glance.",{"type":125,"heading":32,"columns":18,"items":126},"linkCards",[127,133,138,143],{"title":128,"body":129,"link":130},"Beginnings","Every way work enters a piece, each as its own path.",{"label":131,"to":132},"Flow shape →","\u002Fapplication-guide\u002Fnode-red\u002Fflow-shape\u002F#beginnings",{"title":134,"body":135,"link":136},"Shared services (link call)","Shared pools and calls, invoked once, results return.",{"label":131,"to":137},"\u002Fapplication-guide\u002Fnode-red\u002Fflow-shape\u002F#shared-services-link-call",{"title":139,"body":140,"link":141},"Subflow vs link call","When a link call is enough, and when a subflow earns its keep.",{"label":131,"to":142},"\u002Fapplication-guide\u002Fnode-red\u002Fflow-shape\u002F#subflow-vs-link-call",{"title":144,"body":145,"link":146},"Single sink","The one sink each family of paths converges on — it only sends, never routes.",{"label":131,"to":147},"\u002Fapplication-guide\u002Fnode-red\u002Fflow-shape\u002F#single-sink",{"type":125,"heading":43,"columns":27,"items":149},[150,156,161,166,171,176],{"title":151,"body":152,"link":153},"Find the seams","Find the three or four components hiding in a blob.",{"label":154,"to":155},"Design patterns →","\u002Fapplication-guide\u002Fnode-red\u002Fdesign-patterns\u002F#find-the-seams",{"title":157,"body":158,"link":159},"Levels of reuse","Pick the lowest rung of extraction that solves it.",{"label":154,"to":160},"\u002Fapplication-guide\u002Fnode-red\u002Fdesign-patterns\u002F#levels-of-reuse",{"title":162,"body":163,"link":164},"Decouple frontend & backend","Treat the dashboard-to-logic boundary like a client and a server.",{"label":154,"to":165},"\u002Fapplication-guide\u002Fnode-red\u002Fdesign-patterns\u002F#decouple-frontend-backend",{"title":167,"body":168,"link":169},"Use the context store","Hold the object in context instead of threading it through wires.",{"label":154,"to":170},"\u002Fapplication-guide\u002Fnode-red\u002Fdesign-patterns\u002F#use-the-context-store",{"title":172,"body":173,"link":174},"Config: env vars vs persisted context","Env vars for deploy-time, persisted context for user edits.",{"label":154,"to":175},"\u002Fapplication-guide\u002Fnode-red\u002Fdesign-patterns\u002F#config-env-vars-vs-persisted-context",{"title":177,"body":178,"link":179},"Generating flows (Admin API)","Emit flow JSON and deploy it through the Admin API.",{"label":154,"to":180},"\u002Fapplication-guide\u002Fnode-red\u002Fdesign-patterns\u002F#generating-flows-admin-api",{"type":125,"heading":182,"columns":27,"items":183},"Handling data (PLC)",[184,190,195],{"title":185,"body":186,"link":187},"Classify the data","Sort data by what it is for before tuning anything.",{"label":188,"to":189},"Handling data →","\u002Fapplication-guide\u002Fnode-red\u002Fhandling-data\u002F#classify-the-data",{"title":191,"body":192,"link":193},"How PLCs respond","Every poll spends a slice of the controller scan budget.",{"label":188,"to":194},"\u002Fapplication-guide\u002Fnode-red\u002Fhandling-data\u002F#how-plcs-respond",{"title":196,"body":197,"link":198},"Treat data reliably","Split telemetry from control, each on its own path.",{"label":188,"to":199},"\u002Fapplication-guide\u002Fnode-red\u002Fhandling-data\u002F#treat-data-reliably",{"type":125,"heading":65,"columns":38,"items":201},[202,208,213,218],{"title":203,"body":204,"link":205},"Error handling","A Catch node per tab turns a thrown error into a route you control.",{"label":206,"to":207},"Operating flows →","\u002Fapplication-guide\u002Fnode-red\u002Foperating-flows\u002F#error-handling",{"title":209,"body":210,"link":211},"Backpressure & memory","Pace the fast side to the slow side before the heap blows.",{"label":206,"to":212},"\u002Fapplication-guide\u002Fnode-red\u002Foperating-flows\u002F#backpressure-memory",{"title":214,"body":215,"link":216},"Deploy modes","Pick the smallest restart that ships the change.",{"label":206,"to":217},"\u002Fapplication-guide\u002Fnode-red\u002Foperating-flows\u002F#deploy-modes",{"title":219,"body":220,"link":221},"Debugging","Tap the wire, surface node state, keep the flow observable.",{"label":206,"to":222},"\u002Fapplication-guide\u002Fnode-red\u002Foperating-flows\u002F#debugging",{"type":125,"heading":76,"columns":18,"items":224},[225,231],{"title":226,"body":227,"link":228},"Napkin: multi-surface app","One app reached three ways over shared services.",{"label":229,"to":230},"Worked example →","\u002Fapplication-guide\u002Fnode-red\u002Fworked-example\u002F#napkin-multi-surface-app",{"title":232,"body":233,"link":234},"Good vs bad","The same requirement built with and without seams.",{"label":229,"to":235},"\u002Fapplication-guide\u002Fnode-red\u002Fworked-example\u002F#good-vs-bad","yml",{},"application-guide\u002Fnode-red\u002F01-overview","L1DDFBqB60yVyDjzotAplQsmRNSZRl2Rjqn4BFV0YcQ",1786132520467]