This playbook outlines the steps to create a plugin using Backstage.
- Repository for the Backstage project.
- Infer the name of the plugin from the task or feature request from the provided prompt as
<use-case>
- Navigate to the root directory of the Backstage project already set up and present in the home directory or provided by the user.
- Run
yarn new --select plugin
command to create a new plugin named<use-case>
.
- Navigate to the created directory inside plugins (
plugins/<use-case>
). - Remove the example components inside the
plugins/<use-case>/src/components
directory. - Create a new component file named
<use-case>.tsx
. - Implement the plugin-specified features in the
<use-case>.tsx
file using React.
- Update the
src/routes.ts
with plugin-id - Update the
src/plugin.ts
with the component import and plugin-id. - Update the
src/index.ts
with the plugin import. - Update the
src/types.ts
directory with the necessary components.
- Open the
dev/index.ts
file in the plugin directory. - Import and register the
<use-case>
component as a route:
- Add necessary changes in the
packages/backend/src/plugins/catalog.ts
file . - Update other necessary files in the backend to support the plugin.
- Update the
App.tsx
file in thepackages/app/src
directory. - Import the
<use-case>
component and add it to theApp.tsx
file. - Create a new route for the
<use-case>
component in the routes function.
- Import and update the plugin in the
packages/app/src/components/catalog/EntityPage.tsx
file. - Import and update the plugin in the
packages/app/src/components/Root/Root.tsx
file. - Import and update the plugin in the
packages/app/src/components/Search/SearchPage.tsx
file.
- Stop any running Backstage development servers.
- Start the Backstage development server by running
yarn dev
. - Check for the plugin on the catalog page.
- Navigate to the
<ngrok-frontend-url>/<use-case>
endpoint in the browser to test the plugin.
- Update the README.md file in the plugin directory with the following steps:
- Instructions to create a new plugin.
- Details on implementing the component.
- Any other necessary steps or changes needed by the user.
- Do not change port 3000 and port 7007 in the app-config.yaml file.
- Do not change the ports in the
app-config.yml
file of 3000 and 7007. - Never Create a fresh Backstage project for the plugin.
- Ignore the Invalid Host/Origin header error in the console while testing the plugin.
- Ignore the 101 ws error on the ngrok backend terminal.
- Never restart currently running ngrok tunnels.
- Follow the latest react and backstage conventions for creating components
https://react.dev/blog/2023/03/16/introducing-react-dev
- Do not use React.FC for any components.
- Do not push anything on GitHub.
- Keep the plugin structure organized and follow best practices.
- Utilize TypeScript for type safety and better development experience.
- Test the plugin thoroughly in a development environment before deploying it to production.
- Document any additional features or configurations provided by the plugin.
- Infer the name of the plugin from the task or feature request prompt provided.
- No need for a backend Secret