kraenzle-ritter/nara-risk

Laravel package for automated digital preservation risk assessment based on NARA Digital Preservation Framework TTL/RDF data

Installs: 0

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/kraenzle-ritter/nara-risk

v0.0.1 2025-10-30 08:02 UTC

This package is auto-updated.

Last update: 2025-10-30 08:10:33 UTC


README

Tests Code Style codecov PHPStan Level 5 Latest Stable Version Total Downloads License PHP Version Require

A Laravel package for automated digital preservation risk assessment based on the NARA Digital Preservation Framework.

Features

  • Official NARA TTL/RDF data integration
  • Automatic caching with 28-day refresh cycle
  • Nara Risk assessment for 100+ file formats via PRONOM IDs
  • Nara Preservation action recommendations
  • Support for 16 NARA format categories
  • Nara Tool suggestions for preservation workflows

Installation

composer require kraenzle-ritter/nara-risk

The package auto-registers via Laravel's package discovery.

Usage

use KraenzleRitter\NaraRisk\Services\NaraAssessmentService;

$service = app(NaraAssessmentService::class);
$result = $service->assessFile('fmt/412'); // PDF 1.7

echo $result['risk_level'];           // "Low"
echo $result['category'];             // "Textual"
echo $result['recommended_action'];   // "Retain"

Response Structure

Each assessment returns an array with these key fields:

  • pronom_id - PRONOM identifier
  • format_name - Human-readable format name
  • category - NARA format category
  • risk_level - Low, Moderate, or High
  • recommended_action - Retain, Transform, Assess, or Identify
  • tools - Array of suggested preservation tools
  • nara_compliant - Boolean indicating NARA framework coverage
  • assessment_notes - Detailed recommendations

Additional Methods

// Get all supported PRONOM IDs
$ids = $service->getSupportedPronomIds();

// Get format statistics
$stats = $service->getFormatStatistics();

// Check cache status
$cacheInfo = $service->getCacheInfo();

Testing

Run the test suite:

composer test

The package includes 44 comprehensive tests covering all functionality.

Requirements

  • PHP 8.2+
  • Laravel 11.44+ | 12.4+

Data Sources

This package uses official data from:

Data is cached locally and refreshed automatically every 28 days.

License

This project is licensed under the MIT License.