GithubHelp home page GithubHelp logo

alex-safian / flow-builder Goto Github PK

View Code? Open in Web Editor NEW

This project forked from floip/flow-builder

0.0 0.0 0.0 175.19 MB

License: Other

JavaScript 22.54% HTML 0.08% Vue 44.68% CSS 2.53% TypeScript 29.62% SCSS 0.28% Shell 0.28%

flow-builder's Introduction

Build Status

flow-builder

flow-builder provides an open source frontend for authoring flow interoperability project specification compliant flows. It enables the importing, editing and exporting of flow json, as well as authoring from scratch. Such flows can then be run using a compatible flow runner such as FLOIP/flow-runner.

What are flows

Flows are a modern paradign for describing the logic of digital information systems that interact with individuals, often for the purpose of (a) collecting data or (b) providing information through interactive requests. Some common examples of this are in mobile services using voice-based or SMS-based conversations over basic mobile phones. Flows follow the "flowchart" paradigm, consisting of actions (nodes) and connections between actions, which can incorporate decision-making logic.

Project setup - Testing and Developing

Serving

git clone [email protected]:FLOIP/flow-builder.git

cd flow-builder

yarn install

yarn serve

And visit localhost:8080/trees/create to create a new flow or localhost:8080/trees/1/edit to edit an example flow.

Note, yarn serve will also hot reload for development.

Compiles and minifies for production

yarn build

Lints and fixes files

yarn lint

webpack-dev-server stub routes

For UI standalone usage, we implemented stub routes under /vue.config.js, eg: /audiofiles/upload Therefore, if we want to integrate the flow-builder repo into other project:

  • we should remove those stub routes
  • we should create equivalent routes (and their associated controllers) inside the project which will use the flow-builder

Changes on JS dependencies

/src/lib/mixins/FlowUploader.js

This is related to Flow.js library which is providing multiple simultaneous, stable and resumable uploads via the HTML5 File API.

  • On standalone UI, we import the Flow like import Flow from '@flowjs/flow.js'; and use it inside the file like new Flow(...)
  • But when we integrate the flow-builder into other project, we may need to call a global Flow like new global.Flow(...).

Usage

Create new flow

To begin, you can create a new flow by visiting https://floip.github.io/flow-builder/#/. Click on New Flow , from there, you can enter in the pertinent flow information before opening the Flow Builder.

You may also go directly to the following link: https://https://floip.github.io/flow-builder/#/flows/new Flow 1

Adding Blocks and Content

Once you have the canvas open you can add blocks to create your flow Flow 2

Adding and Removing Connections

Adding and removing connections can be done easily Flow 4

Navigating the Block Toolbar

Each block has a toolbar at the top that appears when hovering over the block. You may select the block, delete the block, duplicate the block, or access the sidebar editor from this toolbar. Flow 3

Multiple Block Actions

If you select multiple blocks, you are able to duplicate or delete them on the Multiple Select Toolbar Flow 5

Import existing flow

Visit https://floip.github.io/flow-builder/#/ and click on the Import/Paste a JSON File Link in order to import an exiting flow via JSON schema or by pasting the JSON file directly

You may also go directly to the following link: https://floip.github.io/flow-builder/#/flows/import

Importing JSON file Flow 6

Pasting JSON file directly Flow 7

Edits using the builder will then be reflected in the flow JSON in this panel and vice versa.

Export flow

To export, simply copy the json in this panel to a file. Flow 8

Storybook

  1. You only need to serve it with yarn storybook:serve
  2. Then follow the provided url, by default it should be http://localhost:6006/ (but in case the port 6006 is non-available, it may use different one)

An explanation of app.config.json vs builder.config.json

app.config.json is intended to support the configuration needed when integrating this flow building ui into a larger platform or application while builder.config.json is intended to configure those features which are core to the flow builder - the blocks enabled, languages or content types supported etc.

More detail to follow.

Integrating With/Embedding In a Host App - Configuration Guide:

See here

Future extensions and improvements

  • Documentation on integration of this UI into another app including configuration of routes used for server side persistence
  • Validations and human readable validation error messages for the full flow spec - compulsory fields, string formats etc.
  • Documentation on extending this library - adding support for new block types or extending existing block types
  • More fully featured resource editing including audio upload
  • A way to add to the supportable languages
  • Guidance for integration into a permissions system for flow editing/viewing
  • Add regression testing pipeline for storyshots

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.