Giter Site home page Giter Site logo

flowfuse / flowfuse Goto Github PK

View Code? Open in Web Editor NEW
227.0 10.0 58.0 35.16 MB

Build bespoke, flexible, and resilient manufacturing low-code applications with FlowFuse and Node-RED

Home Page: https://flowfuse.com

License: Other

JavaScript 73.72% CSS 0.14% Vue 24.68% HTML 0.03% SCSS 1.40% TypeScript 0.02% Dockerfile 0.02%
low-code node-red flow-based-programming low-code-development low-code-development-platform no-code visual-programming

flowfuse's Introduction

FlowFuse helps Node-RED developers deliver applications in a more reliable, collaborative and secure manner. Node-RED’s intuitive, low-code development environment is great for connecting together hardware devices, APIs and online services. FlowFuse adds to Node-RED collaborative development, management of remote deployments, support for DevOps deliver pipelines, and the ability to host Node-RED applications on FlowFuse Cloud. FlowFuse is the devops platform for Node-RED application development and delivery.

Key Features

  • FlowFuse adds team collaboration to Node-RED, allowing multiple developers to work together on a single instance.
  • Many organizations deploy Node-RED instances to remote servers or edge devices. FlowFuse automates this process by creating snapshots on Node-RED instances that can be deployed to multiple remote targets.
  • FlowFuse simplifies the software development lifecycle of Node-RED applications. You can now set up DevOps delivery pipelines to support development, test and production environments for Node-RED application delivery.
  • FlowFuse is available from FlowFuse Cloud, a managed cloud service, or a self-hosted solution.
  • FlowFuse offers professional technical support for FlowFuse and Node-RED.

Links

flowfuse's People

Contributors

allanoricil avatar arshergon avatar biancode avatar cstns avatar dependabot[bot] avatar elenaviter avatar fakorededamilola avatar gdziuba avatar hardillb avatar haroldpetersinskipp avatar hyamanieu avatar iskerrett avatar jayanth-parthsarathy avatar joepavitt avatar jozefik avatar knolleary avatar marianraphael avatar mikermcneil avatar pezmc avatar ppawlowski avatar robmarcer avatar sammachin avatar steve-mcl avatar steveorevo avatar sumitshinde-84 avatar yndira-e avatar zackwasli avatar zjvandeweg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flowfuse's Issues

Allow writing of documentation for users and administrators

The current documentation is generated through jsdoc and oriented at developers. However, as a user or administrator I'd like to be able to read how certain actions should be performed.

Requirements:

  • Allow users and developers alike to easily update the documentation
  • Have documentation and code in the same repository to update in lock-step

Nice to have:

  • Rich formatting options (Markdown?)

Add Personal Access Token Support

  • Add database model for Personal Access Tokens (PATs)
  • Define REST API interface to allow user to generate/delete tokens
  • Add auth middleware to handle PAT in place of session cookie
  • Create UI view to list user's tokens
  • Create UI view to create a new token

User Stories

  1. scope:enterprise size:M - 3 story
  2. scope:enterprise size:M - 3 story
  3. size:M - 3 story

Get proper license workflow in place

We currently have a very limited license mechanism in place. It needs a bit more work for MVP.

Current state:

  1. A development-only pair of license signing keys are stored in the repository. These can be used to generate valid licenses - but are not what we'll use long term.
  2. The license component checks the database to see if a license has been applied as part of the startup wizard.
  3. If the license is present, it is verified and the terms it contains are stored
  4. The Admin view in the UI will display the current license details but does not allow it to be modified

Required changes:

  • Generate the real license key files. Store private key in 1Password vault. Store public key in this repo
  • Remove placeholder key files from repository
  • Generate a new development-only license using the real key files
  • #128 - Add Admin API end point to update license (PUT /api/v1/admin/license)
  • #128 - Allow Admin UI view to change the license
  • Include license details (as needed by UI) in GET /api/v1/settings response
  • Add license checks on API actions that create Users/Teams/Projects
  • Add UI prompts where an action is restricted by license

Some outstanding design decisions that should be considered but could be put-off post-MVP

  • Current model only allows for a single license. We may want to have them in their own DB table so we can have a history of previous licenses available.
  • The current model also means if a user gets a new license, there must be overlap between the 'valid from' date of new license and 'expires at' of the old - so they can apply the new license without having to worry too much about timing. Whereas a DB table of licenses could allow for 'automatic' roll-over onto the whichever is the active license.
  • Need to consider license expiry and what happens if a platform finds itself exceeding the current license (or missing license)
  • Should we require all users to have a license of some type? Even in the completely free tier - a license we provide that reflects the free tier entitlement. When we get to adding usage telemetry, that would allow us to relate usage back to a license. Hard to retrofit. Downside is that could inhibit experimentation and long-tail adoption.

Story: Stop a node-red instance

Description

As a: User

I want to: Stop a node-red instance

So that: I can halt the application without having to delete it

Acceptance Criteria

  • UI to request project stop
  • API to request project stop
  • Container implementation to stop project

Allow Project starting to be seperated from Project creation

Description

As a: Team Admin

I want to: be notified that a Project has been created before it has been started.

So That: I can get on with other tasks while the Project is starting

This allows for project to start in the background:

  • if it will take a long time e.g. if having to pull containers from the registry.
  • A project may be valid up resources it depends on may be offline.

Make this repo public

The intention has always been for the FlowForge platform to have an open core - with the core functionality available under a proper OSS license and some parts under a proprietary license.

The pure OSS code will be sufficient to run the basic FlowForge platform.

The proprietary code will be used to implement the licensable features of the platform. This code will still be 'source available' and accept contributions, but will not be under an OSS license that permits redistribution or commercial use without a valid license provided by FlowForge Inc.

This repository is currently private whilst we get things in place - giving us some space without the world watching. But that is only a temporary state. The goal is to make this repo public and to be developing in the open as soon as we can.

What do we need to do before making this repo public?

  • Add license information
    We are going to follow the process used by GitLab. The code has already been laid out to match - with the ee directory to contain the proprietary components. There's still more engineering design to be done around how that will work in practice, but that is unrelated to how the license defines what code is made available under what license
  • Setup github issue templates
    I have discovered the hard way that GitHub issue templates cannot be used in Private repos. I have the templates ready to go.
  • Add CODE_OF_CONDUCT.md - this should be done in the flowforge/.github repo as well
  • Add SECURITY.md
  • #181
  • #182
  • #77
  • #69
  • #78
  • #79
  • #80
  • #81

Story: Create a node-red instance

Description

As a: User

I want to: Create a node-red instance

So that: I can start building my application

Acceptance Criteria

  • UI to create new instance
  • API for UI to call
  • Container implementation to back API

Story: register a new user

Description

As a: New FlowForge User

I want to: Register with the platform

So that: I can login and start using it.

Note this is different from #26 as that concerns setting up the first admin user. This story covers getting the next user registered.

Acceptance Criteria

  • A user is able to 'sign up' via the login screen
  • They are registered with the platform and able to login
  • A new team will be created for the user

Make user docs available in FlowForge UI

The main user documentation will be maintained in the core FlowForge repository as markdown under the docs directory. The intention is to pull that markdown and generate content for the website.

We should also make it accessible in the platform UI.

  • Create Help container pages
  • Add Help option to user menu
  • Serve doc content from a well-defined URL. This is not part of the formal api (/api/v1/...).

Story: Mark a/many/all passwords as expired

Description

As a: Administrator

I want to: Mark a/many/all passwords as expired

So that: I can force users to change their password next time they login

Acceptance Criteria

  • ...

Story: Delete a node-red instance

Description

As a: User

I want to: Delete a node-red instance

So that: I can remove all trace of the instance

Acceptance Criteria

  • UI to delete instance
  • API to delete instance
  • Container implementation to delete instance

Email configuration workflow

The email system requires some configuration to be provided before running the forge app.

If email isn't enabled, the UI does properly restrict actions that require email (such as inviting external users).

But there are some gaps:

  • #134
  • add to this list

Other items to resolve:

  • Should email be configurable via admin UI screens, or is it a purely static configuration (ie env vars/yaml/config)
  • #139
  • #138

Story: Create a new team

Description

As a: User

I want to: Create a new team

So that: I can create a new team to collaborate with other users within

Acceptance Criteria

  • ...

Story: create first user

Description

As a: FlowForge User

I want to: Create the first user for the system

So that: I can login and start using it.

Acceptance Criteria

  • From a clean start, the user is able to create the first user account on the system.
  • This user will be an Admin user
  • A new team will be created for the user
  • This can be achieved by CLI setup tools as an initial implementation. If done that way, a separate story will be needed to cover a first-run setup sequence in the UI.

Story: Delete the team

Description

As a: Team Owner

I want to: Delete the team

So that: The team and all its resources are removed

Acceptance Criteria

  • ...

Document what statistics are shared and how

When starting a new FlowForge install, one of the steps is to choose to opt-in to sharing data back to FlowForge Inc.

For an administrator it's unclear what data is obtained and how/when this is done. Documenting this would aid in transparency to the end-user and help them decide what is shared and why.

Add test framework

We need a proper testing framework in place.

We already have mocha, with the npm run test task configured to run all *_spec.js files found under either test/** (which doesn't exist yet) or ee/** (which does exist).

That's good enough to get started writing tests.

I'm keen to follow the convention used in the core node-red repo - each source file has a corresponding _spec.js file under the appriopriate test directory.

That will be suitable for 'unit' type testing, but we will also need bigger, system-wide/integration tests. It may be better to have separate unit, integration directories under the test directory.

Story: Change my avatar

Description

As a: User

I want to: Change my avatar

So that: I can customise my appearance

Acceptance Criteria

  • ...

Story: Change my default team

Description

As a: User

I want to: Change my default team

So that: I can chose which team I am shown when I log in

Acceptance Criteria

  • ...

Add logging framework

Fastify already uses pino under the covers and I don't currently see any reason why not to use that.

It supports a pluggable transport layer to get the logs to a destination of choice.

Its log records are JSON formatted, but there is a pretty printing option that allows for more human-readable logs.

As it is used by fastify, every http request gets logged in great detail. My slight concern is the logs are too verbose to surface end-user log messages. But maybe that's more a filtering issue.

Story: Create a new user

Description

As a: Adminstrator

I want to: Create a new user

So that: I can create new users on the system on their behalf

Acceptance Criteria

  • ...

Story: Edit my settings

Description

As a: User

I want to: Edit my settings

So that: I can change my display name and other user settings

Acceptance Criteria

  • ...

Avatars not shown if you change the BASE_URL

The current BASE_URL is included in the avatar field in the database.

This should probably have a database model getter method to prepend the current value so it is not always localhost:3000

Story: Edit a users settings

Description

As a: Administrator

I want to: Edit a users settings

So that: I can manage the users on the system

Acceptance Criteria

  • ...

Allow seperate internal/external URL hosts

When running on K8s it would be useful to route storage/logging and project/uuid/settings endpoints over the internal overlay network rather than via the public FlowForge Application hostname.

E.g. Avatars still loaded from http(s)://forge.example.com

storage API loaded from http://forge.default (where default is the K8s namespace the application is running in)

Story: Generate a personal-access-token

Description

As a: User

I want to: Generate a personal-access-token

So that: I can access the forge API without a sign-on challenge

Acceptance Criteria

  • ...

Story: See a history of events within my team

Description

As a: Team Owner

I want to: See a history of events within my team

So that: I know who is doing what and spot any misuse or unexpected events

Acceptance Criteria

  • ...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.