Zalando Tech Radar

repository·master·Indexed 23 days ago

https://github.com/zalando/tech-radar

A tool for generating a visual Tech Radar based on the ThoughtWorks model using d3.js to render an interactive SVG visualization. Version 2024.1.0 provides the radar_visualization() function to configure quadrants, rings, and technology entries to align engineering teams on technology choices.

Tokens
1.3K
Snippets
3
Records
3
Agent score
34%

What's inside zalando-tech-radar

  1. Set up local development environment

    master

    To run the Tech Radar locally for development:

    1. Install dependencies using yarn or npm:
      yarn
    2. Start the local development server:
      yarn start
    3. Access the application at http://localhost:3000/.
    yarn 
    yarn start
  2. Integrate the Tech Radar visualization

    master

    To use the Tech Radar visualization in your project, follow these three steps:

    1. Include dependencies: Load d3.js (v7) and radar.js via script tags.
    2. Prepare the container: Insert an empty <svg> element into your HTML with a unique id.
    3. Initialize the radar: Call the radar_visualization() function with a configuration object.

    Note: The radar.js script is based on d3.js v7.

    <script src="https://d3js.org/d3.v7.min.js"></script>
    <script src="https://zalando.github.io/tech-radar/release/radar-0.12.js"></script>
    
    <svg id="radar"></svg>
    
    <script>
    radar_visualization({
      // configuration goes here
    });
    </script>
  3. Configure the radar_visualization function

    master

    The radar_visualization() function accepts a configuration object to define the appearance and data of the radar.

    Configuration Options

    KeyTypeDescription
    repo_urlstringThe URL of the repository containing the radar data.
    svg_idstringThe id of the <svg> element where the radar will be rendered.
    widthnumberThe width of the visualization.
    heightnumberThe height of the visualization.
    scalenumberAdjusts the overall size of the radar.
    colorsobjectObject containing background, grid, and inactive hex color strings.
    font_familystringFont stack (e.g., "Arial, Helvetica").
    titlestringThe title of the radar.
    quadrantsarrayArray of objects defining quadrants, e.g., [{ name: "Top Left" }].
    ringsarrayArray of objects defining rings, e.g., [{ name: "INNER", color: "#5ba300" }].
    print_layoutbooleanWhether to enable print-specific layout.
    links_in_new_tabsbooleanWhether links should open in new tabs.
    entriesarrayArray of data entries to plot.

    Entry Object Structure

    Each object in the entries array represents a technology on the radar:

    • label: The name of the entry.
    • quadrant: The quadrant index (0-3, counting clockwise starting from bottom right).
    • ring: The ring index (0-3, starting from the innermost ring).
    • moved: The movement status:
      • -1: Moved out (represented by a downward-pointing triangle).
      • 0: Not moved (represented by a circle).
      • 1: Moved in (represented by an upward-pointing triangle).
      • 2: New (represented by a star).
    radar_visualization({
      repo_url: "https://github.com/zalando/tech-radar",
      svg_id: "radar",
      width: 1450,
      height: 1000,
      scale: 1.0,
      colors: {
        background: "#fff",
        grid: "#bbb",
        inactive: "#ddd"
      },
      font_family: "Arial, Helvetica",
      title: "My Radar",
      quadrants: [
        { name: "Bottom Right" },
        { name: "Bottom Left" },
        { name: "Top Left" },
        { name: "Top Right" }
      ],
      rings: [
        { name: "INNER",  color: "#5ba300" },
        { name: "SECOND", color: "#009eb0" },
        { name: "THIRD",  color: "#c7ba00" },
        { name: "OUTER",  color: "#e09b96" }
      ],
      print_layout: true,
      links_in_new_tabs: true,
      entries: [
       {
          label: "Some Entry",
          quadrant: 3,          // 0,1,2,3 (counting clockwise, starting from bottom right)
          ring: 2,              // 0,1,2,3 (starting from inside)
          moved: -1             // -1 = moved out (triangle pointing down)
                                //  0 = not moved (circle)
                                //  1 = moved in  (triangle pointing up)
                                //  2 = new       (star)
       }
      ]
    });