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:
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.
- 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.
Flow by LabGrid is currently under active development. Development docker containers that support hot code reloading on edit are provided.
At the moment, only Auth0 is supported; you will need an Auth0 account.
- Setup a react application for your auth0 tenant.
- And an API.
- Add the following permission scopes to the API:
write:protocols
,read:protocols
,write:runs
,read:runs
- Add a redirect url and allowed origin to the auth0 application:
http://localhost:3000
.
- Domain: The tenant name with regional subdomain. For example, the name
dev-123
for regionus
would bedev-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
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
docker-compose build
docker-compose up
Once the database, server, and webapp are running, the database itself needs to have its schema setup/updated.
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.
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.