{"_id":"@astropress-diy/nexus","_rev":"2-f8fc80e9e24bb212a232f378728be2ab","name":"@astropress-diy/nexus","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"@astropress-diy/nexus","version":"0.0.1","license":"MIT","_id":"@astropress-diy/nexus@0.0.1","maintainers":[{"name":"astropress.diy","email":"hello@astropress.diy"}],"bin":{"astropress-nexus":"dist/server.js"},"dist":{"shasum":"f1b315499ef16efec1ed2ef7b9472a5c3952172f","tarball":"https://registry.npmjs.org/@astropress-diy/nexus/-/nexus-0.0.1.tgz","fileCount":45,"integrity":"sha512-2vJ2icpKJe5ZnClQpxIXqkHgNoXregdd3wE2CrNWPuvo8vgHPHxybpO50S3pOQg6PffrGspO39k6eyhIiPccpA==","signatures":[{"sig":"MEUCIDsmR8Stn2GFtgaiS9rUI0BE4PlpsL1WT7CHrS12GH8mAiEAhMkuG2Vl+aLAKgjpImVUV2PxKBLIoTiomuxv+c0CaoE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86834},"main":"./dist/index.js","type":"module","shasum":"f1b315499ef16efec1ed2ef7b9472a5c3952172f","engines":{"node":">=24.8.0"},"exports":{".":"./dist/index.js"},"scripts":{"dev":"bun run src/server.ts","test":"bunx vitest run","build":"tsc --project tsconfig.json","start":"node dist/server.js"},"_npmUser":{"name":"astropress.diy","email":"hello@astropress.diy"},"_integrity":"sha512-2vJ2icpKJe5ZnClQpxIXqkHgNoXregdd3wE2CrNWPuvo8vgHPHxybpO50S3pOQg6PffrGspO39k6eyhIiPccpA==","_npmVersion":"10.8.3","description":"Multi-site gateway for Astropress — a single control plane over multiple Astropress sites","directories":{},"_nodeVersion":"24.3.0","dependencies":{"hono":"^4.6.0","@hono/node-server":"^1.19.13"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nexus_0.0.1_1776145007976_0.24821679042085854","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@astropress-diy/nexus","version":"0.0.3","description":"Multi-site gateway for Astropress — a single control plane over multiple Astropress sites","type":"module","bin":{"astropress-nexus":"dist/server.js"},"main":"./dist/index.js","exports":{".":"./dist/index.js"},"scripts":{"build":"tsc --project tsconfig.json","prepublishOnly":"bun run build","start":"node dist/server.js","dev":"bun run src/server.ts","test":"bunx vitest run"},"dependencies":{"@hono/node-server":"^1.19.13","hono":"^4.6.0"},"devDependencies":{"typescript":"^6.0.2","vitest":"^4.1.4","@types/node":"^22.0.0"},"engines":{"node":">=24.8.0"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Astropress/astropress.git"},"bugs":{"url":"https://github.com/Astropress/astropress/issues"},"homepage":"https://astropress.diy","_id":"@astropress-diy/nexus@0.0.3","gitHead":"d0b80be02e172bcf54401e1afdeec11d78711e35","types":"./dist/index.d.ts","_nodeVersion":"24.8.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-Mu9xt9+kWFrzAVjtI7NSew+oEkMtMEGTNz1M+bPOgxhJE74GFCLC0gLsN6nhha2vj82w+d7gyXTTaFm8L+940w==","shasum":"24e973e30f318a11156ce4123b2e9be58c019df1","tarball":"https://registry.npmjs.org/@astropress-diy/nexus/-/nexus-0.0.3.tgz","fileCount":46,"unpackedSize":90184,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@astropress-diy%2fnexus@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDWd5DVLOX/ItPcGgRMz+5FcYhbS0Qy7dabVsbfCD/ZfAiEA9+Ikyy2YYyfgyRZhBpuzTYxdX45nLEo42Jr9dlkWmzo="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:692214fd-85d9-4328-ab6e-753742c057e5"}},"directories":{},"maintainers":[{"name":"astropress.diy","email":"hello@astropress.diy"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nexus_0.0.3_1776242598493_0.33654693983791706"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-14T05:36:47.864Z","modified":"2026-04-15T08:43:18.953Z","0.0.1":"2026-04-14T05:36:48.100Z","0.0.3":"2026-04-15T08:43:18.648Z"},"license":"MIT","description":"Multi-site gateway for Astropress — a single control plane over multiple Astropress sites","maintainers":[{"name":"astropress.diy","email":"hello@astropress.diy"}],"readme":"# @astropress-diy/nexus\n\nMulti-site gateway for [Astropress](https://astropress.diy) — a single control plane over multiple Astropress sites. Aggregate content, monitor health, trigger redeployments, and run WordPress imports across your entire fleet from one place.\n\n## When to use it\n\n- You manage more than one Astropress site and want a unified dashboard\n- You need fan-out queries across sites (e.g. search all sites at once)\n- You want to trigger redeploys across multiple sites from a single action\n- You host on Cloudways, cPanel, or Hostinger and want automatic site discovery\n\n## Installation\n\n```bash\nnpm install @astropress-diy/nexus\n```\n\nOr run without installing:\n\n```bash\nnpx @astropress-diy/nexus\n```\n\n## Quick start\n\n```ts\nimport { createNexusApp } from \"@astropress-diy/nexus\";\nimport { serve } from \"@hono/node-server\";\n\nconst app = createNexusApp({\n  config: {\n    title: \"My Sites\",\n    sites: [\n      { id: \"blog\",   name: \"Blog\",        baseUrl: \"https://blog.example.com\" },\n      { id: \"docs\",   name: \"Docs\",        baseUrl: \"https://docs.example.com\" },\n      { id: \"store\",  name: \"Store\",       baseUrl: \"https://store.example.com\" },\n    ],\n  },\n  authToken: process.env.NEXUS_AUTH_TOKEN,\n});\n\nserve({ fetch: app.fetch, port: 3000 });\n```\n\nOpen `http://localhost:3000/dashboard`.\n\n## API\n\nAll routes require a `Bearer` token in the `Authorization` header (or `?token=` query param) when `authToken` is configured.\n\n### Sites\n\n| Method | Path | Description |\n|---|---|---|\n| `GET` | `/sites` | List all registered sites |\n| `GET` | `/sites/:id` | Get a single site |\n| `GET` | `/sites/:id/content` | List content on a specific site |\n| `GET` | `/sites/:id/content/:slug` | Get a content record from a specific site |\n| `GET` | `/sites/:id/media` | List media on a specific site |\n| `GET` | `/sites/:id/settings` | Get site settings |\n\n### Fleet\n\n| Method | Path | Description |\n|---|---|---|\n| `GET` | `/content` | Fan-out content query across all sites |\n| `GET` | `/metrics` | Aggregate metrics across all sites |\n| `POST` | `/actions/refresh` | Re-check health status for selected sites |\n| `POST` | `/actions/redeploy` | Trigger redeploy webhook for selected sites |\n\n### Jobs\n\n| Method | Path | Description |\n|---|---|---|\n| `POST` | `/jobs/import/wordpress` | Start a WordPress import job on a site |\n| `GET` | `/jobs` | List all import jobs |\n| `GET` | `/jobs/:id` | Get a single job |\n\n### Discovery\n\nAutomatically register sites from your hosting control panel:\n\n| Method | Path | Description |\n|---|---|---|\n| `POST` | `/connectors/cloudways/discover` | Discover sites from Cloudways |\n| `POST` | `/connectors/cpanel/discover` | Discover WordPress sites from cPanel |\n| `POST` | `/connectors/hpanel/discover` | Discover sites from Hostinger hPanel |\n\n### Dashboard\n\n| Path | Description |\n|---|---|\n| `/dashboard` | Web dashboard — search, inspect, refresh, and redeploy |\n| `/dashboard/sites/:id` | Per-site detail page with health and job history |\n\n## License\n\nMIT — see the [Astropress repository](https://github.com/astropress/astropress).\n","readmeFilename":"README.md","homepage":"https://astropress.diy","repository":{"type":"git","url":"git+https://github.com/Astropress/astropress.git"},"bugs":{"url":"https://github.com/Astropress/astropress/issues"}}