# Group/Team development workflow

**URL:** <https://discourse.nodered.org/t/group-team-development-workflow/7069>\
**Category:** General\
**Created:** [21 January 2019 02:12 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069 "2019-01-21T02:12:27Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![Naes0](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/naes0/32/5311_2.png) [@Naes0](https://discourse.nodered.org/u/Naes0)\
**Post date:** [21 January 2019 02:12 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/1 "2019-01-21T02:12:27Z")

</div>

Hi guys,

I'm looking into using Node-RED in a team development environment and was curious if anyone had a workflow for this already? I'm currently using version control for most of the basic stuff and I have flowfilepretty, project options enabled.

Is there any good way to share subflows between a team? I'm aware that you can import and export subflows, but it can be tedious for every person on a team to constantly get a new subflow file and import it every time someone adds/fixes something on it.

Any group development experiences/advice/workflows would be great.  
Thank you.

---

<div class="post-metadata">

**Author:** ![RoganFPS](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/roganfps/32/3208_2.png) [@RoganFPS](https://discourse.nodered.org/u/RoganFPS)\
**Post date:** [21 January 2019 06:41 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/2 "2019-01-21T06:41:28Z")

</div>

Node red isn't great for multi user teams tbh. You are probably going to need to have a production environment and then each dev having their own environment. Deployments will likely be copied and pasted flows. You could share snippets/flows in a repo though to make it easier to share to each dev.

---

<div class="post-metadata">

**Author:** ![Naes0](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/naes0/32/5311_2.png) [@Naes0](https://discourse.nodered.org/u/Naes0)\
**Post date:** [21 January 2019 09:02 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/3 "2019-01-21T09:02:04Z")

</div>

yeah I figured as much. I'll probably be doing something along the lines of that. Hopefully I can figure out more ways to make it work.  
Thanks for your response.

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [21 January 2019 09:42 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/4 "2019-01-21T09:42:03Z")

</div>

> [@RoganFPS](#):
>
> You are probably going to need to have a production environment and then each dev having their own environment.

That isn't entirely unreasonable. Why would you want people modifying your production environment directly?

> [@RoganFPS](#):
>
> Deployments will likely be copied and pasted flows.

That really isn't a good idea. If you are using projects with version control, then deployments can be automated from git and you should _not_ copy and paste into production.

Probably the main piece we're missing is an easy way to sharing flows between developers - including subflows. This is why an overhaul of the library is on the roadmap.

Any feedback you have about what sort of workflows you'd like to see in this area is invaluable to us. We need that feedback to make sure we focus on the right things.

Nick

---

<div class="post-metadata">

**Author:** ![nlecaude](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/nlecaude/32/25_2.png) [@nlecaude](https://discourse.nodered.org/u/nlecaude)\
**Post date:** [21 January 2019 14:57 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/5 "2019-01-21T14:57:20Z")

</div>

We've been using Node-RED in a multi-user setup for a while now.  
In our latest projects, we've been (sadly) avoiding subflows because they are hard to maintain between different flows, eager to see the revamp ! Same would go for function nodes.  
The way we work now is to have a set of common code as a module that we require in global context.  
We've also been avoiding projects because we rely heavily on settings.js to do various pre-launch tasks. The project usually has a main settings.js file that controls which flow to load and modifies settings/env vars dynamically according to which host runs the project. I've been using the projects feature home for my small flows but can't seem to make it scale well to larger projects yet.

---

<div class="post-metadata">

**Author:** ![Naes0](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/naes0/32/5311_2.png) [@Naes0](https://discourse.nodered.org/u/Naes0)\
**Post date:** [23 January 2019 07:58 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/6 "2019-01-23T07:58:31Z")

</div>

Sorry for the late reply.

You're right, a way to share sub flows across multiple projects would be great, so that multiple projects can reference the same instance of a subflow. Then if someone wants to fix a bug on a subflow, they can easily update it and everyone's projects that are dependent on that subflow will use the updated instance.

git automated deployments also make sense as you never want to be editing your production environment.

An easy way to unit test subflows and flows would be great but I would need to think about this more for a better solution.

You could then probably set up a simple development pipeline using teamcity and some deployment software to automate building, unit testing and deployment.

---

<div class="post-metadata">

**Author:** ![zenofmud](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/zenofmud/32/316_2.png) [@zenofmud](https://discourse.nodered.org/u/zenofmud)\
**Post date:** [23 January 2019 10:38 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/7 "2019-01-23T10:38:21Z")

</div>

> [@Naes0](#):
>
> Then if someone wants to fix a bug on a subflow, they can easily update it and everyone's projects that are dependent on that subflow will use the updated instance.

On the flip side if someone introduces a bug in he subflow everyone would now be effected by my it...

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [23 January 2019 10:54 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/8 "2019-01-23T10:54:07Z")

</div>

> [@Naes0](#):
>
> An easy way to unit test subflows and flows would be great but I would need to think about this more for a better solution.

We have started to kick around ideas on how unit tests can be integrated into a flow. Very early days, but hopefully more on this later this year.

> [@Naes0](#):
>
> You could then probably set up a simple development pipeline using teamcity and some deployment software to automate building, unit testing and deployment.

Yup - for example [Creating a Node-RED deployment pipeline to IBM Cloud | by Nick O'Leary | Medium](https://medium.com/@knolleary/creating-a-node-red-deployment-pipeline-to-ibm-cloud-9a8e9d5113de)

---

<div class="post-metadata">

**Author:** ![shrickus](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/shrickus/32/517_2.png) [@shrickus](https://discourse.nodered.org/u/shrickus)\
**Post date:** [23 January 2019 15:42 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/9 "2019-01-23T15:42:10Z")

</div>

> [@knolleary](#):
>
> Probably the main piece we're missing is an easy way to sharing flows between developers - including subflows

I'd like to see an intermediate solution that stores the one big `flows_xxx.json` file as a directory of files, one for each editor "tab"/flow (and one for each subflow). Since our team has decided to restrict our work to individual tabs, this would perhaps allow some automation around sharing and backing up our individual parts of the flow. Coupled with a git repo, this would also allow us to more easily know when changes happened to certain flows (which are pretty closely related to our customer delivered features).

> [@knolleary](#):
>
> This is why an overhaul of the library is on the roadmap.

I can imagine that having a directory tree structure to hold the flows would overlap quite a bit with the library implementation. We are very interested in how we can better manage the library file structure (renaming dirs/files, moving parts around, deleting unused files, etc).

---

<div class="post-metadata">

**Author:** ![RoganFPS](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/roganfps/32/3208_2.png) [@RoganFPS](https://discourse.nodered.org/u/RoganFPS)\
**Post date:** [28 January 2019 08:51 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/10 "2019-01-28T08:51:02Z")

</div>

> [@knolleary](#):
>
> That isn't entirely unreasonable. Why would you want people modifying your production environment directly?

I meant in that we should take the approach that node red is more like vscode/an editor than it is a repository in itself. Sure you can all work on the same server but merging all the time could potentially come with pitfalls!

> [@knolleary](#):
>
> That really isn't a good idea. If you are using projects with version control, then deployments can be automated from git and you should _not_ copy and paste into production.

Agreed, I've not really had much chance to build a pipeline for nr to be honest, a bit of short comment by myself tbh.

---

<div class="post-metadata">

**Author:** ![hipitihop](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/hipitihop/32/5959_2.png) [@hipitihop](https://discourse.nodered.org/u/hipitihop)\
**Post date:** [13 February 2019 05:37 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/11 "2019-02-13T05:37:25Z")

</div>

Although early days for us with NR in a multi-developer environment, at first blush the idea idea of being able to manage separate flow tabs as separate files, including sub-flows in one or more directories also appeals. So + 1

---

<div class="post-metadata">

**Author:** ![iOnline247](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ionline247/32/15634_2.png) [@iOnline247](https://discourse.nodered.org/u/iOnline247)\
**Post date:** [1 January 2020 23:08 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/12 "2020-01-01T23:08:53Z")

</div>

Checking in here on if this made it into v1 and if there's some updated guidance. I'm just now starting out, so I'm trying to ensure a smooth dev experience with the team.

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [1 January 2020 23:15 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/13 "2020-01-01T23:15:30Z")

</div>

> [@iOnline247](#):
>
> Checking in here on if this made it into v1

Which bit in particular? The library didn't get the full overhaul we wanted in 1.0 - although some of the ground work was put in place.

---

<div class="post-metadata">

**Author:** ![iOnline247](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ionline247/32/15634_2.png) [@iOnline247](https://discourse.nodered.org/u/iOnline247)\
**Post date:** [1 January 2020 23:20 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/14 "2020-01-01T23:20:36Z")

</div>

I'm looking into the ease of sharing flows/subflows between devs, so once something is pushed to PROD, everyone can level up. Right now, I've been able to take the `flows.json` and move it around, but not too sure if there's a preferred method.

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [1 January 2020 23:22 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/15 "2020-01-01T23:22:19Z")

</div>

> [@iOnline247](#):
>
> Right now, I've been able to take the `flows.json` and move it around, but not too sure if there's a preferred method.

The Projects feature that lets you 'move it around' via a git repository so you get version control and the ability to build whatever deployment pipeline you want on the back of that.

---

<div class="post-metadata">

**Author:** ![iOnline247](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ionline247/32/15634_2.png) [@iOnline247](https://discourse.nodered.org/u/iOnline247)\
**Post date:** [1 January 2020 23:24 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/16 "2020-01-01T23:24:18Z")

</div>

Just to clarify, is that the script argument of [listed here](https://nodered.org/docs/getting-started/local#command-line-usage)?

`node-red projectName`

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [1 January 2020 23:24 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/17 "2020-01-01T23:24:52Z")

</div>

No, its the Projects feature - [https://nodered.org/docs/user-guide/projects/](https://nodered.org/docs/user-guide/projects/)

---

<div class="post-metadata">

**Author:** ![eastling](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/eastling/32/39127_2.png) [@eastling](https://discourse.nodered.org/u/eastling)\
**Post date:** [17 August 2021 12:28 UTC](https://discourse.nodered.org/t/group-team-development-workflow/7069/18 "2021-08-17T12:28:41Z")

</div>

Hi guys,  
Found this topic intresting. Especially intrested in created "versioned" subflows and possibly also flow tabs that can be reused in other projects.  
Thankful for any good tips or more information on upcoming features.

Regards,  
Martin
