Skip to content

About

Deterministic access-change impact simulator that explains workflow risk before roles and permissions are revoked.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

RoleImpact

Live Demo Case Study

Explore the live demo · Read the portfolio case study · Run locally · Tests

RoleImpact is a deterministic access-change impact simulator that shows which business workflows would break before an employee is offboarded, a role is revoked, or access is reassigned.

Why RoleImpact exists

Access reviews usually stop at the technical layer: which user has which role and which permissions that role grants. The business consequence is harder to see. Removing one apparently narrow permission can leave nobody able to approve a payment, release a deployment, or complete another critical process.

RoleImpact connects the full evidence path:

Employee → Role → Permission → Capability → Workflow step → Business workflow

Before a change is made, the impact engine evaluates that graph, identifies blocked or degraded workflows, explains exactly why they are affected, and tests whether a proposed replacement restores continuity without damaging the replacement's existing responsibilities.

The demo story

Northstar Medical Supplies depends on a three-step Vendor Payment Run: validate the supplier invoice, approve the payment, and release the payment to the bank. Daniel Brooks is the only employee holding the critical Bank Payment Releaser role.

The demo asks a practical question: what happens if Daniel loses that role?

  1. RoleImpact removes the assignment in a simulation, without changing the organization baseline.
  2. The graph traces the lost payment.release permission to the Release bank payment capability and workflow step.
  3. The Vendor Payment Run becomes blocked because no eligible actor remains.
  4. RoleImpact recommends Nia Kapoor as the safest replacement because she is active, works in Treasury Operations, already has Bank Portal access, and does not create a new continuity gap elsewhere.
  5. A mitigation preview assigns the role to Nia and shows the workflow restored before the real access change is made.

This scenario demonstrates the product's core promise: move from “who has access?” to “what breaks if that access changes, and how do we fix it safely?”

What the MVP demonstrates

The repository contains a deployed portfolio MVP with a complete simulation and mitigation vertical slice:

  • React and TypeScript frontend
  • Spring Boot and Java 21 API
  • PostgreSQL 17 through Docker Compose
  • Versioned, immutable OrganizationSnapshot assembly
  • Organization dashboard API and UI
  • Deterministic revoke-role impact analysis with stable result hashing
  • Ranked, evidence-backed replacement recommendations
  • Persisted parent/child mitigation simulations with idempotent replay
  • Stateless impact and mitigation previews for user-built draft organizations
  • Stable public organization IDs and refresh-safe links for reopening editable organization maps, inventories, and impact screens
  • Draft recommendations that verify eligibility and workflow recovery after the proposed role assignment, even when the candidate does not already have the access that the new role would grant
  • Before-and-after workflow comparison in the UI
  • Interactive impact map where teams, members, roles, responsibilities, and workflows reveal their complete connected paths and contextual test actions
  • Workflow-focused and full-organization views with removed, blocked, degraded, candidate, and restored relationship states
  • Direct member selection for inspecting and testing recommended, alternative, or excluded replacements without changing the organization baseline
  • Selectable graph nodes, original/mitigation toggling, and an accessible text representation of every relationship path
  • Flyway-managed relational schema with published Northstar demo data
  • Backend unit and real-PostgreSQL integration tests
  • Frontend unit tests

Published demo dataset

The public version 1 snapshot contains six employees, two teams, four roles, two applications, four permissions, three capabilities, and the critical Vendor Payment Run. It is intentionally read-only so every visitor receives the same reproducible simulation. The older Harborline seed remains available for regression coverage but is no longer presented as the product demo.

Prerequisites

  • Java 21
  • Node.js LTS and npm
  • Docker Desktop
  • Git

Run locally

From the repository root, start PostgreSQL:

docker compose up -d

In a second terminal, start the API:

\.\backend\mvnw.cmd spring-boot:run -Dspring-boot.run.profiles=dev

With the dev profile active, Boot UI is available at http://localhost:8080/bootui.

In a third terminal, install and start the frontend:

npm --prefix frontend install
npm --prefix frontend run dev

Open http://localhost:5173. Choose Explore the live demo, inspect the Northstar dependency graph, test Daniel Brooks's access removal, and verify Nia Kapoor's mitigation to see the restored green relationship graph.

Editable organizations can be reopened from the homepage using their public ID with or without the displayed hyphen. Anyone with an organization ID or link can edit that organization in this portfolio MVP, so do not enter confidential or personal data.

Frontend routes

  • /example opens the read-only, graph-first Northstar continuity demo.
  • /organizations/{publicCode}/map opens an editable organization map.
  • /organizations/{publicCode}/inventory opens its detailed inventory.
  • /organizations/{publicCode}/impact opens a fresh impact-testing screen.

Refreshing any of these routes keeps the same organization and screen. Impact and mitigation results are intentionally temporary, so refreshing the impact route clears the previous result while preserving the selected screen. Vite's development and preview servers provide the required history fallback locally. Production hosting must rewrite non-asset, non-API routes to frontend/index.html so pasted organization links load correctly.

API endpoints

  • GET /api/v1/dashboard loads the default Northstar Medical Supplies dashboard.
  • GET /api/v1/dashboard?organization={slug} loads another organization or returns 404 when the slug does not exist.
  • POST /api/v1/simulations runs and saves a revoke-role simulation.
  • GET /api/v1/simulations/{simulationId} retrieves an immutable saved result.
  • POST /api/v1/simulations/{simulationId}/branches tests and saves a recommendation as a child mitigation simulation.
  • POST /api/v1/workspaces creates a blank editable organization and returns its stable public code.
  • GET /api/v1/workspaces/by-code/{publicCode} resolves an editable organization. The Harborline example is intentionally excluded.
  • GET /api/v1/workspaces/{workspaceId}/catalog loads the editable catalog after the public code has been resolved.
  • POST /api/v1/workspaces/{workspaceId}/impact-previews tests a role removal against the current draft without changing it.
  • POST /api/v1/workspaces/{workspaceId}/impact-previews/mitigations verifies a user-selected replacement against the same draft snapshot and returns the original and mitigated outcomes for comparison.
  • GET /api/v1/health reports API availability.

Tests

.\backend\mvnw.cmd test
npm --prefix frontend test
npm --prefix frontend run lint
npm --prefix frontend run build

Backend integration tests use Testcontainers and therefore require Docker Desktop to be running.

Local configuration

The checked-in defaults are safe for local development. Copy .env.example to .env only if you need to override them. Never commit .env or real database credentials.

About

Deterministic access-change impact simulator that explains workflow risk before roles and permissions are revoked.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages