Skip to content

JustLABv1/justflow

Repository files navigation

Buy Me A Coffee

exFlow

exFlow is a workflow automation platform like Jenkins but beautiful. This repository contains both the frontend and backend code for the exFlow application.

Dashboard Image

Table of Contents

Features

  • 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.

Self Hosting

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

Docker Compose

Use our docker-compose.yaml to get started with exFlow. This contains an postgres database and the full version image of exFlow.

Helm Chart

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

Docker run

Full Version

Config example: config.yaml

docker run -p 80:3000 -v /your/config/path/config.yaml:/etc/exflow/backend_config.yaml justnz/exflow:latest

Frontend Only

If 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-latest

Backend Only

docker run -p 8080:8080 -v /your/config/path/config.yaml:/etc/exflow/backend_config.yaml justnz/exflow:backend-latest

Runners

The 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.

Project Structure

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.

Local Development

To get started with the exFlow project, follow these steps:

Backend

  1. Clone the repository:

    git clone git@github.com:v1Flows/exFlow.git
    cd exflow
  2. Install dependencies:

    cd services/backend && go mod download
  3. 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
  4. Build and run the backend server:

    $ go build -o exflow-backend
    $ ./exflow-backend --config config/config.yaml

Frontend

  1. Navigate to the frontend directory:

    cd services/frontend
  2. Install dependencies:

    npm install
  3. Create a .env.local file and add the necessary environment variables:

    NEXT_PUBLIC_API_URL="https://your-api-url.com"
  4. Start the development server:

    npm run dev

Contributing

We welcome contributions to the exFlow project! To contribute, follow these steps:

  1. Fork the repository.
  2. Create a new branch:
    git checkout -b feature/your-feature-name
  3. Make your changes and commit them:
    git commit -m "Add your commit message"
  4. Push to the branch:
    git push origin feature/your-feature-name
  5. Open a pull request on GitHub.

License

This project is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3. See the LICENSE file for details.

About

Workflow Automation Platform

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages