RiskPulse is a premium, single-page web application designed for project managers to ingest project documentation (schedules, logs, status reports) to predict bottlenecks, identify risk triggers, and suggest corrective actions before a project misses key milestones.
Built strictly on the PMP (Project Management Professional) framework, it combines quantitative analysis, qualitative risk registers, dependency scheduling, and Monte Carlo simulations in a sleek, client-side, glassmorphic dark interface.
- Critical Path Method (CPM): Computes earliest start/finish, latest start/finish, and float/slack times for all tasks to isolate the critical path. Zero-float activities are explicitly flagged as Critical Path.
-
Earned Value Management (EVM): Computes Schedule Performance Index (SPI) and Cost Performance Index (CPI) using project-wide variables (
project.budgetandproject.actualSpend). SPI and CPI default to0.00if variables are undefined. -
PERT Duration Fallback: Dynamically computes expected durations for all tasks using the Beta-PERT formula:
$Duration = \frac{O + 4M + P}{6}$ before the CPM pass, guaranteeing non-zero values on the Critical Path. -
Epoch-Safe Variance Logic: Safely calculates dates schedule variance. Returns
0if projectendDateis missing, preventing Unix epoch date math errors (the "20,000 days" variance bug). - Beta-PERT Monte Carlo Engine: Performs 1,000 statistical schedule iterations using rejection sampling to determine P10 (highly optimistic), P25, P50 (median), P75, and P90 (highly conservative) project completion probabilities.
- PMP Risk Register: Automatically detects schedule slippage, resource overcommitment, milestone risks, deep dependency chains, and circular loops (aborting loops before stacks overflow).
- Response Planning: Recommends PMP response strategies (Avoid, Mitigate, Transfer, Accept) with context-aware, dynamic corrective actions integrating task IDs and descriptions.
- Animated Risk Score Gauge: 0–100 animated gauge showing overall project threat severity.
- Interactive 5×5 Risk Matrix: Heatmap displaying active risks grouped by probability and impact.
- Interactive Gantt Chart: Draws dependency linkages, highlights critical path items in crimson, and allows drag-to-resize duration changes.
- Monte Carlo Probability Histogram: Shows simulated completion date frequency distributions with a Show Confidence highlight dropdown to filter between P10, P50, and P90 boundaries.
- Resource Overcommitments & Balancing: Highlights overallocated assignees and offers a one-click Balance Resource helper to reassign tasks to lower-loaded team members.
- Risk Category Breakdowns: Donut chart detailing distribution across schedule, budget, resource, and quality categories.
- CSV Ingestion: Auto-detects delimiters (comma vs. semicolon) and parses quoted rows for tasks, milestones, logs, and status reports.
- Schema Validation & Normalization: Performs types checking (e.g.
parseFloatchecks) to ensure dirty inputs never turn calculation variables intoNaN. - Atomic State Updates: Ensures local storage updates and UI renders are transactional and execute only upon successful scheduler passes.
- localStorage Persistence & Auto-Save: Sets state to "Modified" upon changes and triggers a 30-second countdown badge. When the timer hits zero, it displays a pulsing transparent "Saving..." animation before syncing to a green "Synced" state.
- Tab Close Protection: A
beforeunloadlistener commits active changes to local storage if the browser tab is closed with unsaved modifications.
├── index.html # Main SPA interface layout
├── index.css # Dark theme typography, animations, glassmorphic UI
├── app.js # SPA Router, state management, upload controllers
├── risk-engine.js # CPM, EVM, Monte Carlo, and PMP Risk engines
├── data-parser.js # File parser (JSON/CSV), validator, and storage manager
├── charts.js # Canvas-based high-DPI responsive graphics engine
└── sample-data.json # Cloud Migration Platform mock project datasetSince RiskPulse is built entirely client-side using vanilla HTML5, CSS3, and JavaScript, it requires zero backend servers or database installations.
Clone the repository and open the index page in any modern web browser:
# Clone the repository
git clone https://github.com/your-username/riskpulse.git
# Navigate into the folder
cd riskpulse
# Open in your default browser
open index.html- Open the app in your browser.
- Click the "Load Demo Project" button in the sidebar or empty state.
- The dashboard will populate with a live project ("Cloud Migration Platform") showing typical risk patterns (delayed tasks, budget overruns, and resource conflicts).
To import your own project schedules, prepare a JSON file or a CSV task list matching the schemas below, and drag & drop it directly into the Project Data page.
Your CSV should contain headers matching these fields:
id,name,startDate,endDate,plannedStartDate,plannedEndDate,percentComplete,assignee,dependencies,priority,status,estimatedEffort,actualEffort
T-001,Setup DB,2026-01-15,2026-02-15,2026-01-15,2026-02-10,100,Alex Rivera,,high,completed,80,95
T-002,API Config,2026-02-16,2026-03-10,2026-02-11,2026-03-05,45,Sarah Chen,T-001,critical,in-progress,120,150graph TD
User([Project Manager]) -->|Upload JSON/CSV or Edit Form| UI[index.html / app.js]
UI -->|Raw Data String| Parser[data-parser.js]
Parser -->|Validate & Normalize| CleanData[(localStorage)]
CleanData -->|ProjectData Payload| Engine[risk-engine.js]
Engine -->|EVM, CPM, Monte Carlo, Risks| Controller[app.js Controller]
Controller -->|Draw Instructions| Charts[charts.js]
Charts -->|Canvas Rendering| Dashboard[Interactive UI Panels]
Dashboard -->|Insight| User
- Base Theme: Sleek deep-navy/slate palette (
#0a0e1abase /#111827secondary). - Glassmorphic Panels: Custom card classes using
backdrop-filter: blur(20px)and semi-transparent borders. - Typography: Integrated with Inter (Google Fonts) for crisp readability and monospaced digits for calculation displays.
- Responsiveness: Fluid layout adjustments matching mobile, tablet, and widescreen layouts.
This project is licensed under the MIT License - see the LICENSE file for details.