FlowLab by Mahesh Adhikari is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
FlowLab is a flexible node-based workflow tool for pre-processing data, creating and displaying data visualisation workflows.
- FlowLab
The project is organized into the following packages:
shared
: Common utilities and components shared across other packagesnodes
: Node-based logic for data processing and visualizationbackend
: Server-side applicationfrontend
: Client-side applicationdruidjs
: Custom package for data querying and processing
- Node.js v19.9.0
- npm 9.6.3
- Git
- Clone the repository:
- Install Dependencies
In the project directory, you can run:
Builds all packages in the project.
Starts all packages in the project concurrently and the app opens on your default browser
Runs both the backend (in dev mode) and frontend concurrently, with color-coded output.
Runs the backend in development mode.
Starts only the frontend application.
Starts only the backend application.
Builds the nodes package and updates dependencies in the backend and frontend packages.
Runs tests for all packages.
This project uses Lerna for managing multiple packages in a single repository.
FlowLab follows a modular architecture:
- Frontend: Built with React, it provides an interactive user interface for creating information visualisation workflows.
- Backend: Powered by Express and Node.js, it handles data processing, storage, and serves the APIs.
- Nodes: Declarative class based nodes for creating data processing and visualisation logic.
- DruidJS: A specialized package for efficient data querying and analysis developed by Rene Cutura; Christoph Kralj; Michael Sedlmair. DRUIDJS — A JavaScript Library for Dimensionality Reduction Github: saehm/DruidJS: A JavaScript Library for Dimensionality Reduction. There were some build related issued by incompatibility of the package with the project's configuration. Hence, this package was cloned, typedefinitions were written for the modules used in the project, and the package was built.
- Shared: Contains common utilities and types used across the application.
- Set up environment variables:
- Create a
.env
file in the root directory - Add necessary environment variables (refer to
.env.example
inside the package directories)
-
Build the project:
npm run build
-
Deploy the backend:
- Backend can be deployed on services like AWS EC2, using PM2. (Currently exploring other options).
- Deploy the frontend:
- The frontend can be built and deployed separately. It can even be deployed as a static web app.
We welcome contributions to the FlowLab! Please follow these steps:
- Fork the repository
- Create a new branch:
git checkout -b feature/your-feature-name
- Make your changes and commit them:
git commit -m 'Add some feature'
- Push to the branch:
git push origin feature/your-feature-name
- Submit a pull request
Please read CONTRIBUTING.md for our code of conduct and the process for submitting pull requests. (coming soon...)
This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0/.
- My sincere gratitude to René Cutura and the contributors of the DRUID.js project for their invaluable work. The DRUID.js library, as hosted on their GitHub repository, has been an important component of this project.