https://github.com/zalopay-oss/backstage-grpc-playground-backend
A backstage backend plugin support gRPC playground for API entities and normal requests
https://github.com/zalopay-oss/backstage-grpc-playground-backend
backstage backstage-plugin grpc protoc-gen-doc typescript
Last synced: about 1 month ago
JSON representation
A backstage backend plugin support gRPC playground for API entities and normal requests
- Host: GitHub
- URL: https://github.com/zalopay-oss/backstage-grpc-playground-backend
- Owner: zalopay-oss
- License: mit
- Created: 2022-06-03T03:15:57.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-07-31T03:49:39.000Z (over 1 year ago)
- Last Synced: 2025-03-13T00:01:45.457Z (about 1 month ago)
- Topics: backstage, backstage-plugin, grpc, protoc-gen-doc, typescript
- Language: TypeScript
- Homepage:
- Size: 95.7 KB
- Stars: 6
- Watchers: 3
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# backstage-grpc-playground-backend
    
- [**Overview**](#overview)
- [**Install**](#install)
- [**Usage**](#usage)
- [**Acknowledgements**](#acknowledgements)## Overview
This repo contains backend code of the [backstage-grpc-playground](https://github.com/zalopay-oss/backstage-grpc-playground.git)
## Install
Install backstage-grpc-playground-backend for `packages/backend`
E.g: In your backstage project root
```zsh
yarn --cwd packages/backend add backstage-grpc-playground-backend
```## Usage
#### Register the plugin in backend
Create a new file `packages/backend/src/plugins/grpc-playground.ts`
```typescript
// packages/backend/src/plugins/grpc-playground.ts
import { ScmIntegrations } from '@backstage/integration';
import { createRouter } from 'backstage-grpc-playground-backend';import { Router } from 'express';
import { PluginEnvironment } from '../types';export default async function createPlugin(
env: PluginEnvironment,
): Promise {
const { config, reader } = env;const integrations = ScmIntegrations.fromConfig(config);
return await createRouter({
logger: env.logger,
reader,
integrations,
database: env.database,
});
}
```#### Register `/grpc-playground` path in backstage backend
```typescript
// packages/backend/src/index.ts
import grpcPlayground from './plugins/grpc-playground';async function main() {
// other env
const grpcPlaygroundEnv = useHotMemoize(module, () => createEnv('grpc-playground'));
// init router
// ...// register before notFoundHandler
apiRouter.use('/grpc-playground', await grpcPlayground(grpcPlaygroundEnv));// not found handler
apiRouter.use(notFoundHandler());
}
```## Examples
See [examples](https://github.com/zalopay-oss/backstage-grpc-playground#examples)
## Acknowledgements
- Thanks to [Backstage Team](https://github.com/backstage/backstage) for creating an incredable framework
- Thanks to the authors of the awesome [BloomRPC Application](https://github.com/bloomrpc/bloomrpc)
- Feel free to [submit new issues](https://github.com/zalopay-oss/backstage-grpc-playground-backend/issues/new)