나는 JS, C#, 그리고 Dart용 경량 규칙 엔진을 만들었습니다 — 작동 방식은 다음과 같습니다
Source: Dev.to

문제
다양한 프로젝트에서 같은 패턴을 반복해서 보게 되었습니다: 이벤트가 발생하고, 몇 가지 조건을 확인해야 하며, 그 조건에 따라 특정 동작을 실행해야 합니다. 인증 흐름, 게임 메커니즘, IoT 자동화, 전자상거래 로직—모두 이 패턴을 따릅니다.
대부분의 규칙 엔진은 제가 필요로 하는 것에 비해 너무 무겁거나 하나의 언어에만 국한돼 있었습니다. 그래서 직접 만들게 되었습니다.
ARE란?
**ARE (Action Rule Event)**는 가볍고 의존성이 없는 규칙 엔진입니다. 개념은 간단합니다:
- Events(이벤트) – 일어나는 일 (사용자 로그인, 온도 변화, 주문 발생)
- Rules(규칙) – 평가할 조건 (온도 > 30, 주문 총액 > 100)
- Actions(액션) – 조건이 충족될 때 실행할 작업 (알림 전송, 할인 적용)
파이프라인: Event → Middleware → Condition Evaluation → Rule Matching → Action Execution
다중 플랫폼
제가 어디서든 사용할 수 있길 원했기 때문에 ARE는 세 가지 플랫폼에서 제공됩니다:
- JavaScript/TypeScript → npm
- C# / .NET → NuGet
- Dart / Flutter → pub.dev
세 플랫폼 모두 동일한 API 디자인을 사용합니다. 하나만 알면 모두 알 수 있습니다.
플레이그라운드
문서만으로는 부족했기에 실제 엔진 동작을 체험할 수 있는 인터랙티브 플레이그라운드를 만들었습니다. 세 가지 실제 시나리오가 포함됩니다:
- 🎮 RPG 게임 – 전투 규칙, 전리품 드롭, 지역 효과, 보스 전투
- 🏠 스마트 홈 – 센서 이벤트, 스케줄, 에너지 관리, 보안
- 🛒 전자상거래 – 주문 처리, 재고 알림, 고객 리워드
각 시나리오는 미리 구성된 이벤트, 규칙, 액션을 제공합니다. 이벤트를 발생시키면 엔진이 실시간으로 처리 과정을 보여줍니다.
🔗 Try it: https://are-playground.netlify.app
내가 자랑스러워하는 기능들
- Rule Flow Diagram – 각 처리 단계가 애니메이션으로 표시되는 파이프라인
- Rule Debugger – 규칙을 확장해 조건별 상세 내역(필드, 연산자, 기대값 vs 실제값, 통과/실패) 확인
- Relationship Graph – 이벤트‑규칙‑액션 간 연결을 시각화한 맵; 마우스 오버 시 연결 강조
- Interactive Tutorial – 첫 방문자를 위한 가이드 투어, 모든 패널을 단계별로 안내
- Full CRUD – 이벤트, 규칙, 액션을 실시간으로 추가·수정·삭제; 코딩 없이 나만의 시나리오 생성 가능
- Code Sandbox – Monaco 에디터를 이용해 직접 ARE 로직을 작성하고 테스트
기술 스택
- React 19 + TypeScript
- Vite
- Tailwind CSS v4
- Zustand (상태 관리)
- Framer Motion (애니메이션)
- i18next (영어 + 터키어)
다음 단계
피드백을 기다리고 있습니다. 플레이그라운드를 사용해 보신다면 다음을 알려 주세요:
- 이벤트 → 규칙 → 액션 개념이 명확했나요?
- 어떤 사용 사례에 적용하고 싶으신가요?
- 프로젝트에 유용하도록 추가되었으면 하는 기능은 무엇인가요?
GitHub: https://github.com/BeratARPA/ARE
읽어 주셔서 감사합니다. 궁금한 점이 있으면 언제든 물어보세요.