Giter Club home page Giter Club logo

flow's Introduction

Flow by LabGrid

Flow by LabGrid is an open-source configurable workflow manager with a React/Typescript frontend, Python Flask backend, and Postgres database.

This project is currently under active development. See the getting started documentation to run the app using Docker and Auth0 for user auth. Hosted version of the latest master branch is available at https://flow.labgrid.com

If you have a question for us, feel to reach out at: Gitter chat

Philosophy

We want to make a self-hosted workflow manager for companies and biotech labs that have privacy and security concerns about their data going to third party services. We are striving for an easy-to-deploy solution that can be used in regulated lab environments. Flow by LabGrid gives you full control over your lab's workflows and data.

Features

  • Custom workflow manager - a customizable workflow manager you can deploy in your own environment
  • Drag and drop protocol widgets - easy to make new workflow widgets
  • Audit trails and reporting - reports available for all events
  • React Native support - (work in progress)
  • For your whole team - share protocols with teammates, view runs across the team
  • Built with Postgres, React, Flask - optimized for responsiveness, fault-tolerance, and support for regulated environments. Backend based on Python means easy integration of scientific libraries.

Getting Started

Flow by LabGrid is currently under active development. Development docker containers that support hot code reloading on edit are provided.

First, prepare authentication settings

At the moment, only Auth0 is supported; you will need an Auth0 account.

  1. Setup a react application for your auth0 tenant.
  2. And an API.
  3. Add the following permission scopes to the API: write:protocols, read:protocols, write:runs, read:runs
  4. Add a redirect url and allowed origin to the auth0 application: http://localhost:3000.

You will need the following for the .env file in the next step:

  • Domain: The tenant name with regional subdomain. For example, the name dev-123 for region us would be dev-123.us.auth0.com
  • Client ID: an alphanumeric string, which is the unique identifier for your application. For example, q8fij2iug0CmgPLfTfG1tZGdTQyGaTUA
  • Audience: This is the URL of the authentication page. For example, http://localhost:3000/login

Then, setup your environment.

cp example.env .env

Edit the .env file to contain secrets appropriate for your environment.

To change which configuration files your docker-compose will read from, use this alias before any of the docker-compose commands below:

#sh
# Setup docker-compose to use the develop environment configuration.
alias docker-compose="docker-compose -f docker-compose.yaml -f docker-compose.dev.yaml"
#powershell
# Edit docker-compose.ps1 first to contain the configurations you would like to use
Set-Alias -Name docker-compose -Value .\docker-compose.ps1

Next, launch database, server, and webapp.

docker-compose build
docker-compose up

Once the database, server, and webapp are running, the database itself needs to have its schema setup/updated.

Finally, update the database

To update your database to the latest version, first start the database and server containers, run the relevant docker-compose alias command (above), then run:

#sh
./server.sh db upgrade
#powershell
./server.ps1 db upgrade

Whenever changes to the database schema for Flow are made, new migration(s) get created in the server/migrations/versions/ directory.


Troubleshooting

To see which of the containers (server, db, web) are running or failed, run:

docker-compoase ps

To stand up each container in separate terminals, for clearer error messages from each part, pass the name of the container (db, server, or web) to docker-compose up. For example:

docker-compoase up db

If you need to get rid of your local database, for example because you have forgotten the password for it: remove the .postgres directory. This is created in the top-level repo directory for local development when you use the example.env database env variables.

flow's People

Contributors

robotoer avatar kathryn-explorable avatar enorms avatar

Watchers

 avatar

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.