PHPackages                             padosoft/laravel-ai-act-compliance-admin - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. padosoft/laravel-ai-act-compliance-admin

ActiveLibrary[Admin Panels](/categories/admin)

padosoft/laravel-ai-act-compliance-admin
========================================

Cross-mount React admin panel for laravel-ai-act-compliance

v1.5.2(2w ago)02.6kMITJavaScriptPHP ^8.2CI passing

Since May 14Pushed 2w agoCompare

[ Source](https://github.com/padosoft/laravel-ai-act-compliance-admin)[ Packagist](https://packagist.org/packages/padosoft/laravel-ai-act-compliance-admin)[ RSS](/packages/padosoft-laravel-ai-act-compliance-admin/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (10)Dependencies (1)Versions (18)Used By (0)

laravel-ai-act-compliance-admin
===============================

[](#laravel-ai-act-compliance-admin)

 **The drop-in React admin SPA for Laravel AI Act + GDPR compliance ops.**
 8 production-grade screens. Pixel-ported from a Claude Design handoff. Cross-mounts into any Laravel app.

 [![Latest Version on Packagist](https://camo.githubusercontent.com/fe96d953b12cc6dd637cf91aec2717dfac74607314981430c84034113bd7c43e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f7061646f736f66742f6c61726176656c2d61692d6163742d636f6d706c69616e63652d61646d696e2e7376673f7374796c653d666c61742d73717561726526636f6c6f723d626c756576696f6c6574)](https://packagist.org/packages/padosoft/laravel-ai-act-compliance-admin) [![Total Downloads](https://camo.githubusercontent.com/9d5df8ce2566603fe422641dc6cd554054e1cb6e2de34cb72567eb0101932d07/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f7061646f736f66742f6c61726176656c2d61692d6163742d636f6d706c69616e63652d61646d696e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/padosoft/laravel-ai-act-compliance-admin) [![CI](https://camo.githubusercontent.com/c92a4c7224c9dca7ecfd459f1c5f9d302e7820d8dd91f8a4d921363dcd20ac40/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f7061646f736f66742f6c61726176656c2d61692d6163742d636f6d706c69616e63652d61646d696e2f63692e796d6c3f6272616e63683d6d61696e267374796c653d666c61742d737175617265266c6162656c3d4349)](https://github.com/padosoft/laravel-ai-act-compliance-admin/actions) [![MIT License](https://camo.githubusercontent.com/152aa2a37725b9fd554b28ff24d270f6071c67927a63e6d635a55c8e188e20c7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e3f7374796c653d666c61742d737175617265)](LICENSE.md) [![React 19](https://camo.githubusercontent.com/85d9bafc1e7d3b0e1efefd7545562d314bed14f8ed00aa79a77dab5b329d7a50/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656163742d31392d3134396563613f7374796c653d666c61742d737175617265266c6f676f3d7265616374266c6f676f436f6c6f723d7768697465)](#prerequisites) [![TypeScript 5](https://camo.githubusercontent.com/168ec7f21fd9d6bd9739650e70232762bf9054fd3ca97f08417c0fe9187f3c62/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547970655363726970742d352d3331373863363f7374796c653d666c61742d737175617265266c6f676f3d74797065736372697074266c6f676f436f6c6f723d7768697465)](#prerequisites) [![PHP 8.2+](https://camo.githubusercontent.com/6caa15003495643be73f70c6033009042189b7d38acf492a3d5fd04ffbb45059/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d3737374242343f7374796c653d666c61742d737175617265266c6f676f3d706870266c6f676f436f6c6f723d7768697465)](#prerequisites) [![Laravel 11/12/13](https://camo.githubusercontent.com/37f3d5a5a787401d3dbec5a32a7de6a6e973ea266309e69a97e184d1ef4ef57f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d3131253230253743253230313225323025374325323031332d4646324432303f7374796c653d666c61742d737175617265266c6f676f3d6c61726176656c266c6f676f436f6c6f723d7768697465)](#prerequisites) [![8 screens](https://camo.githubusercontent.com/24c5667d56daceca9080a9d66504de80ef67fae03f9f6dc5152f5255ffc08da2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73637265656e732d382d737563636573733f7374796c653d666c61742d737175617265)](#-the-eight-screens) [![WCAG 2.1 AA](https://camo.githubusercontent.com/4eb605a308b80d10454f4c87b121cccae791a57adaf3fbdd96adad01b63dbad6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f574341472d322e3125323041412d737563636573733f7374796c653d666c61742d737175617265)](#-accessibility) [![AI vibe-coding pack](https://camo.githubusercontent.com/5f889bbc418e4e92aaed19b1d52b4d4ed618991168313a35dccab7c5090f2c87/68747470733a2f2f696d672e736869656c64732e696f2f62616467652ff09f9a802d4149253230766962652d2d636f64696e672532307061636b2d79656c6c6f773f7374796c653d666c61742d737175617265)](#-ai-vibe-coding-pack-included)

 [Why](#-why-this-exists) · [Screens](#-the-eight-screens) · [Killer features](#-killer-features) · [Quick start](#-quick-start-jr-proof-5-minutes) · [Cross-mount](#-cross-mount) · [Design system](#-design-system) · [Customise](#-customising) · [Testing](#-testing) · [A11y](#-accessibility) · [Vibe-coding pack](#-ai-vibe-coding-pack-included)

---

🚀 AI vibe-coding pack included
------------------------------

[](#-ai-vibe-coding-pack-included)

Every `padosoft/*` package ships with a `.claude/` directory containing:

- **Skills** (`.claude/skills/`) — pre-loaded by Claude Code when you open the project. The admin SPA skills know how to add a new screen, wire a TanStack Query hook to a controller, and keep `data-testid` selectors consistent.
- **Agents** (`.claude/agents/`) — `screen-reviewer` validates a new screen against the 8-screen pattern + accessibility checklist before you push.
- **Rules** (`.claude/rules/`) — codified rules from real Copilot findings (every interactive `` carries a `` or `aria-label`; every async screen exposes `data-state="loading|ready|error|empty"`; ⌘K palette must restore focus to the trigger on close).

`composer require padosoft/laravel-ai-act-compliance-admin` and the pack is auto-discovered when you open the project in Claude Code. **No setup required.** If you don't use Claude Code, the pack is invisible — it never affects runtime behaviour.

---

📖 Table of contents
-------------------

[](#-table-of-contents)

- [Why this exists](#-why-this-exists)
- [The eight screens](#-the-eight-screens)
- [Killer features](#-killer-features)
- [Prerequisites](#prerequisites)
- [Quick start (jr-proof, 5 minutes)](#-quick-start-jr-proof-5-minutes)
- [Cross-mount](#-cross-mount)
- [Design system](#-design-system)
- [Customising](#-customising)
- [Testing](#-testing)
- [Accessibility](#-accessibility)
- [Companion package: backend](#-companion-package-backend)
- [Roadmap](#-roadmap)
- [Changelog](#-changelog)
- [Contributing](#-contributing)
- [License](#-license)

---

🎯 Why this exists
-----------------

[](#-why-this-exists)

You installed [`padosoft/laravel-ai-act-compliance`](https://github.com/padosoft/laravel-ai-act-compliance). Now you need a UI for your DPO, Compliance Officer, and CISO to actually *use* the DSAR queue, browse the risk register, triage incidents, monitor cohort drift, sign attestations.

You could build that from scratch. It would take 4-6 weeks of FE engineering, plus chart design, plus a11y review, plus drawer / modal / palette UX work. Nobody wants to do that.

This package gives you the **8 production-grade screens** out of the box. Pixel-perfectly ported from a [Claude Design](https://claude.ai/design) handoff bundle. **React 19 + TypeScript + react-router-dom**. Cross-mounts under `/admin/ai-act-compliance` in any Laravel app via the BrowserRouter `basename` pattern proven by `pii-redactor-admin` + `eval-harness-ui`.

### Who's this for

[](#whos-this-for)

YouThis packageUse `padosoft/laravel-ai-act-compliance` and need a UI✅ YesBuilding a custom DPO console and want to start from polished components✅ YesOperating a Laravel SaaS that needs auditor-friendly compliance dashboards✅ YesWant a fully-functional admin out of the box (no Figma → React port)✅ YesPure backend service with no admin UI❌ Use the backend package directly---

🖥️ The eleven screens
---------------------

[](#️-the-eleven-screens)

Every screen is a real React 19 component (not a scaffold). Each has loading / ready / error / empty `data-state` props for deterministic E2E testing, a11y landmarks, and keyboard navigation.

\#ScreenWhat it doesKey UI elements1**Compliance Overview**Single-pane KPI dashboard + activity feed + Article 30 attestation card4 clickable KPI tiles (DSAR / Incidents / Consent / Bias) + alert banner + recharts-style DSAR depth SVG chart + chronological activity feed2**DSAR Queue**GDPR Art. 15 / 16 / 17 request queueFilterable table + bulk actions + status pills + SLA breach badges + drawer with subject / scope / timeline3**Consent Overview**Per-feature + per-user consent matrixTabs (Per feature / Per user) + feature cards with consent bar (granted / revoked / never) + sparkline + user matrix table4**Risk Register**AI Act Annex III risk catalogueCategory summary tiles (unacceptable / high / limited / low) + filter sidebar + card grid + drawer with article references5**Incident Manager**AI Act Art. 73 ticket lifecycle4-lane kanban (open / triage / mitigating / closed) + severity-coloured cards + drawer with timeline + mitigations + escalation tree6**Bias Monitor** *(v1.2 enhanced)*AI Act Art. 10 cohort parity + driftPluggable parity-metric dropdown (DemographicParity / EqualizedOdds / Calibration) with per-metric article evidence + 13-week drift multi-line chart + flagged samples table + per-metric CI bands7**DPO Console**Retention + deletion + attestationData flow diagram (sankey-style SVG) + retention table + deletion log + Article 30 attestation modal with PDF generator8**Settings**Feature flags + env + webhooksSpatie-style switches + masked env vars (show/hide secrets) + webhook destination cards with health status9**Alerts** *(v1.3)*Cohort-drift dispatch audit trailLive-pill + channel / severity / status filter bar + dispatch table with permanent / transient pill + retry button on transient-failure rows + inline detail drawer with payload + decrypted endpoint + error message10**Regulatory Feed** *(v1.4)*EU AI Act amendment dashboardSeverity + status filter bar + amendment table with impacted clauses chip strip + Poll-now button + inline detail drawer with Mark triaged / Mark resolved / Ignore actions11**Tenants** *(v1.5)*DPO multi-org consolePlatform KPI grid (total / active / suspended / alerts / amendments / FRIA / incidents) + tier + status filter bar + tenants table + inline detail drawer with Suspend / Activate / Archive actions### Cross-cutting UX

[](#cross-cutting-ux)

- **⌘K command palette** — searches navigation + actions + records (DSAR / incident / risk) in one prompt
- **Sidebar with badges** — DSAR open count, incident open count, risk open count
- **Topbar with live pulse** — green dot + last-tick timestamp + amber when alert count &gt; 0
- **Theme toggle** — dark / light
- **Toast system** — non-blocking notifications
- **Drawer + modal** — Escape-to-close, focus trap, restore focus on close

---

💎 Killer features
-----------------

[](#-killer-features)

What makes this package WOW vs rolling your own admin:

### 1. Pixel-perfect design heritage

[](#1-pixel-perfect-design-heritage)

Every screen is ported from a real Claude Design handoff — not a Figma mockup, not a Bootstrap kit. The `styles-base.css` + `styles-compliance.css` files ship with **the exact tokens, spacing, and SVG paths the designer signed off**. You can swap shadcn / Tailwind v4 / your house style on top, but the baseline is enterprise-credible from minute zero.

### 2. SVG charts without recharts

[](#2-svg-charts-without-recharts)

Every chart in the package is **hand-rolled SVG** — no chart library dependency. That means:

- Zero bundle bloat
- Easy to skin (the SVG uses CSS variables for colours)
- Easy to extend (one file per chart; no Plotly DSL to learn)

The DSAR depth chart, the cohort parity chart with CI bands, the drift multi-line chart, the data flow sankey — all &lt;300 LoC of plain SVG each.

### 3. Real keyboard navigation + a11y from the start

[](#3-real-keyboard-navigation--a11y-from-the-start)

- ⌘K / Ctrl+K opens the palette from anywhere
- Arrow keys navigate palette results
- Esc closes drawers / modals / palette
- Every clickable region is a `` (not a div with onClick) — screen readers + tab order work
- Every interactive `` carries a `` or `aria-label`
- Every async screen exposes `data-state` for deterministic Playwright waits
- `role="dialog"` + `aria-modal="true"` on drawers + modals
- Focus restoration on close

### 4. Cross-mount, not iframe

[](#4-cross-mount-not-iframe)

The package mounts as a real React app at `/admin/ai-act-compliance` — same browser session, same auth, same CSS variables as the host. No iframe sandboxing pain. Tested with `pii-redactor-admin` + `eval-harness-ui` cross-mount precedents.

### 5. TypeScript everywhere

[](#5-typescript-everywhere)

Every screen, every helper, every chart component is `.tsx` / `.ts`. Strict mode on. The published shape of the host's HTTP API is fully typed in `src/api/`.

---

⚙️ Prerequisites
----------------

[](#️-prerequisites)

You need:

- **PHP 8.2+** + **Laravel 11 / 12 / 13** — same as the backend package
- **Node 20+** — only required if you want to rebuild the bundle yourself; the published assets ship pre-built
- **Composer** — `composer --version`
- **The backend package installed**: `composer require padosoft/laravel-ai-act-compliance`

That's it.

---

⚡ Quick start (jr-proof, 5 minutes)
-----------------------------------

[](#-quick-start-jr-proof-5-minutes)

> Even if you've never installed a Laravel package + React SPA combo before, you'll be running by the end of this section.

### 1. Install the package

[](#1-install-the-package)

```
composer require padosoft/laravel-ai-act-compliance-admin
```

That's it for installation. Laravel auto-discovery wires the service provider.

### 2. Publish the assets

[](#2-publish-the-assets)

```
php artisan vendor:publish --tag=ai-act-compliance-admin-assets
```

This copies the pre-built React bundle to your `public/vendor/ai-act-compliance-admin/` directory and registers the Vite manifest. No node / npm needed on your server.

### 3. Mount the route

[](#3-mount-the-route)

Add to your `routes/web.php`:

```
use Padosoft\AiActComplianceAdmin\Http\Controllers\AdminPanelController;

Route::middleware(['web', 'auth'])
    ->prefix('admin/ai-act-compliance')
    ->group(function () {
        Route::get('/{any?}', [AdminPanelController::class, 'serve'])
            ->where('any', '.*')
            ->name('ai-act-compliance.admin');
    });
```

The catch-all `{any?}` is required so the React `BrowserRouter` can handle client-side navigation between `/dsar`, `/consent`, etc.

### 4. Gate the route (recommended)

[](#4-gate-the-route-recommended)

Wrap the route group in a policy gate so only your compliance team gets in:

```
Route::middleware(['web', 'auth', 'can:viewCompliance'])
    ->prefix('admin/ai-act-compliance')
    ->group(/* ... */);
```

Define the gate in `AuthServiceProvider`:

```
Gate::define('viewCompliance', function (User $user) {
    return $user->hasAnyRole(['admin', 'super-admin', 'dpo', 'compliance-officer', 'ciso']);
});
```

### 5. Visit it

[](#5-visit-it)

Start your app (`php artisan serve` or whatever you use). Log in as a user with the `dpo` / `compliance-officer` / `ciso` / `admin` role. Visit:

```
http://localhost:8000/admin/ai-act-compliance

```

You should see the **Compliance Overview** screen with KPI tiles, an activity feed, and the DSAR depth chart. Click the sidebar entries to navigate the 7 other screens. Hit `⌘K` (Mac) or `Ctrl+K` (Linux/Win) for the command palette.

### 6. (Optional) Connect real data

[](#6-optional-connect-real-data)

Out of the box, the SPA renders against the backend package's HTTP API at `/api/ai-act-compliance/*` (mounted by the backend package service provider). If you want to point it at a different URL, edit `config/ai-act-compliance-admin.php`:

```
return [
    'api_base_url' => env('AICOMPLIANCE_ADMIN_API_BASE', '/api/ai-act-compliance'),
    'mount_prefix' => env('AICOMPLIANCE_ADMIN_MOUNT', '/admin/ai-act-compliance'),
];
```

### 7. Cross-mount into AskMyDocs (or any other Laravel app)

[](#7-cross-mount-into-askmydocs-or-any-other-laravel-app)

If you're shipping the SPA *inside* another Laravel admin (e.g. AskMyDocs), serve it under an iframe pointed at `/admin/ai-act-compliance/embed`:

```

```

The package ships an `/embed` route that strips the host's chrome (no Laravel topbar / Sanctum re-login).

### 8. (Optional) Rebuild the bundle yourself

[](#8-optional-rebuild-the-bundle-yourself)

If you want to customise the SPA source:

```
git clone https://github.com/padosoft/laravel-ai-act-compliance-admin.git
cd laravel-ai-act-compliance-admin
npm install
npm run dev   # Vite HMR on http://localhost:5173
```

Edit the components under `src/features//`, save, and HMR reloads the page in &lt;500ms.

When done:

```
npm run build
```

Vite emits the production bundle to `publishable/` for the PHP `vendor:publish` step to consume.

---

🔗 Cross-mount
-------------

[](#-cross-mount)

The SPA uses `BrowserRouter` with a `basename` that matches your `mount_prefix` config. This means:

- The SPA owns every URL under `/admin/ai-act-compliance/*`
- Your Laravel app handles auth + serves the same `app.blade.php` for every URL in the mount
- Browser back / forward / refresh all work (no fragment-based routing)
- Direct URLs like `/admin/ai-act-compliance/dsar?status=pending&due=5d` are shareable
- ⌘K palette + sidebar nav both use TanStack Router-style navigation

The pattern is proven — `pii-redactor-admin` (v4.4/W2) and `eval-harness-ui` (v4.4/W3) ship the same way in [AskMyDocs](https://github.com/lopadova/AskMyDocs).

---

🎨 Design system
---------------

[](#-design-system)

### CSS tokens

[](#css-tokens)

The package ships two CSS files (loaded automatically):

- `styles-base.css` — design tokens (colours, spacing, typography, motion), generic layout (`.page`, `.card`, `.kpi-grid`, `.alert-banner`), and primitive widgets
- `styles-compliance.css` — compliance-specific styling (severity pills, traffic lights, attestation card)

CSS custom properties drive the theme:

```
:root {
    --accent: #3b82f6;
    --sev-critical: #ef4444;
    --sev-high: #f97316;
    --sev-medium: #f59e0b;
    --sev-low: #22c55e;
    --bg: #0f172a;
    --bg-elevated: #1e293b;
    --text: #e2e8f0;
    --border: #334155;
    --font-mono: ui-monospace, "SF Mono", Menlo, monospace;
}

[data-theme="light"] { /* … */ }
```

### Icons

[](#icons)

50+ lucide-style icons in `src/components/Icons.tsx`. Single base component (`IconBase`) + named exports (`I.Inbox`, `I.ShieldCheck`, `I.Scale`, etc.). Stroke-based, 16-24px friendly, currentColor.

### Components

[](#components)

Reusable primitives in `src/components/Primitives.tsx`:

- `Avatar` — initials + name + size
- `Sparkline` — line + area, configurable colour
- `Tooltip` — title-attribute-based (replace with floating-ui for richer tooltips)
- `Modal` — Escape + focus trap + restore
- `Drawer` — slide-from-right + Escape + actions slot
- `Kbd` — keyboard shortcut chip
- `ArticleRef` — pill for "AI Act Art. 14" etc.

### Layout

[](#layout)

The shell (`src/components/Shell.tsx`) is a 3-column app shell:

```
┌─────────────────────────────────────────────────────────────┐
│  Sidebar (240px)   │   Topbar (fixed)                       │
│                    ├────────────────────────────────────────┤
│  Operations        │                                        │
│  - Overview        │                                        │
│  - DSAR            │                                        │
│  - Consent         │   Active screen                        │
│                    │                                        │
│  Risk Management   │                                        │
│  - Risks           │                                        │
│  - Incidents       │                                        │
│  - Bias            │                                        │
│                    │                                        │
│  Governance        │                                        │
│  - DPO             │                                        │
│  - Settings        │                                        │
│                    │                                        │
│  ──────────────    │                                        │
│  Avatar + role     │                                        │
└────────────────────┴────────────────────────────────────────┘

```

---

⚙️ Customising
--------------

[](#️-customising)

### Swap a screen entirely

[](#swap-a-screen-entirely)

Each screen is a single file. To replace one:

1. Create your own component (e.g. `src/features/dsar/MyDsarScreen.tsx`)
2. Update `src/App.tsx` to route to it instead of `DsarScreen`
3. Rebuild: `npm run build`
4. Re-publish: `php artisan vendor:publish --tag=ai-act-compliance-admin-assets --force`

### Customise the colour palette

[](#customise-the-colour-palette)

Override the CSS custom properties in your host:

```
/* In your host's layout */
:root {
    --accent: #6366f1;  /* indigo instead of blue */
    --sev-critical: #b91c1c;
}
```

### Add a 9th screen

[](#add-a-9th-screen)

1. Add a `RouteEntry` to `src/components/Shell.tsx::ROUTES`
2. Create `src/features//Screen.tsx`
3. Add a `` to `src/App.tsx`
4. Rebuild

### Wire to a different backend

[](#wire-to-a-different-backend)

The default API client targets `/api/ai-act-compliance/*`. Override per-resource clients in `src/api/`:

```
import { api } from '../api/client';

export async function listDsar(filters: DsarFilters) {
    const { data } = await api.get('/api/your-custom-prefix/dsar', { params: filters });
    return data;
}
```

---

🧪 Testing
---------

[](#-testing)

```
npm run test          # Vitest screens-render.test.tsx
npm run test:watch    # Watch mode
```

The default test pack asserts every screen renders its top-level `data-testid` + key landmark nodes. Add your own Vitest + Playwright tests on top.

For E2E, use Playwright + `getByTestId`:

```
test('DSAR queue filter persists across navigation', async ({ page }) => {
    await page.goto('/admin/ai-act-compliance/dsar');
    await page.getByTestId('dsar-filter-status').selectOption('pending');
    await page.getByTestId('dsar-row-dsar_2026_0141').click();
    await expect(page.getByTestId('dsar-detail-dsar_2026_0141')).toBeVisible();
});
```

---

♿ Accessibility
---------------

[](#-accessibility)

WCAG 2.1 AA target. Every screen:

- Has a single `` (the page title)
- Renders interactive widgets as `` (never ``)
- Pairs every `` / `` / `` with a `` or `aria-label`
- Exposes `role="dialog"` + `aria-modal="true"` + focus trap on Drawer + Modal
- Uses `role="status"` / `role="alert"` on non-blocking / blocking notifications
- Supports keyboard navigation via Tab + ⌘K palette
- Provides `aria-busy` while loading
- Provides `data-state="loading|ready|error|empty"` for E2E + a11y tooling

Tested with axe-core via the host's Playwright `tests:a11y` pack.

---

🤝 Companion package: backend
----------------------------

[](#-companion-package-backend)

The Laravel backend is the source of truth:

[`padosoft/laravel-ai-act-compliance`](https://github.com/padosoft/laravel-ai-act-compliance) — 9 backend modules (Disclosure / RiskRegister / DSAR / BiasMonitoring / HumanReviewTracker / Incident / Consent / Cybersecurity / ComplianceAttestation) + Eloquent models + service provider + migrations + HTTP API.

```
composer require padosoft/laravel-ai-act-compliance
composer require padosoft/laravel-ai-act-compliance-admin
```

Both packages cooperate: the backend exposes `/api/ai-act-compliance/*`, the admin consumes it.

---

🗺️ Roadmap
----------

[](#️-roadmap)

- **v1.0** — Scaffold + handoff bundle
- **v1.1** — 8 fully-featured screens ported from the Claude Design handoff
- **v1.2** ✅ shipped 2026-05-15 — Pluggable parity-metric dropdown on BiasScreen (DemographicParity / EqualizedOdds / Calibration with per-metric article evidence + 3-branch CI gap)
- **v1.3** ✅ shipped 2026-05-15 — `/alerts` screen: dispatch log + channel / severity / status filter bar + transient-failure retry button + inline detail drawer
- **v1.4** ✅ shipped 2026-05-15 — `/regulatory` screen: EU AI Act amendment dashboard + Poll-now + Mark triaged / Mark resolved / Ignore actions
- **v1.5** ✅ shipped 2026-05-15 — `/tenants` screen: DPO multi-org console with platform KPI grid + Suspend / Activate / Archive actions
- **v1.6** — Tenant-switcher header dropdown (auto-attaches `X-Tenant-Id` to every axios call) + TanStack Router migration
- **v1.7** — Real-time SSE feed for activity stream + incident state changes + alert dispatches
- **v2.0** — i18n full pass (10 languages) + tablet-optimised layouts + Tailwind v4 design system

---

📋 Changelog
-----------

[](#-changelog)

See [CHANGELOG.md](CHANGELOG.md) for the full release history.

Recent highlights:

- **v1.5.0** (2026-05-15) — `/tenants` screen (DPO console): platform KPI grid (5 tiles) + status + tier filter + tenants table + inline detail drawer with Suspend / Activate / Archive PATCH actions + optimistic UI re-rolling platform totals; 71/71 vitest + Playwright/chromium green
- **v1.4.0** (2026-05-15) — `/regulatory` screen: EU AI Act amendment dashboard + Poll-now button + Mark triaged / resolved / ignore actions; discriminated `FetchOutcome` for 401 / 5xx / network errors
- **v1.3.0** (2026-05-15) — `/alerts` screen: dispatch audit table + transient-failure retry button + live-pill + keyboard-operable rows with nested-button stop-propagation guard; row-only Playwright selectors
- **v1.2.0** (2026-05-15) — Pluggable parity-metric dropdown on `/bias`: surfaces DemographicParity / EqualizedOdds / Calibration with per-metric `article_evidence_json` chips + 3-branch CI gap on calibration crossing
- **v1.1.0** (2026-05-14) — Ported the Claude Design handoff to 8 fully-featured screens
- **v1.0.1** (2026-05-13) — Laravel 13 compatibility constraints
- **v1.0.0** (2026-05-12) — Scaffold + handoff bundle + cross-mount foundation

---

🤝 Contributing
--------------

[](#-contributing)

PRs welcome. Before opening one:

1. Run `npm run test` locally and confirm it's green
2. Run `npm run build` and check the published assets compile
3. Add a Vitest spec for your new component
4. Follow the existing TypeScript + React 19 conventions
5. Update CHANGELOG.md under `## [Unreleased]`

For major changes (new screen, new design system, breaking API), open an issue first.

---

📄 License
---------

[](#-license)

The MIT License (MIT). See [LICENSE.md](LICENSE.md) for details.

The bundled handoff CSS / JSX prototype in `public/handoff/` is copyright Padosoft + Claude Design. Re-using it outside this package is allowed under MIT; please retain the attribution comment at the top of each file.

---

 Made with 🇮🇹 by [Padosoft](https://padosoft.com) · Powering [AskMyDocs](https://github.com/lopadova/AskMyDocs)

###  Health Score

49

—

FairBetter than 94% of packages

Maintenance97

Actively maintained with recent releases

Popularity23

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 80% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

12

Last Release

17d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/10467699?v=4)[Lorenzo](/maintainers/lopadova)[@lopadova](https://github.com/lopadova)

---

Top Contributors

[![lopadova](https://avatars.githubusercontent.com/u/10467699?v=4)](https://github.com/lopadova "lopadova (32 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (8 commits)")

### Embed Badge

![Health badge](/badges/padosoft-laravel-ai-act-compliance-admin/health.svg)

```
[![Health](https://phpackages.com/badges/padosoft-laravel-ai-act-compliance-admin/health.svg)](https://phpackages.com/packages/padosoft-laravel-ai-act-compliance-admin)
```

###  Alternatives

[sebastienheyd/boilerplate

Laravel Boilerplate based on AdminLTE 3 with blade components, user management, roles, permissions, logs viewer, ...

29019.5k3](/packages/sebastienheyd-boilerplate)[slowlyo/owl-admin

基于 laravel、amis 开发的后台框架~

61414.7k26](/packages/slowlyo-owl-admin)[a2insights/filament-saas

Filament Saas for A2Insights

171.5k](/packages/a2insights-filament-saas)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
