0.7.4 • Published 18 days ago

@backstage/plugin-tech-radar v0.7.4

Weekly downloads
3,523
License
Apache-2.0
Repository
github
Last release
18 days ago

@backstage/plugin-tech-radar

The Backstage integration for the Tech Radar based on Zalando's Tech Radar open sourced on GitHub. This is used at Spotify for visualizing the official guidelines of different areas of software development such as languages, frameworks, infrastructure and processes.

Read the blog post on backstage.io about the Tech Radar.

Purpose

Zalando has a fantastic description on their website:

The Tech Radar is a tool to inspire and support engineering teams at Zalando to pick the best technologies for new projects; it provides a platform to share knowledge and experience in technologies, to reflect on technology decisions and continuously evolve our technology landscape. Based on the pioneering work of ThoughtWorks, our Tech Radar sets out the changes in technologies that are interesting in software development — changes that we think our engineering teams should pay attention to and consider using in their projects.

It serves and scales well for teams and companies of all sizes that want to have alignment across dozens of technologies and visualize it in a simple way.

Getting Started

The Tech Radar can be used in two ways:

  • Simple (Recommended) - This gives you an out-of-the-box Tech Radar experience. It lives on the /tech-radar URL of your Backstage installation, and you can set a variety of configuration directly in your apis.ts.
  • Advanced - This gives you the React UI component directly. It enables you to insert the Radar on your own layout or page for a more customized feel.

Install

For either simple or advanced installations, you'll need to add the dependency using Yarn:

yarn add @backstage/plugin-tech-radar

Configuration

Modify your app routes to include the Router component exported from the tech radar, for example:

import { Router as TechRadarRouter } from '@backstage/plugin-tech-radar';

// Inside App component
<Routes>
  {/* other routes ... */}
  <Route
    path="/tech-radar"
    element={<TechRadarRouter width={1500} height={800} />}
  />
  {/* other routes ... */}
</Routes>;

If you'd like to configure it more, see the TechRadarPageProps and TechRadarComponentProps types for options:

export type TechRadarPageProps = TechRadarComponentProps & {
  title?: string;
  subtitle?: string;
  pageTitle?: string;
};

export interface TechRadarPageProps {
  width: number;
  height: number;
  getData?: () => Promise<TechRadarLoaderResponse>;
  svgProps?: object;
}

Frequently Asked Questions

Who created the Tech Radar?

ThoughtWorks created the Tech Radar concept, and Zalando created the visualization that we use at Spotify and in this plugin.

How do I load in my own data?

It's simple, you can pass through a getData prop which expects a Promise<TechRadarLoaderResponse> signature.

Here's an example:

const getHardCodedData = () =>
  Promise.resolve({
    quadrants: [{ id: 'infrastructure', name: 'Infrastructure' }],
    rings: [{ id: 'use', name: 'USE', color: '#93c47d' }],
    entries: [
      {
        moved: 0,
        ring: 'use',
        url: '#',
        key: 'github-actions',
        id: 'github-actions',
        title: 'GitHub Actions',
        quadrant: 'infrastructure',
      },
    ],
  });

<TechRadarComponent width={1400} height={800} getData={getHardCodedData} />;

How do I write tests?

You can use the svgProps option to pass custom React props to the <svg> element we create for the Tech Radar. This complements well with the data-testid attribute and the @testing-library/react library we use in Backstage.

<TechRadarComponent
  width={1400}
  height={800}
  svgProps={{
    'data-testid': 'tech-radar-svg',
  }}
/>

// Then, in your tests...
// const { getByTestId } = render(...);
// expect(getByTestId('tech-radar-svg')).toBeInTheDocument();
0.7.4

21 days ago

0.7.3

23 days ago

0.7.3-next.1

1 month ago

0.7.3-next.0

1 month ago

0.7.2

1 month ago

0.7.1

2 months ago

0.7.0

2 months ago

0.7.0-next.2

2 months ago

0.6.14-next.1

2 months ago

0.6.14-next.0

2 months ago

0.6.13

3 months ago

0.6.13-next.3

3 months ago

0.6.13-next.2

3 months ago

0.6.13-next.1

3 months ago

0.6.13-next.0

4 months ago

0.6.12

4 months ago

0.6.12-next.2

4 months ago

0.6.12-next.1

4 months ago

0.6.12-next.0

5 months ago

0.6.11

5 months ago

0.6.11-next.4

5 months ago

0.6.11-next.3

5 months ago

0.6.11-next.2

5 months ago

0.6.8-next.0

9 months ago

0.6.8-next.1

8 months ago

0.6.8-next.2

8 months ago

0.6.8-next.3

8 months ago

0.6.11-next.1

6 months ago

0.6.11-next.0

6 months ago

0.6.6-next.1

10 months ago

0.6.6-next.2

10 months ago

0.6.10-next.0

7 months ago

0.6.10-next.1

6 months ago

0.6.10-next.2

6 months ago

0.6.7

9 months ago

0.6.6

10 months ago

0.6.9

7 months ago

0.6.8

8 months ago

0.6.9-next.0

8 months ago

0.6.9-next.2

7 months ago

0.6.9-next.1

7 months ago

0.6.10

6 months ago

0.6.7-next.0

10 months ago

0.6.6-next.0

11 months ago

0.6.5

11 months ago

0.6.5-next.3

11 months ago

0.6.5-next.2

11 months ago

0.6.4-next.1

1 year ago

0.6.4-next.2

1 year ago

0.6.4

12 months ago

0.6.5-next.0

12 months ago

0.6.5-next.1

12 months ago

0.6.4-next.0

1 year ago

0.6.3

1 year ago

0.6.3-next.3

1 year ago

0.6.2-next.2

1 year ago

0.6.2-next.1

1 year ago

0.6.2

1 year ago

0.6.2-next.0

1 year ago

0.6.1

1 year ago

0.6.3-next.1

1 year ago

0.6.3-next.2

1 year ago

0.6.3-next.0

1 year ago

0.6.0

1 year ago

0.6.1-next.0

1 year ago

0.6.1-next.1

1 year ago

0.6.0-next.2

1 year ago

0.5.21-next.1

1 year ago

0.5.19-next.3

1 year ago

0.5.19-next.4

1 year ago

0.5.19-next.1

1 year ago

0.5.19-next.2

1 year ago

0.5.19-next.0

1 year ago

0.5.18

1 year ago

0.5.19

1 year ago

0.5.17

2 years ago

0.5.20

1 year ago

0.5.18-next.1

2 years ago

0.5.18-next.0

2 years ago

0.5.21-next.0

1 year ago

0.5.17-next.0

2 years ago

0.5.17-next.1

2 years ago

0.5.17-next.2

2 years ago

0.5.16-next.3

2 years ago

0.5.16-next.2

2 years ago

0.5.16-next.1

2 years ago

0.5.16-next.0

2 years ago

0.5.16

2 years ago

0.5.14

2 years ago

0.5.15

2 years ago

0.5.13

2 years ago

0.5.15-next.1

2 years ago

0.5.13-next.0

2 years ago

0.5.13-next.1

2 years ago

0.5.15-next.0

2 years ago

0.5.14-next.0

2 years ago

0.5.14-next.1

2 years ago

0.5.14-next.2

2 years ago

0.5.14-next.3

2 years ago

0.5.12-next.0

2 years ago

0.5.12

2 years ago

0.5.10

2 years ago

0.5.11

2 years ago

0.5.11-next.2

2 years ago

0.5.11-next.1

2 years ago

0.5.11-next.0

2 years ago

0.5.9-next.0

2 years ago

0.5.9

2 years ago

0.5.8

2 years ago

0.5.5-next.0

2 years ago

0.4.13

2 years ago

0.5.3-next.0

2 years ago

0.5.4

2 years ago

0.5.3

2 years ago

0.5.6

2 years ago

0.5.5

2 years ago

0.5.0

2 years ago

0.5.2

2 years ago

0.5.1

2 years ago

0.5.7

2 years ago

0.5.4-next.0

2 years ago

0.4.12

2 years ago

0.4.10

3 years ago

0.4.11

3 years ago

0.4.9

3 years ago

0.4.8

3 years ago

0.4.7

3 years ago

0.4.6

3 years ago

0.4.5

3 years ago

0.4.4

3 years ago

0.4.3

3 years ago

0.4.2

3 years ago

0.4.1

3 years ago

0.4.0

3 years ago

0.3.11

3 years ago

0.3.10

3 years ago

0.3.9

3 years ago

0.3.8

3 years ago

0.3.7

3 years ago

0.3.6

3 years ago

0.3.5

3 years ago

0.3.4

3 years ago

0.3.3

3 years ago

0.3.2

3 years ago

0.3.1

3 years ago

0.3.0

3 years ago

0.2.0

4 years ago

0.1.1

4 years ago

0.1.1-alpha.26

4 years ago

0.1.1-alpha.25

4 years ago

0.1.1-alpha.24

4 years ago

0.1.1-alpha.23

4 years ago

0.1.1-alpha.22

4 years ago

0.1.1-alpha.21

4 years ago

0.1.1-alpha.20

4 years ago

0.1.1-alpha.19

4 years ago

0.1.1-alpha.18

4 years ago

0.1.1-alpha.17

4 years ago

0.1.1-alpha.16

4 years ago

0.1.1-alpha.15

4 years ago

0.1.1-alpha.14

4 years ago

0.1.1-alpha.13

4 years ago

0.1.1-alpha.12

4 years ago

0.1.1-alpha.11

4 years ago

0.1.1-alpha.10

4 years ago

0.1.1-alpha.9

4 years ago

0.1.1-alpha.8

4 years ago

0.1.1-alpha.7

4 years ago

0.1.1-alpha.6

4 years ago