Skip to Main Content

Commit DNA

Commit DNA transforms raw Git commit history into a powerful analytics dashboard that reveals coding patterns, productivity trends, refactoring behavior, bug tendencies, ownership distribution, and burnout indicators.

Description

🧬 Commit DNA – Developer Coding Style Analyzer

Decode any developer's coding DNA from their Git history. Analyzes public GitHub repos to reveal coding patterns, work habits, and burnout risk β€” all computed live from real commit data.


πŸ“Œ Table of Contents


🧠 What is Commit DNA?

Every Git commit is a timestamped record: who wrote it, when, what they described, and which lines changed. Commit DNA reads an entire repo's history and generates a visual dashboard answering:

QuestionMetricWorks late at night? Night Ratio β€” % of commits between 10 PM – 5 AM

Works on weekends? Weekend Ratio β€” % of commits on Sat/Sun

Frequent bug fixes? Bug Rate β€” % of commits mentioning "fix", "bug", etc.

Invests in code quality? Refactor Rate β€” % of commits about cleanup/optimization

At risk of burnout? Burnout Score β€” weighted formula combining all above

Think of it as a health checkup for coding habits β€” no hardcoded data, everything is computed live from actual Git history.


πŸ”„ How It Works (Step by Step)

User enters GitHub URL β†’ Validate β†’ Clone repo β†’ Extract git log β†’ Parse commits β†’ Calculate metrics β†’ Burnout score β†’ Display dashboard β†’ Cleanup

1️⃣ Validation

Frontend checks: valid URL? Points to github.com? Has user/repo path?

2️⃣ Clone

Backend clones the repo into a temp folder with a unique UUID (supports concurrent users).

3️⃣ Extract Git Log

Runs: git log --numstat --pretty=format:"commit_separator|AuthorName|Date|Message"

Produces raw data like:

commit_separator|John Doe|Mon Mar 1 23:30:00 2026|fix: resolve login bug
5       2       src/auth.js

4️⃣ Parse

Each commit becomes a structured object with author, date, message, additions, deletions.

5️⃣ Calculate

Every commit is checked:

  • Night? β†’ Hour between 22:00–04:59

  • Weekend? β†’ Saturday or Sunday

  • Bug fix? β†’ Message contains: fix, bug, patch, hotfix, resolve

  • Refactor? β†’ Message contains: refactor, cleanup, optimize, clean, restructure, perf

6️⃣ Score & Display

Ratios calculated β†’ Burnout formula applied β†’ Charts rendered β†’ Temp repo deleted.


πŸ“ˆ All Metrics Explained

πŸŒ™ Night Ratio

Night Ratio = Commits between 10 PM – 5 AM Γ· Total Commits

| 0–10% βœ… Normal | 10–25% ⚠️ Moderate | 25%+ πŸ”΄ Frequently coding past midnight |

πŸ“… Weekend Ratio

Weekend Ratio = Saturday + Sunday Commits Γ· Total Commits

| 0–10% βœ… Healthy boundary | 10–25% ⚠️ Some weekend work | 25%+ πŸ”΄ Regular weekend coding |

πŸ› Bug Rate

Bug Rate = Bug-fix Commits Γ· Total Commits

Keywords: fix Β· bug Β· patch Β· hotfix Β· resolve

| 0–5% βœ… Low | 5–15% ⚠️ Normal | 15%+ πŸ”΄ May need better testing |

πŸ”§ Refactor Rate

Refactor Rate = Refactor Commits Γ· Total Commits

Keywords: refactor Β· cleanup Β· optimize Β· clean Β· restructure Β· perf

| 0–2% ⚠️ Low investment | 2–10% βœ… Healthy | 10%+ ⚠️ Architecture may be unstable |

πŸ“Š Commit Spike

Commit Spike = (Max Commits in One Day Γ· Average per Day) βˆ’ 1

Value of 0 = steady pace. Value of 4 = busiest day had 5Γ— more commits than average.


πŸ”₯ The Burnout Formula

Burnout Score = 0.4 Γ— Night Ratio
             + 0.3 Γ— Weekend Ratio
             + 0.2 Γ— Commit Spike (capped at 1.0)
             + 0.1 Γ— Bug Rate

Why These Weights?

FactorWeightReasoningNight Ratio40%#1 indicator of overwork; correlates with fatigue and reduced code qualityWeekend Ratio30%Erodes recovery time; second strongest burnout signalCommit Spike20%Burst-then-rest patterns suggest deadline pressureBug Rate10%Can be a symptom of fatigue, but has many other causes

Status Thresholds

ScoreStatusMeaning0.00 – 0.24🟒 HealthySustainable patterns, normal hours0.25 – 0.49🟑 MediumSome concerning signals, worth monitoring0.50 – 1.00πŸ”΄ OverloadedMultiple burnout indicators elevated

Worked Example

Night Ratio = 0.30, Weekend Ratio = 0.20, Spike = 0.80, Bug Rate = 0.12

Score = (0.4 Γ— 0.30) + (0.3 Γ— 0.20) + (0.2 Γ— 0.80) + (0.1 Γ— 0.12)
      = 0.12 + 0.06 + 0.16 + 0.012
      = 0.352 β†’ 🟑 Medium

🎯 Example Walkthrough

Input: https://github.com/expressjs/express (~3,800 commits)

Output:

{
  "developerName": "TJ Holowaychuk",
  "totalCommits": 3847,
  "nightRatio": 22.5,
  "weekendRatio": 15.3,
  "bugRate": 8.7,
  "refactorRate": 5.2,
  "burnoutScore": 0.48,
  "burnoutStatus": "Medium"
}

Dashboard shows: Profile card β†’ Bar chart (night vs day) β†’ Doughnut (bugs vs refactors) β†’ Gauge (burnout score)


πŸ— Tech Stack & Architecture

LayerTechnologiesFrontendHTML5, CSS3 (dark theme), Vanilla JS, Chart.jsBackendNode.js, Express.js, simple-git, day.js

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ FRONTEND ────────────┐
β”‚  index.html β†’ dashboard.html     β”‚
β”‚  css/style.css  js/api.js        β”‚
β”‚  js/charts.js   js/dashboard.js  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚ POST /analyze
           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ BACKEND (Express) ───┐
β”‚  gitService β†’ parserService      β”‚
β”‚  metricsService β†’ burnoutService β”‚
β”‚  β†’ JSON response with metrics    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ How to Run

# Install & start
cd backend && npm install && npm run dev

# Open commit-dna-lkc9.vercel.app

Prerequisites: Node.js v16+, Git installed.



πŸ—Ί Future Roadmap

PhaseFeatureStatus1Public repo analysis + dashboard + burnout scoring βœ… Done

Private repos (GitHub OAuth), multi-dev comparison πŸ”œ Planned

Team analytics, Slack alerts, AI recommendations πŸ’‘ Idea

Issues & PRs Board
No issues or pull requests added.