RUNE: My Graduation Project on Workflow Automation
For my graduation project at Ain Shams University, I set out to build something I would actually use: a workflow automation platform called RUNE. Not a CRUD app with a fancy UI — a system where users define multi-step automations and trust them to run reliably.
Why automation?
Every team has tasks that repeat: sync a spreadsheet, send a Slack message when a form is submitted, move data between services. Developers solve this with scripts. Everyone else copies and pastes. RUNE exists to close that gap.
The builder vs. the engine
The frontend is a drag-and-drop workflow builder in Next.js, built on React Flow. Each node represents a step — trigger, action, condition, delay. Under the hood, workflows compile into a directed graph stored in PostgreSQL and executed by a Go worker pulling jobs from RabbitMQ, while a Rust service streams execution state live over WebSockets.
Trigger (webhook) -> Condition (if/else)
-> Action (send email)
-> Action (update DB)Execution reliability
The hardest engineering challenge wasn't the UI — it was making execution reliable. Workflows branch, retry on failure, and need step-by-step logging so users can see exactly what happened when something breaks at 2 AM.
- Idempotent steps so retries don't duplicate actions
- Dead-letter queue for failed runs with full context
- Real-time execution logs streamed to the dashboard
- Template library for common patterns (form-to-email, webhook-to-Slack)
A workflow platform is a state machine with good UX. The visual layer is just a friendly face on top of a queue.
What's next
RUNE proved that I can take a vague idea — 'make automation accessible' — and ship a working open-source system with a real polyglot architecture behind it: FastAPI, a Go execution engine, and a Rust real-time service. The code is public at github.com/rune-org/rune.