exFlow is a workflow automation platform like Jenkins but beautiful. This repository contains both the frontend and backend code for the exFlow application.
- Project Management: Projects combine a number of Flows and add the option to invite members and control their access.
- Flows: Create flows to design workflows / automations.
- Failure Pipelines: Trigger separate pipelines in case your flows fail and recover in case needed.
- Runners: Runners execute your flows. They can also be self-hosted and expanded with plugins.
- Shared Runners: Create runners which can be used for all projects across the platform.
- Scalable to your Needs: Scale exFlow and the runners according to your workload.
- Team Collaboration: Invite team members, assign roles, and manage permissions.
- Audit Logs: Track changes and activities within projects and flows.
To run your own version of exFlow we provide various docker images available at Docker Hub.
!CAUTION! exFlow requires an separately hosted PostgreSQL Database to connect to. There is no built-in database in the full version exFlow image.
- justnz/exflow:latest - Full version including frontend and backend
- justnz/exflow:vx.x.x - Versioned release. Also available for the single frontend and backend images
- justnz/exflow:frontend-latest - Only frontend
- justnz/exflow:backend-latest - Only backend
Use our docker-compose.yaml to get started with exFlow. This contains an postgres database and the full version image of exFlow.
We also offer an Helm Chart for exFlow which includes exFlow itself, an postgres and the option for project/shared runners.
Visit our Helm Repo for more details
Config example: config.yaml
docker run -p 80:3000 -v /your/config/path/config.yaml:/etc/exflow/backend_config.yaml justnz/exflow:latestIf you want to run only the frontend of exFlow, please provide the backend endpoint via the below env flag.
docker run -p 80:3000 -e NEXT_PUBLIC_API_URL=https://api-url.com justnz/exflow:frontend-latestdocker run -p 8080:8080 -v /your/config/path/config.yaml:/etc/exflow/backend_config.yaml justnz/exflow:backend-latestThe execution engine of exFlow is the v1Flows Runner. This component provides the functionality as a workflow engine and will execute your flows.
exFlow can only run flows when at least one runner is connected. After you created your exFlow instance either create an project and add an persistent/auto runner or as an admin visit the admin runner page.
Please see the Runner Repo for more informations.
The project structure is organized as follows:
- backend: Contains the backend code for handling API requests, database interactions, and business logic.
- frontend: Contains the frontend code for the user interface, including components, pages, and styles.
To get started with the exFlow project, follow these steps:
-
Clone the repository:
git clone git@github.com:v1Flows/exFlow.git cd exflow -
Install dependencies:
cd services/backend && go mod download
-
Create a config.yaml file and add the necessary configuration:
--- log_level: info port: 8080 database: server: localhost port: 5432 name: postgres user: postgres password: postgres encryption: enabled: true # maximum 32 characters key: null jwt: secret: null
-
Build and run the backend server:
$ go build -o exflow-backend $ ./exflow-backend --config config/config.yaml
-
Navigate to the frontend directory:
cd services/frontend -
Install dependencies:
npm install
-
Create a
.env.localfile and add the necessary environment variables:NEXT_PUBLIC_API_URL="https://your-api-url.com"
-
Start the development server:
npm run dev
We welcome contributions to the exFlow project! To contribute, 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 your commit message" - Push to the branch:
git push origin feature/your-feature-name
- Open a pull request on GitHub.
This project is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3. See the LICENSE file for details.

