{"id":50942373,"url":"https://github.com/rmdes/indiekit-plugin-registry","last_synced_at":"2026-06-17T16:11:05.479Z","repository":{"id":361889705,"uuid":"1255345388","full_name":"rmdes/indiekit-plugin-registry","owner":"rmdes","description":"Shared plugin catalog for indiekit-cloudron and indiekit-deploy","archived":false,"fork":false,"pushed_at":"2026-06-11T16:25:05.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T18:12:57.506Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/rmdes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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-31T18:03:37.000Z","updated_at":"2026-06-11T16:37:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rmdes/indiekit-plugin-registry","commit_stats":null,"previous_names":["rmdes/indiekit-plugin-registry"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rmdes/indiekit-plugin-registry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmdes%2Findiekit-plugin-registry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmdes%2Findiekit-plugin-registry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmdes%2Findiekit-plugin-registry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmdes%2Findiekit-plugin-registry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rmdes","download_url":"https://codeload.github.com/rmdes/indiekit-plugin-registry/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmdes%2Findiekit-plugin-registry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34453671,"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-06-17T02:00:05.408Z","response_time":127,"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":[],"created_at":"2026-06-17T16:11:04.684Z","updated_at":"2026-06-17T16:11:05.469Z","avatar_url":"https://github.com/rmdes.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# indiekit-plugin-registry\n\nCentral catalog of Indiekit plugins as a git submodule in `indiekit-cloudron`.\n\n## Status\n\n**Currently consumed by:** `indiekit-cloudron` only (as a git submodule, read by `scripts/compose-site.mjs`).\n\n**Planned for:** `indiekit-deploy` integration (not yet implemented).\n\n## Files\n\n- `plugin-registry.yaml` — the catalog itself\n- `scripts/validate.mjs` — schema validation (run by CI, Ajv with `registry-schema.json`)\n\n## Schema\n\nFour tiers, each with these fields per entry:\n\n| Field | Type | Purpose |\n|-------|------|---------|\n| `key` | string | Identifier used in `sites/*/config/plugins.yaml` (kebab-case) |\n| `package` | string | npm package name (`@scope/name`) |\n| `version` | string | semver range — **omitted when `overridden: true`** |\n| `overridden` | boolean | `true` if `indiekit-cloudron/package.json` `overrides` field swaps this for an `@rmdes/*` fork |\n| `library` | boolean | `true` for helper libraries (imported by plugins, not loaded as plugins; install only) |\n| `default_enabled` | boolean | Whether this plugin is enabled by default when a site doesn't explicitly list it |\n\n**Tiers:**\n\n- `core` — always installed and loaded; cannot be disabled per-site\n- `post_types` — content type plugins; per-site can enable/disable\n- `syndicators` — cross-posting targets; per-site can enable/disable\n- `endpoints` — feature endpoints; per-site can enable/disable\n\n## Consumption Flow\n\n1. `indiekit-cloudron/Makefile` provides `registry-update` and `registry-status` targets\n2. `make registry-update` pulls latest from submodule's origin/main\n3. `scripts/compose-site.mjs` merges `plugin-registry.yaml` with `sites/\u003csite\u003e/config/plugins.yaml`\n   - `core` plugins are implicit (always included)\n   - Per-site `plugins.yaml` can enable/disable optional tiers\n   - Result: `.compiled/indiekit.config.js` with merged plugin list\n4. Cloudron's `Dockerfile` installs all `package` names from all tiers\n\n## Overridden Plugins\n\nEntries with `overridden: true` have NO `version:` field here. Their versions live in `indiekit-cloudron/package.json`'s `overrides` section:\n\n```json\n{\n  \"overrides\": {\n    \"@indiekit/endpoint-auth\": \"npm:@rmdes/indiekit-endpoint-auth@^1.0.0-beta.30\",\n    \"@indiekit/endpoint-share\": \"npm:@rmdes/indiekit-endpoint-share@^1.0.3\"\n  }\n}\n```\n\nWhen npm resolves the upstream package name, it installs the fork under the same name. The default plugin loader calls `import(\"@indiekit/endpoint-share\")` and gets the fork's code transparently.\n\n**Rule:** Do NOT bump version for `overridden: true` entries here; instead, update the override in `indiekit-cloudron/package.json`.\n\n## How to Bump a Plugin Version\n\n### Non-overridden plugins\n\n1. Edit `plugin-registry.yaml`, update the `version:` field for the plugin\n2. Run `node scripts/validate.mjs` to verify\n3. Commit and push to origin/main\n4. In `indiekit-cloudron`, update the submodule pointer:\n   ```bash\n   make registry-update\n   git add plugin-registry\n   git commit -m \"chore: bump plugin-registry to \u003cnewcommit\u003e\"\n   ```\n\n### Overridden plugins\n\n1. **Do NOT edit `plugin-registry.yaml`** — the entry stays at `overridden: true` with no version\n2. Update the override in `indiekit-cloudron/package.json`:\n   ```json\n   {\n     \"overrides\": {\n       \"@indiekit/endpoint-auth\": \"npm:@rmdes/indiekit-endpoint-auth@^1.0.0-beta.31\"\n     }\n   }\n   ```\n3. Commit in `indiekit-cloudron`, then build and deploy as normal\n\n## How to Add a New Plugin\n\n1. Add a new entry to the appropriate tier in `plugin-registry.yaml`\n2. Set `default_enabled: false` unless it's truly universal\n3. If the plugin is a helper library (imported by other plugins, not a plugin itself), set `library: true`\n4. Run `node scripts/validate.mjs` to verify schema compliance\n5. Commit, push to origin/main\n6. In `indiekit-cloudron`, update submodule: `make registry-update \u0026\u0026 git add plugin-registry`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmdes%2Findiekit-plugin-registry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frmdes%2Findiekit-plugin-registry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmdes%2Findiekit-plugin-registry/lists"}