{"id":15292481,"url":"https://github.com/scott-the-programmer/backstage-plugin-spacelift","last_synced_at":"2025-04-13T10:31:22.006Z","repository":{"id":149918473,"uuid":"622090622","full_name":"scott-the-programmer/backstage-plugin-spacelift","owner":"scott-the-programmer","description":"Bring spacelift to backstage!","archived":false,"fork":false,"pushed_at":"2024-10-25T11:46:51.000Z","size":4906,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-30T06:34:33.620Z","etag":null,"topics":["backstage","spacelift","terraform","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scott-the-programmer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2023-04-01T04:59:01.000Z","updated_at":"2024-09-29T09:13:38.000Z","dependencies_parsed_at":"2023-09-23T12:41:08.649Z","dependency_job_id":"e35e8253-83fd-48d6-8e87-356f4beac296","html_url":"https://github.com/scott-the-programmer/backstage-plugin-spacelift","commit_stats":{"total_commits":115,"total_committers":3,"mean_commits":"38.333333333333336","dds":0.408695652173913,"last_synced_commit":"694880337af00641aedf68ce089a8c8851665475"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scott-the-programmer%2Fbackstage-plugin-spacelift","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scott-the-programmer%2Fbackstage-plugin-spacelift/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scott-the-programmer%2Fbackstage-plugin-spacelift/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scott-the-programmer%2Fbackstage-plugin-spacelift/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scott-the-programmer","download_url":"https://codeload.github.com/scott-the-programmer/backstage-plugin-spacelift/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248698859,"owners_count":21147543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["backstage","spacelift","terraform","typescript"],"created_at":"2024-09-30T16:18:08.473Z","updated_at":"2025-04-13T10:31:21.672Z","avatar_url":"https://github.com/scott-the-programmer.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spacelift Backstage Plugins\n\n[![Maintainability](https://api.codeclimate.com/v1/badges/65206b49b30dfc4e2312/maintainability)](https://codeclimate.com/github/scott-the-programmer/backstage-plugin-spacelift/maintainability)\n\nbackstage-plugin-spacelift: [![npm version](https://badge.fury.io/js/%40scott-the-programmer%2Fbackstage-plugin-spacelift.svg)](https://www.npmjs.com/package/@scott-the-programmer/backstage-plugin-spacelift)\n\nbackstage-plugin-spacelift-backend: [![npm version](https://badge.fury.io/js/%40scott-the-programmer%2Fbackstage-plugin-spacelift-backend.svg)](https://www.npmjs.com/package/@scott-the-programmer/backstage-plugin-spacelift-backend)\n\nAn unofficial Backstage plugin for [Spacelift](https://spacelift.io) to view statuses of runs and stacks through [Backstage](https://backstage.io)\n\nThis repository contains two Backstage plugins for integrating with the Spacelift platform:\n\n- `spacelift`: a plugin that displays a table of all Spacelift stacks and runs\n- `spacelift-backend`: a plugin that provides a simple wrapper for the Spacelift API.\n\n*Disclaimer: I do not work for Spacelift.io. I am simply interested in the tool and want to make a part of it accessible via backstage*\n\n![Stacks](https://raw.githubusercontent.com/scott-the-programmer/backstage-plugin-spacelift/main/docs/stacks.png)\n\n![Runs](https://raw.githubusercontent.com/scott-the-programmer/backstage-plugin-spacelift/main/docs/runs.png)\n\n## Installation\n\nTo use these plugins, you'll first need to install them in your Backstage app.\n\n```console\nyarn add @scott-the-programmer/backstage-plugin-spacelift @scott-the-programmer/backstage-plugin-spacelift-backend\n```\n\n### Backend\n\nCreate the following file under `packages/backend/src/plugins/spacelift.ts`\n\n```typescript\nimport { createRouter } from '@scott-the-programmer/backstage-plugin-spacelift-backend';\nimport { Router } from 'express';\nimport { PluginEnvironment } from '../types';\n\nexport default async function createPlugin({\n  logger,\n  config,\n}: PluginEnvironment): Promise\u003cRouter\u003e {\n  return await createRouter({ logger: logger, config: config });\n}\n```\n\nAdd the following snippets to `packages/backend/src/index.ts`\n\n```typescript\nimport spacelift from './plugins/spacelift';\n...\nconst spaceliftEnv = useHotMemoize(module, () =\u003e createEnv('spacelift'));\n...\n  apiRouter.use('/spacelift', await spacelift(spaceliftEnv));\n```\n\n### Frontend\n\nAdd the following snippets to packages/app/src/App.tsx\n\n```tsx\nimport { SpaceliftPage } from '@scott-the-programmer/backstage-plugin-spacelift';\n...\n\u003cRoute path=\"/spacelift\" element={\u003cSpaceliftPage /\u003e} /\u003e\n```\n\nAdd the following snippets to Root.tsx to add spacelift to the home sidebar\n\n```tsx\n\u003cSidebarItem icon={LibraryBooks} to=\"spacelift\" text=\"Spacelift\" /\u003e\n```\n\n### Config\n\nAdd the following config to your app-config.yaml\n\n```\nspacelift:\n  org: your-spacelift-org\n  id: your-spacelift-id\n  secret: your-spacelift-secret\n```\n\n## Contributing\n\nFeel free to contribute to this project in any shape or form, whether it's raising issues, feature requests, or even creating PRs yourself. \n\nAny help is appreciated!\n\n### Install Dependencies\n\nInstall the frontend dependencies:\n\n```console\nmake install-frontend\n```\nInstall the backend dependencies:\n\n```console\nmake install-backend\n```\n\n### Development\n\nRun the frontend development server:\n\n```console\nmake run-frontend\n```\n\nRun the backend development server:\n\n```console\nmake run-backend\n```\n\nRun the frontend tests:\n\n```console\nmake test-frontend\n```\n\nRun the backend tests:\n\n```console\nmake test-backend\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscott-the-programmer%2Fbackstage-plugin-spacelift","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscott-the-programmer%2Fbackstage-plugin-spacelift","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscott-the-programmer%2Fbackstage-plugin-spacelift/lists"}