A real-time workflow monitoring system that detects missing or delayed steps, logs every failure, and instantly alerts administrators via email β so issues are resolved before users are ever impacted.
- Overview
- Features
- Tech Stack
- Project Structure
- How It Works
- How to Run
- API Reference
- Screenshots
- Email Alert Format
- Author
Silent Failure Detector is a full-stack application built to surface the invisible β workflow steps that fail without throwing any error. No crash. No exception. Just silence.
The system continuously monitors your workflow events and validates that each step arrives within its expected time window. When something is missing or delayed, it logs the failure, fires an email alert to the administrator, and keeps a full audit trail β so the team can investigate and resolve the issue before users are stuck.
Whether it's a payment pipeline, an order fulfillment flow, or any multi-step automated process β this system makes sure nothing silently slips through.
| # | Feature | Description |
|---|---|---|
| 1 | β‘ Real-Time Monitoring | Tracks live workflow events and validates each step within expected time windows |
| 2 | π Silent Failure Detection | Catches failures with no error β missing steps, skipped stages, and stalled transitions |
| 3 | β±οΈ Delay Detection | Flags workflow steps running slower than their defined threshold |
| 4 | π§ Email Alerts | Notifies administrators the moment a failure is detected |
| 5 | ποΈ Automated Scheduler | Periodically scans for overdue steps without any manual trigger |
| 6 | π Failure Dashboard | View all failures, filter by workflow or type, and mark them resolved |
| 7 | π§ͺ Event Testing Module | Simulate workflow events to validate detection rules before going live |
| 8 | π Failure Logging | Every failure is logged with workflow ID, step name, and timing details |
| Layer | Technology |
|---|---|
| Backend | Spring Boot (Java) |
| Frontend | React + TypeScript (Vite) |
| Database | MySQL |
| Scheduling | Spring Scheduler (@Scheduled) |
| JavaMailSender (Spring Mail) |
SilentFailureDetector/
βββ demo/
β
βββ sfd-frontend/ # βοΈ React + TypeScript Frontend (Vite)
β βββ public/
β β βββ image.png
β β βββ vite.svg
β βββ src/
β β βββ api/ # Axios API call definitions
β β βββ components/ # Reusable UI components
β β βββ hooks/ # Custom React hooks
β β βββ pages/ # Dashboard, Logs, Test Module pages
β β βββ types/ # TypeScript type definitions
β β βββ App.tsx
β β βββ App.css
β β βββ main.tsx
β β βββ index.css
β β βββ .env # Contains environment variables
β βββ index.html
β βββ package.json
β βββ tsconfig.json
β βββ tsconfig.app.json
β
βββ src/main/ # β Spring Boot Backend
βββ java/com/tirtha/sfd
β βββ controller/ # REST API controllers
β βββ config/ # Includes configuaration for mail & DB & password
β βββ service/ # Business logic & detection engine
β βββ scheduler/ # Automated failure scan scheduler
β βββ model/ # JPA entity classes
β βββ dto/ # Object used to transfer data between layers
β βββ repository/ # Spring Data JPA repositories
| βββ SilentFailureDetectorApplication.java
βββ resources/
βββ application.properties # All app config (DB, mail, scheduler)
- This diagram explains the workflow:
Step-by-step:
- Your services send workflow step events to the Failure Detector API.
- The detection engine checks if each step arrives within its defined time window.
- The scheduler runs at regular intervals to catch steps that never arrived at all.
- When a failure is detected, it is logged to the database and an email is sent to the admin.
- The admin reviews the failure on the dashboard, resolves it, and the user can proceed.
Before starting, make sure you have the following installed:
- β Java 17+
- π§ Maven
- ποΈ MySQL 8+
- π© Node.js 18+ (for frontend only)
git clone https://github.com/your-username/SilentFailureDetector.git
cd SilentFailureDetector/demoCREATE DATABASE failure_detector;Edit src/main/resources/application.properties:
# ββββββββββββββββββββββββββββββββββββββ
# Database Configuration
# ββββββββββββββββββββββββββββββββββββββ
spring.datasource.url=jdbc:mysql://localhost:3306/failure_detector
spring.datasource.username=your_mysql_username
spring.datasource.password=your_mysql_password
spring.jpa.hibernate.ddl-auto=update
# ββββββββββββββββββββββββββββββββββββββ
# Email Configuration (Gmail)
# ββββββββββββββββββββββββββββββββββββββ
# β οΈ IMPORTANT: Use a Gmail App Password β NOT your normal Gmail password.
#
# How to generate an App Password:
# 1. Go to your Google Account β Security
# 2. Enable 2-Step Verification (mandatory)
# 3. Go to Security β App Passwords
# 4. Generate a password for "Mail"
# 5. Paste the 16-digit password below
#
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=your_email@gmail.com
spring.mail.password=your_16_digit_app_password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
# ββββββββββββββββββββββββββββββββββββββ
# Scheduler Configuration
# ββββββββββββββββββββββββββββββββββββββ
scheduler.check.interval=60000mvn spring-boot:runBackend API will be available at
http://localhost:8080
cd sfd-frontend
npm install
npm run devDashboard will be available at
http://localhost:5173
Base URL: http://localhost:8080
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/events |
Ingest a new workflow step event |
GET |
/api/events?workflowId=1 |
Fetch all events for a specific workflow |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/dashboard/failures |
Fetch all logged failures |
GET |
/api/dashboard/failures/workflow/{workflowId} |
Failures filtered by workflow |
GET |
/api/dashboard/failures/type/{type} |
Failures filtered by type (MISSING / DELAYED) |
POST |
/api/dashboard/failures/resolve/{id} |
Mark a specific failure as resolved |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/failures/detect/{workflowId} |
Manually trigger failure detection for a workflow |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/workflows |
Create a new workflow |
GET |
/api/workflows |
Fetch all workflows |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/workflow-steps |
Create a new workflow step |
GET |
/api/workflow-steps?workflowId=1 |
Fetch all steps for a specific workflow |
Replace the placeholder paths below with your actual screenshots.
| Dashboard Overview | Failure Logs |
|---|---|
![]() |
![]() |
| Workflow View | Email Alert | Add Event |
|---|---|---|
![]() |
![]() |
![]() |
| Login | Signup |
|---|---|
![]() |
![]() |
When a failure is detected, the admin receives an email in this format:
Subject: β οΈ Workflow Failure Detected β [Workflow Name]
ββββββββββββββββββββββββββββββββββββββ
SILENT FAILURE DETECTOR β ALERT
ββββββββββββββββββββββββββββββββββββββ
Workflow : Order Processing Pipeline
Step : Payment Confirmation
Status : MISSING / DELAYED
Expected : Within 30 seconds of "Order Placed"
Detected : Step not received within threshold
Please investigate and resolve this issue at the
earliest to avoid further delay for the user.
ββββββββββββββββββββββββββββββββββββββ
Jhaveri Tirtha
This project is unlicensed. All rights reserved by the author.







