Skip to content

dirsigler/techradar

Repository files navigation

Tech Radar

Built with Astro License: MIT Deploy

An interactive, fully static technology radar built with Astro. Track technology adoption decisions across your organization with a visual radar chart, categorized segments, and detailed technology pages — all driven by simple Markdown files.

View Live Demo


Preview

Radar Overview Technology Detail
Radar Light Technology Page
Radar Dark Segment Page

Key Features

Interactive SVG Radar

Technologies plotted across four rings — Adopt, Trial, Assess, Hold — with hover tooltips and click-through to detail pages.

Markdown-Driven Content

Add technologies by dropping .md files into segments/. No code changes needed — just write frontmatter and prose.

Theming & Dark Mode

Swappable CSS themes with automatic light/dark mode support. Ships with a default theme and Catppuccin Mocha. Create your own by defining CSS custom properties.

Fully Static & Fast

Builds to plain HTML/CSS/JS — 60+ pages in ~1 second. Deploy anywhere: Cloudflare Workers, Netlify, Vercel, S3, or any static host.

Segments & Movement

Group technologies into color-coded categories. Mark technologies as moved in/out to highlight recent adoption changes.

SEO & Production Ready

Sitemap, robots.txt, Open Graph, Twitter Cards, canonical URLs, custom 404 page — all out of the box.


Quick Start

git clone https://github.com/dirsigler/techradar.git
cd techradar
npm install
npm run dev

Open http://localhost:4321 to see the radar.

Adding Technologies

Create a Markdown file in the appropriate segment directory under segments/:

segments/
├── cloud/
│   ├── index.md          # Segment metadata (title, color, order)
│   ├── kubernetes.md
│   └── terraform.md
├── frameworks/
│   ├── index.md
│   ├── astro.md
│   └── react.md
└── ...

Each technology file uses this frontmatter:

---
title: Kubernetes
ring: adopt # adopt | trial | assess | hold
moved: 0 # 1 = moved in, -1 = moved out, 0 = unchanged
---

Your description in Markdown. Explain why this technology is in this ring,
what your experience has been, and any recommendations.

Each segment needs an index.md:

---
title: Cloud
color: "#3b82f6"
order: 1 # Determines quadrant position (1-4)
---

Configuration

Edit src/config.ts to customize:

const config: SiteConfig = {
  title: "Tech Radar", // Navbar title
  // logo: '/logo.svg',              // Optional logo in public/
  footerText: "Built with Astro", // Footer text (supports HTML)
  editBaseUrl: "https://github.com/...", // "Edit on GitHub" link base
  // theme: 'catppuccin-mocha',      // Theme name (see below)
  socialLinks: [{ label: "GitHub", href: "...", icon: "..." }],
};

Theming

Themes live in src/themes/ as CSS files defining --radar-* custom properties.

Theme Description
default Clean light/dark theme (follows system preference)
catppuccin-mocha Catppuccin Mocha dark theme

To create a custom theme, copy src/themes/default.css, rename it, adjust the CSS variables, and set theme: 'your-theme' in src/config.ts.

Project Structure

├── segments/              # Technology content (Markdown)
│   ├── cloud/
│   ├── dev-languages/
│   ├── frameworks/
│   └── processes/
├── src/
│   ├── components/        # Astro components (Radar, Legend, Cards, ...)
│   ├── layouts/           # Base HTML layout
│   ├── lib/               # Radar positioning algorithm
│   ├── pages/             # Route pages (index, segments, technology)
│   ├── styles/            # Global styles
│   ├── themes/            # Swappable CSS themes
│   └── config.ts          # Site configuration
├── public/                # Static assets (favicon, robots.txt)
├── wrangler.json          # Cloudflare Workers configuration
└── astro.config.mjs       # Astro configuration

Commands

Command Action
npm install Install dependencies
npm run dev Start dev server at localhost:4321
npm run build Build production site to ./dist/
npm run preview Preview the production build locally

Adopt This Radar

This project is designed to be forked and customized for your own team or organization.

1. Fork & Clone

# GitLab or other hosts
git clone https://github.com/dirsigler/techradar.git my-techradar
cd my-techradar
git remote set-url origin https://gitlab.example.com/your-group/techradar.git

2. Replace Technologies

Delete the example content and add your own:

# Remove example technologies (keep index.md files — they define segments)
find segments -name "*.md" ! -name "index.md" -delete

Create technology files with this frontmatter:

---
title: Your Technology
ring: adopt # adopt | trial | assess | hold
moved: 0 # 1 = moved in, -1 = moved out, 0 = unchanged
---

Why this technology is in this ring and what your team's experience has been.

3. Customize Segments

Edit the index.md in each segment directory. You can rename, recolor, or replace segments entirely — just keep up to 4 directories under segments/:

---
title: Infrastructure
color: "#3b82f6"
order: 1
---

4. Configure

Update src/config.ts — all GitHub-specific values are in this single file:

const config: SiteConfig = {
  title: "ACME Tech Radar",
  footerText: "Built by the ACME Platform Team",
  repositoryUrl: "https://gitlab.example.com/your-group/techradar",
  editBaseUrl:
    "https://gitlab.example.com/your-group/techradar/-/edit/main/segments",
  socialLinks: [
    {
      label: "GitLab",
      href: "https://gitlab.example.com/your-group/techradar",
      // GitLab SVG icon path (24x24 viewBox)
      icon: "M23.955 13.587l-1.342-4.135-2.664-8.189a.455.455 0 00-.867 0L16.418 9.45H7.582L4.918 1.263a.455.455 0 00-.867 0L1.387 9.452.045 13.587a.924.924 0 00.331 1.023L12 23.054l11.624-8.443a.92.92 0 00.331-1.024",
    },
  ],
};

Note: The repositoryUrl is used for the license link in the footer. The editBaseUrl powers the "Edit this page" links on technology pages. Both are optional.

5. Deploy

The radar builds to fully static HTML — deploy it anywhere:

Platform Setup
Cloudflare Workers Connect your repo in the Cloudflare dashboard, build command npm run build, output dist/
GitLab Pages Add a .gitlab-ci.yml with npm run build and publish the dist/ directory
Netlify / Vercel Connect your repo, build command npm run build, publish directory dist/
GitHub Pages Use actions/upload-pages-artifact with path: dist/ in a workflow
Any static host Run npm run build and upload the dist/ folder

Commands

Command Action
npm install Install dependencies
npm run dev Start dev server at localhost:4321
npm run build Build production site to ./dist/
npm run preview Preview the production build locally

License

MIT — Dennis Irsigler

About

An interactive, fully static technology radar built with Astro. Track technology adoption decisions with a visual radar chart — driven entirely by Markdown files.

Topics

Resources

License

Stars

Watchers

Forks

Contributors