A workflow automation platform that connects GitHub, Slack, Email, and Webhooks with a professional React dashboard.
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
- Java 17+
- Node.js 18+
- Python 3.8+
- MongoDB (local or Atlas)
- Navigate to backend directory:
cd backend-spring- Configure MongoDB connection in
src/main/resources/application.yml:
spring:
data:
mongodb:
uri: "mongodb://localhost:27017/openloop"- Run the Spring Boot application:
./mvnw spring-boot:runThe backend will start on http://localhost:8080
- Navigate to frontend directory:
cd frontend- Install dependencies:
npm install- Create
.envfile:
VITE_API_BASE_URL=http://localhost:8080- Run the development server:
npm run devThe frontend will start on http://localhost:5173
- Navigate to rule engine directory:
cd rule-engine-fastapi- Install dependencies:
pip install -r requirements.txt- Run the FastAPI server:
uvicorn app.main:app --reload --port 8000- 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
- GitHub Webhook Setup - Complete guide for integrating GitHub webhooks
- Workflow Creation Guide - Step-by-step workflow creation tutorial
GET /api/workflows/:email- Get all workflows for a userPOST /api/workflows- Create a new workflowPUT /api/workflows/:id- Update a workflowDELETE /api/workflows/:id- Delete a workflow
POST /api/webhooks/github- GitHub webhook endpoint (requires signature verification)
GET /api/execution-logs- Get all execution logsGET /api/execution-logs/workflow/:workflowId- Get logs for a 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:
- GitHub sends a webhook when an issue is opened
- OpenLoop receives the webhook and validates the signature
- The rule engine evaluates:
data.get('action') == 'opened' - If true, the Slack action sends a notification to your channel
- Spring Boot 3.x
- MongoDB
- Java 17
- React 19
- TypeScript
- Tailwind CSS v4
- shadcn/ui
- Framer Motion
- React Router v7
- FastAPI
- Python 3.8+
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License.