{"id":50453984,"url":"https://github.com/mizcausevic-dev/compliance-event-ledger","last_synced_at":"2026-06-01T01:05:31.252Z","repository":{"id":357022259,"uuid":"1235014024","full_name":"mizcausevic-dev/compliance-event-ledger","owner":"mizcausevic-dev","description":"Java Spring Boot backend for immutable compliance event history, timeline retrieval, exception pressure scoring, and audit-friendly governance workflows","archived":false,"fork":false,"pushed_at":"2026-05-28T02:03:22.000Z","size":575,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"project/compliance-event-ledger","last_synced_at":"2026-05-28T03:20:56.245Z","etag":null,"topics":["audit-log","backend","compliance","event-sourcing","java","openapi","platform-engineering","spring-boot"],"latest_commit_sha":null,"homepage":"https://kineticgain.com/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mizcausevic-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-10T23:32:33.000Z","updated_at":"2026-05-28T03:14:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mizcausevic-dev/compliance-event-ledger","commit_stats":null,"previous_names":["mizcausevic-dev/compliance-event-ledger"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mizcausevic-dev/compliance-event-ledger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Fcompliance-event-ledger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Fcompliance-event-ledger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Fcompliance-event-ledger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Fcompliance-event-ledger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mizcausevic-dev","download_url":"https://codeload.github.com/mizcausevic-dev/compliance-event-ledger/tar.gz/refs/heads/project/compliance-event-ledger","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Fcompliance-event-ledger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33755379,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audit-log","backend","compliance","event-sourcing","java","openapi","platform-engineering","spring-boot"],"created_at":"2026-06-01T01:05:31.197Z","updated_at":"2026-06-01T01:05:31.247Z","avatar_url":"https://github.com/mizcausevic-dev.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Compliance Event Ledger\r\n\r\nCompliance Event Ledger is a Java and Spring Boot service for tracking policy actions, approvals, exceptions, remediations, and review pressure in one audit-friendly event stream. It models governance activity as a time-ordered ledger instead of a loose pile of tickets, which makes ownership, severity, and deadline pressure much easier to inspect.\r\n\r\n## Executive Summary\r\n\r\nThis project shows how governance data can be structured as an operational timeline instead of static reporting. Each event captures severity, ownership lane, tags, due dates, and status so teams can retrieve a single event, inspect an entity timeline, summarize the current ledger, and run a pressure analysis when an entity looks unstable.\r\n\r\n## Portfolio Takeaway\r\n\r\n- Java and Spring Boot backend with opinionated governance domain modeling\r\n- timeline retrieval for audit review and entity-centric investigation\r\n- severity-aware analysis route for escalation and next-step sequencing\r\n- clean docs, tests, CI, and public proof assets\r\n\r\n## Overview\r\n\r\n| Area | Details |\r\n| --- | --- |\r\n| Language | Java 21 |\r\n| Framework | Spring Boot 3.5 |\r\n| API Docs | Swagger UI at `/docs` |\r\n| Test Stack | JUnit 5, Spring Boot Test, MockMvc |\r\n| Runtime Shape | In-memory event ledger with analysis service |\r\n| Core Domains | policy actions, approvals, exceptions, remediations, reviews, alerts |\r\n\r\n## API Surface\r\n\r\n- `GET /`\r\n- `GET /health`\r\n- `GET /api/events`\r\n- `GET /api/events/{id}`\r\n- `GET /api/timeline/{entityId}`\r\n- `GET /api/dashboard/summary`\r\n- `POST /api/analyze/ledger`\r\n- `GET /docs`\r\n\r\n## Request Flow\r\n\r\n```mermaid\r\nflowchart LR\r\n  A[\"Compliance event enters ledger\"] --\u003e B[\"Severity and owner lane captured\"]\r\n  B --\u003e C[\"Entity timeline aggregates prior actions\"]\r\n  C --\u003e D[\"Dashboard summary measures open pressure\"]\r\n  D --\u003e E[\"Ledger analysis route scores urgency\"]\r\n  E --\u003e F[\"Ops, audit, or leadership next action\"]\r\n```\r\n\r\n## Analysis Logic\r\n\r\nThe analysis route treats governance pressure as a weighted combination of:\r\n\r\n- highest active severity\r\n- open exceptions\r\n- overdue remediation work\r\n- days until the next required review\r\n- control coverage strength\r\n\r\nThat produces a score, status, issues, passed checks, and a recommended next action.\r\n\r\n## Sample Analysis\r\n\r\nRequest:\r\n\r\n```json\r\n{\r\n  \"entityName\": \"AI Policy Operations\",\r\n  \"ownerLane\": \"Model Risk\",\r\n  \"highestSeverity\": \"CRITICAL\",\r\n  \"daysUntilReview\": 3,\r\n  \"hasOpenException\": true,\r\n  \"hasOverdueRemediation\": false,\r\n  \"activeControls\": [\r\n    \"approval-history\",\r\n    \"exception-register\"\r\n  ]\r\n}\r\n```\r\n\r\nResponse:\r\n\r\n```json\r\n{\r\n  \"status\": \"escalate\",\r\n  \"score\": 82,\r\n  \"issues\": [\r\n    \"Critical severity activity is attached to this entity.\",\r\n    \"An exception is still open and requires ownership validation.\",\r\n    \"The next mandatory review is inside a seven-day window.\"\r\n  ],\r\n  \"passedChecks\": [\r\n    \"No overdue remediation is currently attached.\",\r\n    \"Control coverage is broad enough to reduce uncontrolled drift.\"\r\n  ],\r\n  \"recommendedNextAction\": \"Route to Model Risk and audit leadership for same-day remediation sequencing.\"\r\n}\r\n```\r\n\r\n## Screenshots\r\n\r\n### Control Room\r\n![Control Room](./screenshots/01-hero.png)\r\n\r\n### Entity Timeline\r\n![Entity Timeline](./screenshots/02-timeline.png)\r\n\r\n### Ledger Analysis\r\n![Ledger Analysis](./screenshots/03-analysis.png)\r\n\r\n### Validation Proof\r\n![Validation Proof](./screenshots/04-proof.png)\r\n\r\n## Run Locally\r\n\r\n```powershell\r\ncd compliance-event-ledger\r\n$env:JAVA_HOME = \"C:\\Program Files\\Microsoft\\jdk-21.0.11.10-hotspot\"\r\n$env:Path = \"$env:JAVA_HOME\\bin;$env:Path\"\r\n.\\mvnw.cmd spring-boot:run\r\n```\r\n\r\nThen open:\r\n\r\n- `http://127.0.0.1:4311/`\r\n- `http://127.0.0.1:4311/docs`\r\n\r\nIf that port is already occupied, choose another one before running:\r\n\r\n```powershell\r\n$env:PORT = \"4315\"\r\n.\\mvnw.cmd spring-boot:run\r\n```\r\n\r\n## Validation\r\n\r\n```powershell\r\ncd compliance-event-ledger\r\n$env:JAVA_HOME = \"C:\\Program Files\\Microsoft\\jdk-21.0.11.10-hotspot\"\r\n$env:Path = \"$env:JAVA_HOME\\bin;$env:Path\"\r\n.\\mvnw.cmd test\r\n.\\mvnw.cmd package\r\n```\r\n\r\n## Tech Stack\r\n\r\n[![Java 21](https://img.shields.io/badge/Java-21-0f172a?style=for-the-badge\u0026logo=openjdk\u0026logoColor=f8fafc)](https://www.oracle.com/java/)\r\n[![Spring Boot](https://img.shields.io/badge/Spring_Boot-3.5-0f172a?style=for-the-badge\u0026logo=springboot\u0026logoColor=7ee787)](https://spring.io/projects/spring-boot)\r\n[![Swagger](https://img.shields.io/badge/OpenAPI-Docs-0f172a?style=for-the-badge\u0026logo=swagger\u0026logoColor=85ea2d)](https://swagger.io/specification/)\r\n[![JUnit 5](https://img.shields.io/badge/JUnit-5-0f172a?style=for-the-badge\u0026logo=junit5\u0026logoColor=facc15)](https://junit.org/junit5/)\r\n[![Maven](https://img.shields.io/badge/Maven-Wrapper-0f172a?style=for-the-badge\u0026logo=apachemaven\u0026logoColor=f8fafc)](https://maven.apache.org/)\r\n\r\n## Portfolio Links\r\n\r\n- [Kinetic Gain](https://kineticgain.com/)\r\n- [LinkedIn](https://www.linkedin.com/in/mirzacausevic)\r\n- [Skills Page](https://mizcausevic.com/skills/)\r\n- [Medium](https://medium.com/@mizcausevic)\r\n- [GitHub](https://github.com/mizcausevic-dev)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmizcausevic-dev%2Fcompliance-event-ledger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmizcausevic-dev%2Fcompliance-event-ledger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmizcausevic-dev%2Fcompliance-event-ledger/lists"}