Skip to content

escalay/tech-radar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Tech Radar

A collaborative, Markdown-first tech radar for tracking technology decisions and their evolution over time.

Build & Deploy

🎯 What is This?

This tech radar helps teams track technology choices across four dimensions:

  • Quadrants: Techniques, Platforms, Tools, Languages & Frameworks
  • Rings: Adopt (recommended), Trial (promising), Assess (exploring), Hold (avoid)
  • History: Every ring change is tracked with dates, rationale, and PRs
  • Automation: Scripts for creating, updating, and importing blips

View the radar: Live Demo (replace with your GitHub Pages URL)

πŸš€ Quick Start

Prerequisites

  • Node.js 20+
  • npm

Setup

# Clone the repository
git clone https://github.com/your-org/tech-radar.git
cd tech-radar

# Install dependencies
npm install

# Build the radar
npm run build

# Preview locally
npm run preview
# Open http://localhost:8080

πŸ“ Creating a New Blip

Use the interactive CLI:

npm run new-blip

This will:

  1. Prompt for blip details (name, quadrant, ring, etc.)
  2. Generate a Markdown file with proper front-matter
  3. Include a content template to fill in

Example output: radar/tools/playwright.md

πŸ”„ Updating a Blip's Status

When a technology moves to a different ring:

npm run update-status "blip-name"

This will:

  1. Find the blip by name
  2. Prompt for new ring and rationale
  3. Auto-update the status (Moved In/Out)
  4. Append a history entry with today's date

πŸ“Š History Tracking

Every blip can track its journey through the rings:

history:
  - date: '2023-06-01'
    ring: Assess
    note: Initial evaluation
    pr: '#123'
  - date: '2024-01-15'
    ring: Trial
    note: Successful pilot
    pr: '#456'
  - date: '2024-09-15'
    ring: Adopt
    note: Production-ready
    pr: '#789'

This history:

  • Powers the timeline on detail pages
  • Generates the changelog page
  • Provides audit trail for decisions

πŸ“‚ Repository Structure

tech-radar/
β”œβ”€β”€ radar/                       # All blips (Markdown files)
β”‚   β”œβ”€β”€ techniques/
β”‚   β”œβ”€β”€ platforms/
β”‚   β”œβ”€β”€ tools/
β”‚   └── languages-and-frameworks/
β”œβ”€β”€ src/
β”‚   └── schemas.ts              # Zod schemas for validation
β”œβ”€β”€ tools/
β”‚   β”œβ”€β”€ generate.ts             # Main build script
β”‚   β”œβ”€β”€ new-blip.ts             # Create new blip
β”‚   β”œβ”€β”€ update-status.ts        # Update blip ring/status
β”‚   β”œβ”€β”€ import-history.ts       # Bulk import from CSV
β”‚   └── validate.ts             # Validate all blips
β”œβ”€β”€ radar.config.yml            # Configuration (quadrants, rings, colors)
β”œβ”€β”€ package.json
└── README.md

πŸ› οΈ Available Scripts

Script Description
npm run build Generate static radar site in dist/
npm run preview Start local server on port 8080
npm run validate Validate all blip schemas
npm run type-check TypeScript type checking
npm run new-blip Interactive blip creator
npm run update-status <name> Update blip ring/status
npm run import-history <csv> Bulk import history

πŸ“‹ Front-Matter Schema

Every blip must include:

---
name: Technology Name              # Required
quadrant: Techniques               # Required: Techniques | Platforms | Tools | Languages & Frameworks
ring: Adopt                        # Required: Adopt | Trial | Assess | Hold
status: New                        # Required: New | Moved In | Moved Out | No Change
summary: One-line description      # Optional but recommended
tags: [tag1, tag2]                # Optional
owners: [@team, @person]          # Optional
since: '2024-01-15'               # Optional (YYYY-MM-DD)
last_reviewed: '2024-09-01'       # Optional (YYYY-MM-DD)
links:                            # Optional
  - title: Official Docs
    url: https://example.com
history:                          # Optional but recommended
  - date: '2024-01-15'
    ring: Assess
    note: Initial evaluation
    pr: '#123'
---

🀝 Contributing

See CONTRIBUTING.md for detailed guidelines.

Quick contribution flow:

  1. Create or update a blip file in radar/
  2. Run npm run validate to check schema
  3. Run npm run build to test locally
  4. Create a PR with rationale and evidence
  5. Get review from CODEOWNERS
  6. Merge β†’ auto-deploys to GitHub Pages

🎨 Customization

Change Colors/Rings

Edit radar.config.yml:

rings:
  - Adopt
  - Trial
  - Assess
  - Hold

colors:
  Adopt: "#5ba300"
  Trial: "#009eb0"
  Assess: "#c7ba00"
  Hold: "#e09b96"

Change Quadrants

Edit radar.config.yml and adjust CODEOWNERS:

quadrants:
  - Techniques
  - Platforms
  - Tools
  - Languages & Frameworks

πŸ“– Documentation

πŸ—οΈ Architecture

Build Process

Markdown Files β†’ Zod Validation β†’ Generator β†’ Static Site
   (radar/)                      (tools/generate.ts)  (dist/)

Output

  • dist/index.html - Main radar visualization
  • dist/tech/<slug>/index.html - Detail page per blip
  • dist/changelog.html - Recent changes
  • dist/data/entries.json - Data for Zalando radar.js

Visualization

Uses Zalando's radar.js (MIT license):

  • D3-based interactive visualization
  • Quadrants and rings configurable
  • Movement indicators (new, moved in/out)

πŸš€ Deployment

GitHub Pages (Automatic)

On every push to main:

  1. GitHub Actions validates blips
  2. Builds the static site
  3. Deploys to GitHub Pages

Configure in Settings β†’ Pages β†’ Source: GitHub Actions

Manual Deployment

npm run build
# Deploy dist/ to your hosting provider

πŸ“¦ Tech Stack

  • TypeScript - Type-safe tooling
  • Zod - Runtime validation
  • Markdown - Source of truth
  • Zalando radar.js - Visualization
  • GitHub Actions - CI/CD
  • GitHub Pages - Hosting

πŸ“œ License

MIT

πŸ™ Credits

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors