From f4b72dcc1f78a767a0a00804172b3da015791526 Mon Sep 17 00:00:00 2001 From: Sam Chau Date: Sat, 1 Nov 2025 00:09:45 +1030 Subject: [PATCH] docs: add PCD manifest specification --- docs/manifest.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++ pcd.json | 22 +++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 docs/manifest.md create mode 100644 pcd.json diff --git a/docs/manifest.md b/docs/manifest.md new file mode 100644 index 0000000..eef1f21 --- /dev/null +++ b/docs/manifest.md @@ -0,0 +1,63 @@ +# Manifest Specification + +Every Profilarr Compliant Database must include a `pcd.json` manifest file in +its root directory. This file defines the database's identity, compatibility, +and dependencies. + +## Required Fields + +| Field | Description | +| --------------------------- | --------------------------------------------------------------------------------------------- | +| `name` | Unique identifier for the database (lowercase, hyphens preferred) | +| `version` | Semantic version of the database (MAJOR.MINOR.PATCH) | +| `description` | Short summary of what the database provides | +| `dependencies` | Object mapping dependency names to semver ranges. All PCDs must depend on `schema` at minimum | +| `profilarr.minimum_version` | Minimum Profilarr version required to use this database | + +## Optional Fields + +| Field | Description | +| -------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `arr_types` | Array of supported arr applications (`["radarr"]`, `["sonarr"]`, or `["radarr", "sonarr"]`). If omitted, assumes all are supported | +| `authors` | Array of contributor objects with name and optional email | +| `license` | SPDX license identifier | +| `repository` | Git repository URL | +| `dependencies` | Can include other PCDs in addition to the schema, enabling layered databases | +| `tags` | Array of descriptive keywords for discovery | +| `links` | External resource URLs (homepage, documentation, issues) | + +## Example + +```json +{ + "name": "db", + "version": "2.1.35", + "description": "Seraphys' OCD Playground", + "arr_types": ["radarr", "sonarr", "whisparr"], + + "dependencies": { + "schema": "^1.1.0" + }, + + "authors": [ + { + "name": "Dictionarry Team", + "email": "team@dictionarry.dev" + } + ], + + "license": "MIT", + "repository": "https://github.com/dictionarry-hub/database", + + "tags": ["4k", "hdr", "remux", "quality", "archival"], + + "links": { + "homepage": "https://dictionarry.dev", + "issues": "https://github.com/dictionarry-hub/db/issues" + }, + + "profilarr": { + "minimum_version": "2.0.0" + } +} +``` diff --git a/pcd.json b/pcd.json new file mode 100644 index 0000000..6021067 --- /dev/null +++ b/pcd.json @@ -0,0 +1,22 @@ +{ + "name": "schema", + "version": "1.0.0", + "description": "Base schema for all Profilarr Compliant Databases - defines the structural foundation that all PCDs build upon", + "arr_types": ["radarr", "sonarr"], + + "authors": [ + { + "name": "Dictionarry Team" + } + ], + + "license": "MIT", + "repository": "https://github.com/dictionarry-hub/schema", + + "tags": ["schema", "foundation", "base"], + + "links": { + "homepage": "https://dictionarry.dev", + "issues": "https://github.com/dictionarry-hub/schema/issues" + } +} \ No newline at end of file