Skip to content

MeroZemory/dev-folio

Repository files navigation

dev-folio

Generate a polished, interactive HTML report of your development activity across multiple Git repositories.

Scan all your repos, collect commits and line counts, then produce a single-file HTML dashboard — designed for embedding in GitHub profiles or sharing as a portfolio piece.

Features

  • Multi-org support — scan repos across multiple workspace directories
  • Commit analytics — daily trends, hourly patterns, streak tracking, keyword analysis
  • Codebase metrics — total lines, code vs. docs breakdown, fork-aware counting
  • 13 interactive charts — powered by Chart.js (daily trend, radar, heatmap, calendar, bubble, timeline, and more)
  • Dark / Light theme — follows system preference with manual toggle, persisted in localStorage
  • GitHub contribution calendar — pixel-perfect recreation of the GitHub-style heatmap
  • Repository timeline — Gantt-style view of active development periods
  • Developer personality — fun metrics like Night Owl %, Weekend Warrior %, and commit personality type
  • Responsive design — looks great on desktop and mobile
  • Single HTML file — zero server dependencies, fully self-contained (~200 KB)
  • Optional repo name masking — hide private repo names in public reports

Quick Start

1. Clone

git clone https://github.com/MeroZemory/dev-folio.git
cd dev-folio

2. Configure

cp config.example.sh config.sh

Edit config.sh to match your setup:

# Directories containing your git repos
ORG_DIRS=(
  "$HOME/projects/my-org"
  "$HOME/projects/personal"
)

# Date range and author filter
AFTER="2025-12-31"
BEFORE="2026-02-17"
AUTHOR_PATTERN="YourGitHubUser\|Your Name"

# Colors for charts (keyed by org directory basename)
ORG_COLORS='{
  "my-org": "#58A6FF",
  "personal": "#3FB950"
}'

GITHUB_PROFILE="https://github.com/YourUsername"
DISPLAY_NAME="Your Name"

3. Collect Data

# Collect commits
bash collect-commits.sh

# Count lines of code (optional but recommended)
bash collect-lines.sh

4. Generate Report

pip install pandas   # one-time dependency
python3 generate-report.py

Open the generated HTML file in your browser. Done!

Output

output/
  commit-logs/
    my-org/repo-a.jsonl
    personal/repo-b.jsonl
    ...
    line-counts.jsonl
dev-activity-report.html   ← open this

Fork / Inherited Repos

For repos where you forked or inherited a codebase, configure FORK_REPOS in config.sh:

FORK_REPOS=(
  "UpstreamFork:abcd1234"     # repo_name:last_commit_before_your_first
)

Lines are counted only from your commits (filtered by AUTHOR_PATTERN), so upstream code is automatically excluded.

Masking

To hide certain repo names in the public report, create a mask_config.py file:

# mask_config.py
def mask_repo_name(repo_name, org=None):
    """Return masked name, or repo_name unchanged."""
    if repo_name == "secret-project":
        return "s*****-*******"
    return repo_name

Reference it in config.sh:

MASK_CONFIG="./mask_config.py"

Requirements

  • bash (macOS / Linux)
  • git
  • Python 3.8+ with pandas
  • Repos must have a remote configured (for git log)

Charts Included

# Chart Type
1 Daily Commit Trend + 7-day MA Line
2 Hourly Activity Radar
3 Day × Hour Heatmap CSS Grid
4 Top 10 Repos Horizontal Bar
5 Organization Breakdown Doughnut
6 Weekly Commits Bar
7 Daily Active Repos Area
8 Commit Type Distribution Doughnut
9 Top 20 Keywords Horizontal Bar
10 Contribution Calendar CSS Grid (GitHub-style)
11 Repository Timeline CSS Gantt
12 Daily Commits by Org Stacked Area
13 Repository Landscape Bubble

License

MIT

About

Generate a polished, interactive HTML report of your development activity across multiple Git repositories.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors