A sophisticated rule engine using Abstract Syntax Tree (AST) for complex business rule evaluation. This project is developed as part of the Zeotap Intern Assignment, featuring a modern web interface for rule management and evaluation.
A modern 3-tier application that enables:
class Node:
type: str # "operator" or "comparison"
left: Node # Left child node
right: Node # Right child for operators
field: str # Field name for comparisons
operator: str # Comparison operator
value: Any # Comparison value
rule_engine/
โโโ app/
โ โโโ services/
โ โ โโโ rule_validation.py
โ โ โโโ rule_analytics.py
โ โโโ static/
โ โ โโโ css/
โ โ โโโ js/
โ โ โโโ components/
โ โ โโโ core/
โ โ โ โโโ RuleEngineUI.jsx
โ โ โ โโโ RuleBuilder.jsx
โ โ โโโ shared/
โ โ โ โโโ AlertMessage.jsx
โ โ โ โโโ LoadingSpinner.jsx
โ โ โโโ tabs/
โ โ โโโ CreateTab.jsx
โ โ โโโ ManageTab.jsx
โ โ โโโ EvaluateTab.jsx
โ โ โโโ CombineTab.jsx
โ โโโ routes/
โ โ โโโ api.py
โ โโโ main.py
โ โโโ database.py
โ โโโ rule_engine.py
โโโ tests/
โ โโโ test_api.py
โ โโโ test_rule_engine.py
โ โโโ test_rule_validation.py
โโโ requirements.txt
โโโ README.md
- Python 3.7+
- MongoDB
- Node.js and npm
git clone https://github.com/AryanBV/rule_engine.git
cd rule_engine
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# Create .env file with:
MONGODB_URL=mongodb://localhost:27017/rule_engine
uvicorn app.main:app --reload
http://localhost:8000/static/index.html
# Simple Rule
age > 30 AND department = 'Sales'
# Complex Rule
((age > 30 AND department = 'Marketing')) AND (salary > 20000 OR experience > 5)
{
"age": 35,
"department": "Sales",
"salary": 75000,
"experience": 7
}
POST /api/rules/ # Create rule
GET /api/rules/ # List rules
GET /api/rules/{rule_id} # Get rule
PUT /api/rules/{rule_id} # Update rule
DELETE /api/rules/{rule_id} # Delete rule
POST /api/rules/evaluate/{rule_id} # Evaluate rule
POST /api/rules/combine # Combine rules
POST /api/rules/validate # Validate rule syntax
GET /api/rules/{rule_id}/analytics # Get rule analytics
Run tests:
pytest
http://localhost:8000/docs
app/static/js/components/
app/rule_engine.py