Guide

Dashboard
← Back to dashboard

What is this?

A lightweight dashboard that tracks merge request and pull request activity across one or more GitLab and GitHub repositories. Repositories can be organized by teams for filtered analysis. The dashboard provides team-level aggregate metrics to help managers understand team health, with individual contributor activity available for coaching conversations.

Quick start

  1. Install Python dependencies: pip install -r requirements.txt
  2. Set your GitLab token (if using GitLab repos): export GITLAB_TOKEN="glpat-..."
  3. Set your GitHub token (if using GitHub repos): export GITHUB_TOKEN="ghp_..."
  4. Set your Jira token (optional): export JIRA_API_TOKEN="..."
  5. Configure repositories in repos.yaml
  6. Fetch data: python fetch_data.py
  7. Serve the frontend: cd frontend && python -m http.server 8080

Fetching data

fetch_data.py calls the GitLab and GitHub APIs to collect merge requests and pull requests, including diffs, comments, and approvals. If JIRA_API_TOKEN is set, it also extracts Jira ticket IDs from MR/PR titles and fetches their priority. Output is written to frontend/data/data.json.

python fetch_data.py -n 50   # fetch the 50 most recent MRs per repo (default: 20)
VariableRequiredDescription
GITLAB_TOKENIf GitLab repos configuredGitLab PAT with read_api scope
GITHUB_TOKENIf GitHub repos configuredGitHub PAT with repo scope (or fine-grained with read access)
JIRA_API_TOKENNoJira PAT for bug priority lookup (issues.redhat.com)

Repository configuration

Repositories are organized by team in repos.yaml at the project root.

repositories:
  backend-team:
    - url: https://gitlab.com/org/api-service
    - url: https://github.com/org/user-service
  frontend-team:
    - url: https://github.com/org/web-app
  docs-team:
    - url: https://gitlab.com/org/documentation

Both GitLab (https://gitlab.com/...) and GitHub (https://github.com/...) URLs are supported and can be mixed freely. The forge is detected automatically from the URL prefix. The team-based format allows filtering contributors by team in the UI.

Team filtering

When repositories are organized by team, a team dropdown filter appears in the dashboard. Selecting a team filters both the repository list and contributor activity to show only data from that team's repositories.

The "Show All Teams" option can be enabled in Settings to add an "All Teams" option to the dropdown, allowing you to view cross-team activity.

Team aggregate metrics

The dashboard displays 8 team-level aggregate metrics with trend indicators comparing the current period to the previous period:

MetricDescription
Merged MRsTotal count of merged merge requests in the period
Median Lead TimeMedian number of days from MR creation to merge
Median TurnaroundMedian hours from MR creation to first non-author comment
AI Co-Author RatePercentage of MRs that were co-authored with AI tools
AI AdoptionPercentage of contributors with AI usage at or above the configured threshold
Review CoveragePercentage of merged MRs that received at least one approval
Active ContributorsCount of contributors with any activity (MRs, comments, or reviews)
Lines ChangedTotal lines added plus deleted across all MRs

Trend arrows indicate whether each metric improved or worsened compared to the previous period. For lead time and turnaround, a decrease (faster) is shown as positive.

Individual contributors

The collapsible "Individual Contributors" section lists all active contributors alphabetically with activity mini-badges showing merged MRs, open/closed MRs, reviews, and comments. Click a contributor to open their detail view with:

AI co-authorship detection

MR descriptions are scanned for trailers that indicate collaboration with AI tools. When a match is found the MR is flagged as AI co-authored.

Recognized trailers:

The value after the trailer is checked against known AI tool names: Claude, ChatGPT, Copilot, Gemini, Cursor, Codeium, Tabnine, Windsurf, and others. Only trailers that reference an AI tool are counted — human co-authors are ignored.

Example MR description line:

Co-Authored-By: Claude <noreply@anthropic.com>

Timeline & period filtering

The timeline chart shows MR activity over time. The granularity buttons (Day / Week / Month / Year / Custom) control the chart grouping. Clicking a bar in the chart filters the aggregate metrics and contributor list to that specific period. Click the same bar again to clear the filter.

Settings

The Settings modal provides two options:

PDF export

Click the PDF button in the header to generate a Team Activity Report with the timeline chart, aggregate metrics table, and alphabetical contributor list.

From a contributor's detail view, click PDF to generate an Individual Activity Report with their metrics, charts, repository breakdown, and recent merge requests.