Skip to content

Openloop is an open-source framework for defining and executing event-driven workflows and integrations. Designed to be modular and extensible, it provides connectors and tooling to automate processes and observe executions.

Notifications You must be signed in to change notification settings

rishabh941/Openloop

Repository files navigation

OpenLoop

A workflow automation platform that connects GitHub, Slack, Email, and Webhooks with a professional React dashboard.

Project Structure

Openloop/
├── backend-spring/          # Spring Boot backend API
│   └── src/main/java/com/openloop/
│       ├── controller/      # REST API controllers
│       ├── model/          # MongoDB models
│       ├── repository/     # Data repositories
│       ├── service/        # Business logic
│       └── config/         # Configuration
├── rule-engine-fastapi/    # Python FastAPI rule engine
│   └── app/
│       └── routes/         # API routes
└── frontend/               # React TypeScript frontend
    └── src/
        ├── components/     # React components
        ├── pages/         # Page components
        ├── lib/           # Utilities and API
        └── hooks/         # Custom React hooks

Getting Started

Prerequisites

  • Java 17+
  • Node.js 18+
  • Python 3.8+
  • MongoDB (local or Atlas)

Backend Setup

  1. Navigate to backend directory:
cd backend-spring
  1. Configure MongoDB connection in src/main/resources/application.yml:
spring:
  data:
    mongodb:
      uri: "mongodb://localhost:27017/openloop"
  1. Run the Spring Boot application:
./mvnw spring-boot:run

The backend will start on http://localhost:8080

Frontend Setup

  1. Navigate to frontend directory:
cd frontend
  1. Install dependencies:
npm install
  1. Create .env file:
VITE_API_BASE_URL=http://localhost:8080
  1. Run the development server:
npm run dev

The frontend will start on http://localhost:5173

Rule Engine Setup

  1. Navigate to rule engine directory:
cd rule-engine-fastapi
  1. Install dependencies:
pip install -r requirements.txt
  1. Run the FastAPI server:
uvicorn app.main:app --reload --port 8000

Features

  • Workflow Management: Create, update, and delete automation workflows
  • Multiple Triggers: GitHub webhooks, Slack events, Email, and custom webhooks
  • Flexible Actions: Send Slack notifications, emails, or trigger custom webhooks
  • Rule Engine: Python-based rule evaluation for conditional workflow execution
  • Execution Logs: View detailed execution history with status tracking
  • Real-time Updates: Live data fetching from MongoDB
  • Beautiful UI: Professional dashboard with animations and responsive design
  • Type Safety: Full TypeScript support across the frontend

Quick Start Guides

API Documentation

Workflows

  • GET /api/workflows/:email - Get all workflows for a user
  • POST /api/workflows - Create a new workflow
  • PUT /api/workflows/:id - Update a workflow
  • DELETE /api/workflows/:id - Delete a workflow

Webhooks

  • POST /api/webhooks/github - GitHub webhook endpoint (requires signature verification)

Execution Logs

  • GET /api/execution-logs - Get all execution logs
  • GET /api/execution-logs/workflow/:workflowId - Get logs for a workflow

Example Workflow

Here's a complete example of a GitHub issue notification workflow:

{
  "name": "GitHub Issue Slack Alert",
  "userEmail": "user@example.com",
  "trigger": {
    "type": "github"
  },
  "rule": "data.get('action') == 'opened'",
  "actions": [
    {
      "type": "slack",
      "webhookUrl": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",
      "message": " New GitHub issue opened in repository!"
    }
  ],
  "active": true
}

How it works:

  1. GitHub sends a webhook when an issue is opened
  2. OpenLoop receives the webhook and validates the signature
  3. The rule engine evaluates: data.get('action') == 'opened'
  4. If true, the Slack action sends a notification to your channel

Tech Stack

Backend

  • Spring Boot 3.x
  • MongoDB
  • Java 17

Frontend

  • React 19
  • TypeScript
  • Tailwind CSS v4
  • shadcn/ui
  • Framer Motion
  • React Router v7

Rule Engine

  • FastAPI
  • Python 3.8+

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License.

About

Openloop is an open-source framework for defining and executing event-driven workflows and integrations. Designed to be modular and extensible, it provides connectors and tooling to automate processes and observe executions.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors