PHPackages                             padosoft/eval-harness-ui - 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/eval-harness-ui

ActiveLibrary[Admin Panels](/categories/admin)

padosoft/eval-harness-ui
========================

Admin dashboard UI package for padosoft/eval-harness

1.0.0(1mo ago)03.6k[1 PRs](https://github.com/padosoft/eval-harness-admin/pulls)MITTypeScriptPHP ^8.3CI failing

Since May 6Pushed 1w agoCompare

[ Source](https://github.com/padosoft/eval-harness-admin)[ Packagist](https://packagist.org/packages/padosoft/eval-harness-ui)[ Docs](https://github.com/padosoft/eval-harness-ui)[ RSS](/packages/padosoft-eval-harness-ui/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (1)Dependencies (8)Versions (3)Used By (0)

Eval Harness UI Admin
=====================

[](#eval-harness-ui-admin)

**Package:** `padosoft/eval-harness-ui`
**Target stack:** Laravel 13.x + PHP 8.3+
**Purpose:** Read-only admin panel for consuming `padosoft/eval-harness` report APIs.

`eval-harness-ui` is a host-driven SPA package that gives QA teams and ops teams a ready dashboard without touching the `eval-harness` backend repository.

Backend API repository: [padosoft/eval-harness](https://github.com/padosoft/eval-harness)

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

[](#table-of-contents)

- [What this package gives you](#what-this-package-gives-you)
- [Screen list](#screen-list)
- [Why this package exists](#why-this-package-exists)
- [Architecture in plain words](#architecture-in-plain-words)
- [Runtime contract](#runtime-contract)
- [Production install (beginner-proof, copy/paste)](#production-install-beginner-proof-copy-paste)
- [Minimal security wiring](#minimal-security-wiring)
- [Environment and config reference](#environment-and-config-reference)
- [API mapping the UI expects](#api-mapping-the-ui-expects)
- [Local development setup](#local-development-setup)
- [Release process (what is expected in PR flow)](#release-process-what-is-expected-in-pr-flow)
- [Constraints and behavior notes](#constraints-and-behavior-notes)
- [Roadmap (current status aligned with AGENTS docs)](#roadmap-current-status-aligned-with-agents-docs)
- [Contributing and support](#contributing-and-support)
- [License](#license)

What this package gives you
---------------------------

[](#what-this-package-gives-you)

- 7 operational screens shipped as a SPA
- Fast route-based admin integration in the host app
- Clear errors for `404`, `422`, `503` response cases
- English/Italian translations
- Accessibility checks integrated in CI (`serious` and `critical` gates)
- Playwright e2e coverage for all major flows
- Zero API mutations: **read-only by design**

### Screen list

[](#screen-list)

- Dashboard
    [![Dashboard](resources/screenshoots/eval-harness-admin-Dashboard.png)](resources/screenshoots/eval-harness-admin-Dashboard.png)
- Reports list
    [![Reports list](resources/screenshoots/eval-harness-admin-reports.png)](resources/screenshoots/eval-harness-admin-reports.png)
- Report detail
    [![Report detail](resources/screenshoots/eval-harness-admin-report-details.png)](resources/screenshoots/eval-harness-admin-report-details.png)
- Compare
    [![Compare](resources/screenshoots/eval-harness-admin-compare-reports.png)](resources/screenshoots/eval-harness-admin-compare-reports.png)
- Trend
    [![Trend](resources/screenshoots/eval-harness-admin-dataset-trend.png)](resources/screenshoots/eval-harness-admin-dataset-trend.png)
- Adversarial manifests
    [![Adversarial manifests](resources/screenshoots/eval-harness-admin-adversarial-manifest.png)](resources/screenshoots/eval-harness-admin-adversarial-manifest.png)
- Adversarial manifest details
    [![Adversarial manifest details](resources/screenshoots/eval-harness-admin-adversarial-manifest-details.png)](resources/screenshoots/eval-harness-admin-adversarial-manifest-details.png)
- Live batches
    [![Live batches](resources/screenshoots/eval-harness-live-batches.png)](resources/screenshoots/eval-harness-live-batches.png)

Why this package exists
-----------------------

[](#why-this-package-exists)

`eval-harness` can keep domain logic and API concerns. This package adds only UI surfaces and route mounting for admin consumption.

- No internal `eval-harness` storage or processing code is copied into this package.
- No destructive/POST/PUT/PATCH/DELETE calls are part of this UI flow.
- Host app owns auth, tenancy, and policy decisions.

Architecture in plain words
---------------------------

[](#architecture-in-plain-words)

```
Host Laravel app
  -> Laravel Service Provider
     -> package config is published
     -> route path is mounted under a configurable prefix
        -> Blade entrypoint + JSON bootstrap payload
           -> Vite-powered React SPA (TypeScript)

```

Runtime contract
----------------

[](#runtime-contract)

- `EVAL_HARNESS_UI_PREFIX` defines where the panel is mounted. Default: `admin/eval-harness`.
- `EVAL_HARNESS_API_BASE` defines the host base path for report APIs. Default: `/admin/eval-harness/api`.
- Optional tenant header is sent when needed: `X-Eval-Harness-Tenant`.
- Frontend reads bootstrap info (version/labels/version contract hints) from package endpoints.

Production install (beginner-proof, copy/paste)
-----------------------------------------------

[](#production-install-beginner-proof-copypaste)

### 1) Install the package

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

```
composer require padosoft/eval-harness-ui
```

### 2) Publish package files

[](#2-publish-package-files)

```
php artisan vendor:publish --tag=eval-harness-ui-config
php artisan vendor:publish --tag=eval-harness-ui-assets
php artisan vendor:publish --tag=eval-harness-ui-views
```

### 3) Configure environment

[](#3-configure-environment)

Add to your `.env`:

```
EVAL_HARNESS_UI_ENABLED=true
EVAL_HARNESS_UI_PREFIX=admin/eval-harness
EVAL_HARNESS_UI_MIDDLEWARE="web,auth,can:eval-harness.viewer"
EVAL_HARNESS_API_BASE=/admin/eval-harness/api
EVAL_HARNESS_TENANT_HEADER=X-Eval-Harness-Tenant
EVAL_HARNESS_UI_LOCALE=en
```

### 4) Clear caches and test route exposure

[](#4-clear-caches-and-test-route-exposure)

```
php artisan config:clear
php artisan route:clear
php artisan optimize:clear
php artisan route:list --path=admin/eval-harness
```

### 5) Open the UI

[](#5-open-the-ui)

Navigate to `http://your-app.test/admin/eval-harness`. If login is required, use a user that can pass `eval-harness.viewer` policy.

Minimal security wiring
-----------------------

[](#minimal-security-wiring)

This package does not define authorization policy defaults. You must define who can access these routes in your host app.

### Example Gate setup

[](#example-gate-setup)

```
use Illuminate\Support\Facades\Gate;

Gate::define('eval-harness.viewer', function ($user) {
    return $user->can('viewEvalHarness');
});
```

If you are not using policies, replace this with any `Closure` logic that matches your project auth model.

Environment and config reference
--------------------------------

[](#environment-and-config-reference)

```
// config/eval-harness-ui.php (defaults)
return [
    'enabled' => env('EVAL_HARNESS_UI_ENABLED', false),
    'route_middleware' => ['web', 'auth', 'can:eval-harness.viewer'],
    'prefix' => env('EVAL_HARNESS_UI_PREFIX', 'admin/eval-harness'),
    'api_base' => env('EVAL_HARNESS_API_BASE', '/admin/eval-harness/api'),
    'tenant_header' => env('EVAL_HARNESS_TENANT_HEADER', 'X-Eval-Harness-Tenant'),
    'locale' => env('EVAL_HARNESS_UI_LOCALE', env('APP_LOCALE', 'en')),
    'schema_version' => [
        'required' => true,
        'min_supported' => '1.0',
    ],
    'metric_labels' => [
        'exact-match.mean' => 'Exact match',
        'llm-judge.pass_rate' => 'Judge pass rate',
        'macro_f1' => 'Macro F1',
    ],
];
```

API mapping the UI expects
--------------------------

[](#api-mapping-the-ui-expects)

ScreenEndpoint(s)Dashboard`/reports`, `/batches/live`, `/adversarial/manifests`, `/datasets/{name}/trend?limit=30`Reports list`/reports`Report detail`/reports/{id}`, `/reports/{id}/cohorts`, `/reports/{id}/histograms`, `/reports/{id}/rows.csv`, `/reports/{id}/download`Compare`/reports/{id}/diff/{otherId}`Trend`/datasets/{name}/trend`Adversarial`/adversarial/manifests`, `/adversarial/manifests/{name}`Live batches`/batches/live`, `/batches/{id}/progress`Local development setup
-----------------------

[](#local-development-setup)

### Requirements

[](#requirements)

- PHP 8.3+ (`8.4` recommended for CI parity)
- Node.js 20+ (LTS)
- Composer and npm
- Laravel 13.x app shell

### Install dependencies and run checks

[](#install-dependencies-and-run-checks)

```
composer install
npm install

npm run typecheck
npm run test:unit
npm run build
npm run e2e
npm run e2e:accessibility

composer validate --strict --no-check-publish
composer analyse
composer test
```

If all commands are green, your local environment matches the repository quality gates.

### Project structure (quick map)

[](#project-structure-quick-map)

- `src/`: package service provider and route registration.
- `config/`: package config defaults.
- `routes/web.php`: mount entrypoint for the admin panel.
- `resources/js/`: React application source.
- `resources/views/`: Blade bootstrap template.
- `tests/Feature` and `tests/Unit`: backend regression tests.
- `tests/e2e`: Playwright and accessibility test suites.
- `docs/`: roadmap, progress and operating rules.
- `.github/`: workflows and PR policy docs.

Release process (what is expected in PR flow)
---------------------------------------------

[](#release-process-what-is-expected-in-pr-flow)

1. Implementa in branch `task/-...`.
2. Apri PR per quel subtask.
3. Esegui local gates e richiedi Copilot review.
4. Merga nel macro branch dopo review e test pass.
5. Merga in `main` solo con CI verde e checklist completata.
6. Tagga e push per rilascio automatico.

```
git checkout main
git pull --ff-only
git tag -a v0.x.y -m "Release v0.x.y"
git push origin v0.x.y
```

`release.yml` in `.github/workflows` can create the GitHub release automatically if configured.

Constraints and behavior notes
------------------------------

[](#constraints-and-behavior-notes)

- No mutation endpoints are required by this package.
- Schema compatibility is enforced when `schema_version` is expected and missing data is treated as legacy/empty state.
- Large trend datasets may be rate-limited by host-side API limits and can return `503`.

Roadmap (current status aligned with AGENTS docs)
-------------------------------------------------

[](#roadmap-current-status-aligned-with-agents-docs)

- v0.1.0 completed with dashboard, reports, compare, trend, adversarial, and live batches.
- v0.2.0 planned for future release: chart unification and export reporting improvements.
- v0.3.0 planned for future release: runtime i18n switching and policy cache improvements.
- v0.4.0 planned for future release: richer release notes and host extension points.

Contributing and support
------------------------

[](#contributing-and-support)

If you are joining as a junior contributor:

1. Read `docs/PROGRESS.md` and `docs/PLAN.md` before touching code.
2. Follow the required tests before opening a PR.
3. Keep modifications small and scoped.
4. Respect hard anti-zombie server rules when running local checks (no dangling PHP/Vite/Node processes).

License
-------

[](#license)

MIT

###  Health Score

47

—

FairBetter than 93% of packages

Maintenance96

Actively maintained with recent releases

Popularity24

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

Unknown

Total

1

Last Release

34d 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 (4 commits)")

---

Tags

laravelpackagevitedashboardadminreacteval

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/padosoft-eval-harness-ui/health.svg)

```
[![Health](https://phpackages.com/badges/padosoft-eval-harness-ui/health.svg)](https://phpackages.com/packages/padosoft-eval-harness-ui)
```

###  Alternatives

[moonshine/moonshine

Laravel administration panel

1.3k239.9k72](/packages/moonshine-moonshine)[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)

PHPackages © 2026

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