{"_id":"@axelerant/backstage-plugin-platformsh","_rev":"2-7a78afb3dd05c8da4347732f1688f4d7","name":"@axelerant/backstage-plugin-platformsh","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@axelerant/backstage-plugin-platformsh","version":"0.1.0","keywords":["backstage","plugin","platformsh","platform.sh"],"author":{"name":"zeshanziya","email":"zeshan.ziya@axelerant.com"},"license":"Apache-2.0","_id":"@axelerant/backstage-plugin-platformsh@0.1.0","maintainers":[{"name":"axl_platform","email":"platform@axelerant.com"}],"homepage":"https://github.com/axelerant/backstage-plugins","bugs":{"url":"https://github.com/axelerant/backstage-plugins/issues"},"dist":{"shasum":"5b8dbb3f7c7cc8738ff2b1a60edc682a711bfe16","tarball":"https://registry.npmjs.org/@axelerant/backstage-plugin-platformsh/-/backstage-plugin-platformsh-0.1.0.tgz","fileCount":30,"integrity":"sha512-o0hvAzNRNNwX8YStoNAV/QEQcGECZEkRLMZeQGwLwSV7sewAN0gWjuuKwsIbJ5zi6t9kP6y3V2B+RIRZvVK5iQ==","signatures":[{"sig":"MEUCICpIUa6D/zEtJFaDHYE3WN6/kiwhPStjhWempC0aSeaUAiEAttVaf0dk4DTM6ZysKD4jItA/cBCohEK0sL866vT7a/s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":57605},"main":"src/index.ts","types":"src/index.ts","exports":{".":"./src/index.ts","./alpha":"./src/alpha.tsx","./package.json":"./package.json"},"gitHead":"e5c76c55784beabf2dafe22b8b9353568c9ecd02","scripts":{"lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack"},"_npmUser":{"name":"axl_platform","email":"platform@axelerant.com"},"backstage":{"role":"frontend-plugin","pluginId":"platformsh","pluginPackages":["@axelerant/backstage-plugin-platformsh","@axelerant/backstage-plugin-platformsh-backend","@axelerant/backstage-plugin-platformsh-common"]},"repository":{"url":"git+https://github.com/axelerant/backstage-plugins.git","type":"git","directory":"plugins/platformsh"},"_npmVersion":"10.2.4","description":"Backstage frontend plugin for Platform.sh integration!","directories":{},"sideEffects":false,"_nodeVersion":"20.11.0","dependencies":{"react-use":"^17.2.4","@backstage/theme":"^0.5.6","@material-ui/lab":"^4.0.0-alpha.61","@material-ui/core":"^4.9.13","@material-ui/icons":"^4.9.1","@backstage/catalog-model":"^1.6.0","@backstage/core-compat-api":"^0.2.8","@backstage/core-components":"^0.14.10","@backstage/core-plugin-api":"^1.9.3","@backstage/frontend-plugin-api":"^0.7.0","@backstage/plugin-catalog-react":"^1.12.3","@backstage/plugin-permission-react":"^0.4.25","@axelerant/backstage-plugin-platformsh-common":"^0.1.0"},"publishConfig":{"main":"dist/index.esm.js","types":"dist/index.d.ts","access":"public"},"typesVersions":{"*":{"alpha":["src/alpha.tsx"],"package.json":["package.json"]}},"_hasShrinkwrap":false,"devDependencies":{"msw":"^1.0.0","react":"^16.13.1 || ^17.0.0 || ^18.0.0","@backstage/cli":"^0.27.0","@backstage/dev-utils":"^1.0.37","@backstage/test-utils":"^1.5.10","@testing-library/react":"^14.0.0","@backstage/core-app-api":"^1.14.2","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0"},"peerDependencies":{"react":"^16.13.1 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/backstage-plugin-platformsh_0.1.0_1727159328521_0.44340150009491786","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@axelerant/backstage-plugin-platformsh","version":"0.1.1","keywords":["backstage","plugin","platformsh","platform.sh"],"author":{"name":"zeshanziya","email":"zeshan.ziya@axelerant.com"},"license":"Apache-2.0","_id":"@axelerant/backstage-plugin-platformsh@0.1.1","maintainers":[{"name":"axl_platform","email":"platform@axelerant.com"}],"homepage":"https://github.com/axelerant/backstage-plugins","bugs":{"url":"https://github.com/axelerant/backstage-plugins/issues"},"dist":{"shasum":"28e1dd1de1a7433f1905e18a3bc82072fe9e789f","tarball":"https://registry.npmjs.org/@axelerant/backstage-plugin-platformsh/-/backstage-plugin-platformsh-0.1.1.tgz","fileCount":33,"integrity":"sha512-Xrvnog7De9TUkudueKxY92iYyxR1fZqVPENgBYKXgHLxm2Xalh+DoZuPOEySZJ4sZgnUxNhYfrRBqImySJCXhg==","signatures":[{"sig":"MEUCIQDR+dImth72vM7u3HRSPDt6ZPJsYS3/MkRBiDXwld53UQIgUAXkKsVEporxW7uDqI7dYPpdwq6mYAMCAbSYCQxEdYw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":71224},"main":"src/index.ts","types":"src/index.ts","exports":{".":"./src/index.ts","./alpha":"./src/alpha.tsx","./package.json":"./package.json"},"gitHead":"61e8770457a9e10c696f8876833ec82da969a894","scripts":{"lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack"},"_npmUser":{"name":"axl_platform","email":"platform@axelerant.com"},"backstage":{"role":"frontend-plugin","pluginId":"platformsh","pluginPackages":["@axelerant/backstage-plugin-platformsh","@axelerant/backstage-plugin-platformsh-backend","@axelerant/backstage-plugin-platformsh-common"]},"repository":{"url":"git+https://github.com/axelerant/backstage-plugins.git","type":"git","directory":"plugins/platformsh"},"_npmVersion":"10.7.0","description":"Backstage frontend plugin for Platform.sh integration!","directories":{},"sideEffects":false,"_nodeVersion":"18.20.4","dependencies":{"react-use":"^17.2.4","@backstage/theme":"^0.5.6","@material-ui/lab":"^4.0.0-alpha.61","@material-ui/core":"^4.9.13","@material-ui/icons":"^4.9.1","@backstage/catalog-model":"^1.6.0","@backstage/core-compat-api":"^0.2.8","@backstage/core-components":"^0.14.10","@backstage/core-plugin-api":"^1.9.3","@backstage/frontend-plugin-api":"^0.7.0","@backstage/plugin-catalog-react":"^1.12.3","@backstage/plugin-permission-react":"^0.4.25","@axelerant/backstage-plugin-platformsh-common":"^0.1.1"},"publishConfig":{"main":"dist/index.esm.js","types":"dist/index.d.ts","access":"public"},"typesVersions":{"*":{"alpha":["src/alpha.tsx"],"package.json":["package.json"]}},"_hasShrinkwrap":false,"devDependencies":{"msw":"^1.0.0","react":"^16.13.1 || ^17.0.0 || ^18.0.0","@backstage/cli":"^0.27.0","@backstage/dev-utils":"^1.0.37","@backstage/test-utils":"^1.5.10","@testing-library/react":"^14.0.0","@backstage/core-app-api":"^1.14.2","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0"},"peerDependencies":{"react":"^16.13.1 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/backstage-plugin-platformsh_0.1.1_1727262412876_0.653471140413532","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"@axelerant/backstage-plugin-platformsh","version":"0.1.2","description":"Backstage frontend plugin for Platform.sh integration!","license":"Apache-2.0","exports":{".":"./src/index.ts","./alpha":"./src/alpha.tsx","./package.json":"./package.json"},"main":"src/index.ts","types":"src/index.ts","typesVersions":{"*":{"alpha":["src/alpha.tsx"],"package.json":["package.json"]}},"publishConfig":{"access":"public","main":"dist/index.esm.js","types":"dist/index.d.ts"},"backstage":{"role":"frontend-plugin","pluginId":"platformsh","pluginPackages":["@axelerant/backstage-plugin-platformsh","@axelerant/backstage-plugin-platformsh-backend","@axelerant/backstage-plugin-platformsh-common"]},"keywords":["backstage","plugin","platformsh","platform.sh"],"homepage":"https://github.com/axelerant/backstage-plugins","repository":{"type":"git","url":"git+https://github.com/axelerant/backstage-plugins.git","directory":"plugins/platformsh"},"author":{"name":"zeshanziya","email":"zeshan.ziya@axelerant.com"},"sideEffects":false,"scripts":{"start":"backstage-cli package start","build":"backstage-cli package build","lint":"backstage-cli package lint","test":"backstage-cli package test","clean":"backstage-cli package clean","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack"},"dependencies":{"@axelerant/backstage-plugin-platformsh-common":"^0.1.2","@backstage/catalog-model":"^1.6.0","@backstage/core-compat-api":"^0.2.8","@backstage/core-components":"^0.14.10","@backstage/core-plugin-api":"^1.9.3","@backstage/frontend-plugin-api":"^0.7.0","@backstage/plugin-catalog-react":"^1.12.3","@backstage/plugin-permission-react":"^0.4.25","@backstage/theme":"^0.5.6","@material-ui/core":"^4.9.13","@material-ui/icons":"^4.9.1","@material-ui/lab":"^4.0.0-alpha.61","react-use":"^17.2.4"},"peerDependencies":{"react":"^16.13.1 || ^17.0.0 || ^18.0.0"},"devDependencies":{"@backstage/cli":"^0.27.0","@backstage/core-app-api":"^1.14.2","@backstage/dev-utils":"^1.0.37","@backstage/test-utils":"^1.5.10","@testing-library/jest-dom":"^6.0.0","@testing-library/react":"^14.0.0","@testing-library/user-event":"^14.0.0","msw":"^1.0.0","react":"^16.13.1 || ^17.0.0 || ^18.0.0"},"_id":"@axelerant/backstage-plugin-platformsh@0.1.2","gitHead":"2b9305cb330d99e3c4e92ad11969d984df29198c","bugs":{"url":"https://github.com/axelerant/backstage-plugins/issues"},"_nodeVersion":"18.20.6","_npmVersion":"10.8.2","dist":{"integrity":"sha512-WO3By01ZfAol2mui+TcBWw4nEpkIG9nmUOpq7YjkkLbYuq1rLU7eadIDS0/ApyDkxR09tBFiwIDgx5bS+Oas7A==","shasum":"8664b504ea13ec7d91b037b7b12046d383b15df6","tarball":"https://registry.npmjs.org/@axelerant/backstage-plugin-platformsh/-/backstage-plugin-platformsh-0.1.2.tgz","fileCount":33,"unpackedSize":71555,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDRdi30end4vyNS7l+qpZiksDbEK31uDKt6N8e+RXM6BQIgUTi0z6HVZjVMP8IzeOlM+zEIHlMSm1TVvIcT2ZmT0uQ="}]},"_npmUser":{"name":"axl_platform","email":"platform@axelerant.com"},"directories":{},"maintainers":[{"name":"axl_platform","email":"platform@axelerant.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/backstage-plugin-platformsh_0.1.2_1740371409446_0.462285293206802"},"_hasShrinkwrap":false}},"time":{"created":"2024-09-24T06:28:48.408Z","modified":"2025-02-24T04:30:09.811Z","0.1.0":"2024-09-24T06:28:48.723Z","0.1.1":"2024-09-25T11:06:53.136Z","0.1.2":"2025-02-24T04:30:09.615Z"},"bugs":{"url":"https://github.com/axelerant/backstage-plugins/issues"},"author":{"name":"zeshanziya","email":"zeshan.ziya@axelerant.com"},"license":"Apache-2.0","homepage":"https://github.com/axelerant/backstage-plugins","keywords":["backstage","plugin","platformsh","platform.sh"],"repository":{"type":"git","url":"git+https://github.com/axelerant/backstage-plugins.git","directory":"plugins/platformsh"},"description":"Backstage frontend plugin for Platform.sh integration!","maintainers":[{"name":"axl_platform","email":"platform@axelerant.com"}],"readme":"# Backstage Platform.sh Plugin\n\nA Backstage plugin that retrieves project details and environment data from Platform.sh.\n\n## Current Features\n\n- A page to list all projects from Platform.sh.\n- An entity card to display the current project details.\n- An entity card to display all environments for the current project.\n- Options to resume, pause, activate, deactivate, or delete development environments.\n- Permission support for environment actions.\n- Support for New Front End system\n\n## Future Development Plans\n\n- Display environment activities and logs\n- Create and deploy new or existing branches\n- Add a scaffolder action for deploying new services\n- Display metrics (Currently, there is no API endpoint available for this. Once available, we can consider adding it)\n\n## Setup\n\nThe following sections will guide you through setting up and running the Platform.sh plugin.\n\n### Platform.sh Backend\n\nBefore proceeding, ensure that you have set up the [Platform.sh Backend plugin](https://github.com/axelerant/backstage-plugins/tree/main/plugins/platformsh-backend).\n\n### Entity Annotation\n\nTo use the Platform.sh plugin, add the following annotation to the entities you want to associate with Platform.sh:\n\n```yaml\nplatform.sh/project-id: <platformsh-project-id>\n```\n\n### Installation\n\nTo get the Platform.sh component working, follow these steps:\n\n1. First, add the `@axelerant/backstage-plugin-platformsh` package to your frontend app:\n\n   ```bash\n   # From your Backstage root directory\n   yarn --cwd packages/app add @axelerant/backstage-plugin-platformsh\n   ```\n\n2. The Platform.sh plugin provides a page component to list all projects from Platform.sh.\n\n   - Add a route to `App.tsx`:\n\n     ```ts\n     // Import the page component\n     import { PlatformshPage } from '@axelerant/backstage-plugin-platformsh';\n\n     // Add the route\n     <Route path=\"/platformsh\" element={<PlatformshPage />} />;\n     ```\n\n   - Add a menu item to the sidebar in `Root.tsx`:\n\n     ```ts\n     // Import an icon\n     import StorageIcon from '@material-ui/icons/Storage';\n\n     // Add to the sidebar items list\n     <SidebarItem icon={StorageIcon} to=\"platformsh\" text=\"Platform.sh\" />;\n     ```\n\n3. The Platform.sh plugin provides an entity tab component named `EntityPlatformshContents`.\n\n   ```ts\n   // At the top imports\n   import { EntityPlatformshContents } from '@axelerant/backstage-plugin-platformsh';\n\n   // Add the tab to any entity page, using the service entity page as an example.\n   const serviceEntityPage = (\n     <EntityLayout>\n       {/* other tabs... */}\n       <EntityLayout.Route path=\"/platformsh\" title=\"Platform.sh\">\n         <EntityPlatformshContents />\n       </EntityLayout.Route>\n     </EntityLayout>\n   );\n   ```\n\n**Note:** This requires entities to have the Platform.sh annotation `platform.sh/project-id: <project-id>`. If not set, a missing annotation warning will be displayed.\n\nTo display the tab only for entities where `platform.sh/project-id: <project-id>` is available, the plugin provides a conditional export `isPlatformshAvailable`.\n\n```ts\n// At the top imports\nimport {\n  EntityPlatformshContents,\n  isPlatformshAvailable,\n} from '@axelerant/backstage-plugin-platformsh';\n\n// Add the tab conditionally based on annotation availability\nconst serviceEntityPage = (\n  <EntityLayout>\n    {/* other tabs... */}\n    <EntityLayout.Route\n      path=\"/platformsh\"\n      title=\"Platform.sh\"\n      if={isPlatformshAvailable}\n    >\n      <EntityPlatformshContents />\n    </EntityLayout.Route>\n  </EntityLayout>\n);\n```\n","readmeFilename":"README.md"}