{"id":34541437,"url":"https://github.com/lukaszraczylo/git-velocity","last_synced_at":"2026-02-23T05:20:44.146Z","repository":{"id":328049934,"uuid":"1113870178","full_name":"lukaszraczylo/git-velocity","owner":"lukaszraczylo","description":"Git repositories velocity tracker and gamification","archived":false,"fork":false,"pushed_at":"2026-02-18T03:56:07.000Z","size":1015,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-18T08:53:43.075Z","etag":null,"topics":["git-statistics","github-actions","project-management","repository-statistics"],"latest_commit_sha":null,"homepage":"http://git-velocity.raczylo.com/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lukaszraczylo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-10T15:22:06.000Z","updated_at":"2026-02-18T03:51:43.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lukaszraczylo/git-velocity","commit_stats":null,"previous_names":["lukaszraczylo/git-velocity"],"tags_count":44,"template":false,"template_full_name":null,"purl":"pkg:github/lukaszraczylo/git-velocity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukaszraczylo%2Fgit-velocity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukaszraczylo%2Fgit-velocity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukaszraczylo%2Fgit-velocity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukaszraczylo%2Fgit-velocity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lukaszraczylo","download_url":"https://codeload.github.com/lukaszraczylo/git-velocity/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukaszraczylo%2Fgit-velocity/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29738083,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T04:51:08.365Z","status":"ssl_error","status_checked_at":"2026-02-23T04:49:15.865Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git-statistics","github-actions","project-management","repository-statistics"],"created_at":"2025-12-24T06:18:05.232Z","updated_at":"2026-02-23T05:20:44.097Z","avatar_url":"https://github.com/lukaszraczylo.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/git-velocity-logo.png\" alt=\"Git Velocity Logo\" width=\"400\"/\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eGit Velocity\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eTurn your GitHub activity into a game. Track velocity. Earn achievements. Win at development.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/lukaszraczylo/git-velocity/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/lukaszraczylo/git-velocity?style=flat-square\u0026color=ff69b4\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/lukaszraczylo/git-velocity/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/lukaszraczylo/git-velocity?style=flat-square\u0026color=a855f7\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/lukaszraczylo/git-velocity\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/lukaszraczylo/git-velocity?style=flat-square\" alt=\"Go Report Card\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/lukaszraczylo/git-velocity/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/lukaszraczylo/git-velocity/release.yml?style=flat-square\u0026label=release\" alt=\"Release Status\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#-features\"\u003eFeatures\u003c/a\u003e •\n  \u003ca href=\"#-quick-start\"\u003eQuick Start\u003c/a\u003e •\n  \u003ca href=\"#-github-action\"\u003eGitHub Action\u003c/a\u003e •\n  \u003ca href=\"#-configuration\"\u003eConfiguration\u003c/a\u003e •\n  \u003ca href=\"#-achievements\"\u003eAchievements\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## What is Git Velocity?\n\nGit Velocity analyzes your GitHub repositories and generates a **beautiful, gamified dashboard** showing developer velocity metrics. It's like Spotify Wrapped, but for your code contributions.\n\n```bash\n$ git-velocity analyze --config .git-velocity.yaml\n🚀 Fetching data from GitHub...\n📊 Processing 3 repositories...\n🏆 Calculating scores and achievements...\n✨ Generated dashboard at ./dist\n\n$ git-velocity serve --port 8080\n🌐 Starting preview server at http://localhost:8080\n```\n\n## ✨ Features\n\n### 📊 Comprehensive Metrics\n- **Commits**: Count, lines added/deleted, files changed\n- **Pull Requests**: Opened, merged, closed, average size, time to merge\n- **Code Reviews**: Reviews given, comments, approvals, response time\n- **Issues**: Opened, closed, comments\n- **Meaningful Lines**: Filter out comments, whitespace, and documentation changes from line counts\n\n### 🎮 Gamification Engine\n- **Scoring System**: Earn points for every contribution\n- **115 Achievements**: Tiered progression from \"First Steps\" to \"Code Warrior\"\n- **Leaderboards**: Compete with your team\n- **Tier Progression**: Multiple tiers per achievement category\n- **Activity Patterns**: Track early bird, night owl, weekend commits with time-based scoring multipliers (x1 to x5)\n- **Streak Tracking**: Daily streaks and work-week streaks (weekends don't break it!)\n- **General velocity chart**: Visualize your velocity over time\n\n### 👥 Team Analytics\n- Configure teams and see aggregated metrics\n- Team leaderboards and comparisons\n- Member contribution breakdowns\n\n### ⚡ Performance Optimized\n- **Local Git Analysis**: Clone repos locally for 10x faster commit analysis\n- **Smart Caching**: File-based caching with configurable TTL\n- **Concurrent Requests**: Parallel API calls for faster data fetching\n- **Bot Filtering**: Hardcoded patterns automatically exclude common bots (Dependabot, Renovate, GitHub Actions, etc.) with optional custom patterns\n\n### 🎨 Beautiful Dashboard\n- Modern Vue.js SPA with dark theme\n- Responsive design for desktop and mobile\n- Interactive charts and visualizations\n- GitHub Pages deployment ready\n\n### 🔐 Flexible Authentication\n- Personal Access Token (PAT)\n- GitHub App authentication\n- Environment variable support\n\n### 🔑 Required GitHub Token Permissions\nSee [Token Permissions](#-github-token-permissions) for detailed requirements.\n\n## 🚀 Quick Start\n\n### Installation\n\n```bash\n# Go install\ngo install github.com/lukaszraczylo/git-velocity/cmd/git-velocity@latest\n\n# Or download binary from releases\n# https://github.com/lukaszraczylo/git-velocity/releases\n```\n\n### Verifying Release Signatures\n\nAll release checksums and Docker images are signed with [cosign](https://github.com/sigstore/cosign) using keyless signing. To verify:\n\n```bash\n# Verify checksum signature\ncosign verify-blob \\\n  --certificate-identity-regexp \"https://github.com/lukaszraczylo/git-velocity-analyser/.*\" \\\n  --certificate-oidc-issuer \"https://token.actions.githubusercontent.com\" \\\n  --bundle \"\u003cchecksums-file\u003e.sigstore.json\" \\\n  \u003cchecksums-file\u003e\n\n# Verify Docker image\ncosign verify \\\n  --certificate-identity-regexp \"https://github.com/lukaszraczylo/git-velocity-analyser/.*\" \\\n  --certificate-oidc-issuer \"https://token.actions.githubusercontent.com\" \\\n  ghcr.io/lukaszraczylo/git-velocity:latest\n```\n\n### Create Configuration\n\nCreate `.git-velocity.yaml` in your repository:\n\n```yaml\nversion: \"1.0\"\n\nauth:\n  github_token: \"${GITHUB_TOKEN}\"\n\nrepositories:\n  - owner: \"your-org\"\n    name: \"your-repo\"\n  # Or use patterns:\n  - owner: \"your-org\"\n    pattern: \"*\"  # All repos in org\n\nteams:\n  - name: \"Backend Team\"\n    members: [\"dev1\", \"dev2\", \"dev3\"]\n    color: \"#3B82F6\"\n  - name: \"Frontend Team\"\n    members: [\"dev4\", \"dev5\"]\n    color: \"#10B981\"\n\nscoring:\n  enabled: true\n  points:\n    commit: 10             # Base points (multiplied by time of day)\n    commit_with_tests: 15\n    pr_opened: 25\n    pr_merged: 50\n    pr_reviewed: 30\n    fast_review_1h: 50\n    fast_review_4h: 25\n    # Time multipliers: x1 (9-5), x2 (5-9pm, 6-9am), x2.5 (9pm-12am), x5 (12-6am)\n\noutput:\n  directory: \"./dist\"\n```\n\n### Run Analysis\n\n```bash\n# Set your GitHub token\nexport GITHUB_TOKEN=ghp_your_token_here\n\n# Run analysis\ngit-velocity analyze --config .git-velocity.yaml --verbose\n\n# Preview the dashboard\ngit-velocity serve --port 8080\n```\n\n## 🤖 GitHub Action\n\nAutomate your velocity reports with our GitHub Action:\n\n```yaml\nname: Git Velocity Report\n\non:\n  schedule:\n    - cron: '0 0 * * 1'  # Weekly on Monday\n  workflow_dispatch:      # Manual trigger\n\npermissions:\n  contents: read\n  pages: write\n  id-token: write\n\njobs:\n  analyze:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Run Git Velocity Analysis\n        uses: lukaszraczylo/git-velocity@v1\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        with:\n          github_token: ${{ secrets.GITHUB_TOKEN }}\n          config_file: '.git-velocity.yaml'\n          output_dir: './velocity-report'\n\n      # Fix permissions - Docker container runs as root\n      - name: Fix permissions\n        run: sudo chown -R $USER:$USER ./velocity-report\n\n      - name: Setup Pages\n        uses: actions/configure-pages@v4\n\n      - name: Upload artifact\n        uses: actions/upload-pages-artifact@v3\n        with:\n          path: ./velocity-report\n\n  deploy:\n    runs-on: ubuntu-latest\n    needs: analyze\n    environment:\n      name: github-pages\n      url: ${{ steps.deployment.outputs.page_url }}\n    steps:\n      - name: Deploy to GitHub Pages\n        id: deployment\n        uses: actions/deploy-pages@v4\n```\n\n### Action Inputs\n\n| Input | Description | Default |\n|-------|-------------|---------|\n| `github_token` | GitHub token for API access | **Required** |\n| `config_file` | Path to configuration file | `.git-velocity.yaml` |\n| `output_dir` | Output directory for dashboard | `./dist` |\n| `verbose` | Enable verbose output | `false` |\n\n### Action Outputs\n\n| Output | Description |\n|--------|-------------|\n| `output_dir` | Path to the generated dashboard |\n\n\u003e **Important**: The action runs as a Docker container. Note the following:\n\u003e - Your config file **must** include the `auth` section with `github_token: \"${GITHUB_TOKEN}\"` - the action input does not automatically populate the config\n\u003e - You must set the `GITHUB_TOKEN` environment variable on the action step (in addition to the `github_token` input)\n\u003e - The \"Fix permissions\" step is required because the Docker container runs as root, which causes permission errors when uploading artifacts\n\n## 🏆 Achievements\n\nGit Velocity includes **115 hardcoded achievements** across 26 categories with multiple progression tiers. Achievements cannot be modified via configuration to prevent manipulation.\n\n### Achievement Categories\n\n| Category | Tiers | Description |\n|----------|-------|-------------|\n| **Commits** | 1, 10, 50, 100, 500, 1000 | Track total commits made |\n| **PRs Opened** | 1, 10, 25, 50, 100, 250 | Track pull requests created |\n| **Reviews** | 1, 10, 25, 50, 100, 250 | Track code reviews performed |\n| **Comments** | 10, 50, 100, 250, 500 | Track PR review comments |\n| **Lines Added** | 100, 1K, 5K, 10K, 50K | Track code additions |\n| **Lines Deleted** | 100, 500, 1K, 5K, 10K | Track code cleanup |\n| **Review Time** | 24h, 4h, 1h | Fast review response times |\n| **Multi-Repo** | 2, 5, 10 | Contribution across repositories |\n| **Unique Reviewees** | 3, 10, 25 | Reviewing different contributors |\n| **Large PRs** | 500, 1K, 5K lines | Big changes merged |\n| **Small PRs** | 5, 10, 25, 50 | Atomic commits under 100 lines |\n| **Perfect PRs** | 1, 5, 10, 25 | Merged without changes requested |\n| **Active Days** | 7, 30, 60, 100 | Unique days with activity |\n| **Streaks** | 3, 7, 14, 30 days | Consecutive day contributions |\n| **Work Week Streak** | 3, 5, 10, 20 days | Weekday streaks (weekends don't break it!) |\n| **Early Bird** | 10, 25, 50, 100 | Commits before 9am |\n| **Night Owl** | 10, 25, 50, 100 | Commits after 9pm |\n| **Midnight** | 5, 10, 25, 50 | Commits between midnight-4am |\n| **Weekend** | 5, 10, 25, 50 | Weekend commits |\n| **Out of Hours** | 10, 25, 50, 100 | Commits outside 9am-5pm |\n| **Documentation** | 100, 500, 1K, 2.5K, 5K | Comment/doc lines added |\n| **Comment Cleanup** | 50, 200, 500, 1K, 2.5K | Outdated comments removed |\n| **Issues Opened** | 1, 5, 10, 25, 50 | Track issues created |\n| **Issues Closed** | 1, 5, 10, 25, 50 | Track issues resolved |\n| **Issue Comments** | 5, 10, 25, 50, 100 | Track issue discussion participation |\n| **Issue References** | 5, 10, 25, 50, 100 | Track commits referencing issues |\n\n### Example Achievements\n\n| Achievement | Description |\n|-------------|-------------|\n| 🍼 First Steps | Made your first commit |\n| 👑 Code Warrior | Made 1000 commits |\n| ⚡ Speed Demon | Average review response under 1 hour |\n| 💎 Flawless | 25 PRs merged without changes requested |\n| 🏢 Full Work Week | 5 consecutive weekday streak |\n| 🌙 Night Owl | 50 commits after 9pm |\n| ♾️ Time Bender | 100 commits outside 9am-5pm |\n| 📚 Documentation Hero | Added 1000 lines of comments/docs |\n| 🏛️ Code Historian | Added 5000 lines of comments/docs |\n| ✂️ Comment Trimmer | Removed 50 outdated comment lines |\n| 💀 Dead Code Hunter | Removed 500 outdated comment lines |\n| 🎫 Issue Opener | Opened your first issue |\n| 🏷️ Issue Tracker | Opened 25 issues |\n| ✅ Issue Closer | Closed your first issue |\n| 🔗 Issue Linker | 25 commits referencing issues |\n\n## 🔑 GitHub Token Permissions\n\nGit Velocity requires specific GitHub API permissions to fetch repository data. Below are the required permissions for each authentication method.\n\n### Personal Access Token (Classic)\n\nWhen creating a classic Personal Access Token, select the following scopes:\n\n| Scope | Required | Description |\n|-------|----------|-------------|\n| `repo` | ✅ Yes | Full access to private repositories (includes commits, PRs, issues) |\n| `read:org` | ⚠️ If using org patterns | Required when using `pattern: \"*\"` to list organization repositories |\n\n\u003e **Note**: For public repositories only, the `public_repo` scope is sufficient instead of full `repo` access.\n\n### Fine-Grained Personal Access Token (Recommended)\n\nFine-grained tokens provide more granular control. Configure the following permissions:\n\n**Repository Permissions:**\n| Permission | Access Level | Description |\n|------------|--------------|-------------|\n| Contents | Read | Access commit data and file contents |\n| Pull requests | Read | Access PR data, reviews, and comments |\n| Issues | Read | Access issue data and comments |\n| Metadata | Read | Basic repository information (automatically included) |\n\n**Account Permissions:**\n| Permission | Access Level | Description |\n|------------|--------------|-------------|\n| Email addresses | Read | Access public email for user deduplication |\n\n### GitHub App Authentication\n\nWhen using GitHub App authentication, configure the following permissions:\n\n**Repository Permissions:**\n| Permission | Access Level | Description |\n|------------|--------------|-------------|\n| Contents | Read | Fetch commits and diffs |\n| Pull requests | Read | Fetch PRs, reviews, and review comments |\n| Issues | Read | Fetch issues and issue comments |\n| Metadata | Read | Repository metadata (required) |\n\n**Organization Permissions (if using org patterns):**\n| Permission | Access Level | Description |\n|------------|--------------|-------------|\n| Members | Read | List organization repositories |\n\n**Account Permissions:**\n| Permission | Access Level | Description |\n|------------|--------------|-------------|\n| Email addresses | Read | User profile deduplication |\n\n### GitHub Actions (GITHUB_TOKEN)\n\nWhen running in GitHub Actions, the default `GITHUB_TOKEN` has sufficient permissions for repositories in the same organization/account. For cross-organization access, use a PAT or GitHub App.\n\n### API Endpoints Used\n\nGit Velocity uses the following GitHub REST API endpoints:\n\n| Endpoint | Purpose |\n|----------|---------|\n| `GET /orgs/{org}/repos` | List repositories by organization |\n| `GET /repos/{owner}/{repo}/commits` | Fetch commit history |\n| `GET /repos/{owner}/{repo}/commits/{sha}` | Fetch commit details with diff |\n| `GET /repos/{owner}/{repo}/pulls` | List pull requests |\n| `GET /repos/{owner}/{repo}/pulls/{number}/reviews` | Fetch PR reviews |\n| `GET /repos/{owner}/{repo}/issues` | List issues |\n| `GET /users/{username}` | Fetch user profile information |\n\n## ⚙️ Configuration\n\n### Full Configuration Reference\n\n```yaml\nversion: \"1.0\"\n\nauth:\n  # Option 1: Personal Access Token\n  github_token: \"${GITHUB_TOKEN}\"\n\n  # Option 2: GitHub App\n  github_app:\n    app_id: 123456\n    installation_id: 789012\n    private_key_path: \"./private-key.pem\"\n\nrepositories:\n  # Single repository\n  - owner: \"your-org\"\n    name: \"repo-name\"\n  # All repos in organization\n  - owner: \"your-org\"\n    pattern: \"*\"\n  # Pattern matching\n  - owner: \"your-org\"\n    pattern: \"frontend-*\"\n\ndate_range:\n  start: \"2024-01-01\"\n  end: \"2024-12-31\"\n\nteams:\n  - name: \"Backend Team\"\n    members: [\"user1\", \"user2\"]\n    color: \"#3B82F6\"\n\nscoring:\n  enabled: true\n  points:\n    commit: 10\n    commit_with_tests: 15\n    # Line scoring always uses meaningful lines (excludes comments/whitespace)\n    lines_added: 0.1\n    lines_deleted: 0.05\n    pr_opened: 25\n    pr_merged: 50\n    pr_reviewed: 30\n    review_comment: 5\n    issue_opened: 10\n    issue_closed: 20\n    issue_comment: 5\n    issue_reference_commit: 5\n    fast_review_1h: 50\n    fast_review_4h: 25\n    fast_review_24h: 10\n    # Time-based commit multipliers (applied to base commit points)\n    multiplier_regular_hours: 1.0   # 9am-5pm\n    multiplier_evening: 2.0         # 5pm-9pm\n    multiplier_late_night: 2.5      # 9pm-midnight\n    multiplier_overnight: 5.0       # midnight-6am\n    multiplier_early_morning: 2.0   # 6am-9am\n\noutput:\n  directory: \"./dist\"\n  format: [\"html\", \"json\"]\n  deploy:\n    gh_pages: true\n    artifact: true\n\ncache:\n  enabled: true\n  directory: \"./.cache\"\n  ttl: \"24h\"\n\noptions:\n  concurrent_requests: 5\n  include_bots: false\n  # Add custom bot patterns (hardcoded defaults always apply)\n  additional_bot_patterns:\n    - \"my-org-bot\"\n    - \"jenkins*\"\n  clone_directory: \"./.repos\"\n  user_aliases:\n    - github_login: \"username\"\n      emails: [\"work@example.com\", \"personal@example.com\"]\n      names: [\"Full Name\", \"nickname\"]\n```\n\n### User Aliases\n\nMap multiple git emails/names to a single GitHub login:\n\n```yaml\noptions:\n  user_aliases:\n    - github_login: \"johndoe\"\n      emails:\n        - \"john.doe@company.com\"\n        - \"johnd@personal.com\"\n      names:\n        - \"John Doe\"\n        - \"JD\"\n```\n\n### Bot Filtering\n\nBot filtering uses **hardcoded default patterns** that always apply when `include_bots: false`. These cannot be disabled to ensure consistent filtering:\n\n**Default Bot Patterns (always applied):**\n- `*[bot]` - GitHub App bots (dependabot[bot], renovate[bot], etc.)\n- `dependabot*` - Dependabot variants\n- `renovate*` - Renovate bot variants\n- `github-actions*` - GitHub Actions\n- `codecov*` - Codecov bot\n- `snyk*` - Snyk security bot\n- `greenkeeper*` - Greenkeeper (legacy)\n- `imgbot*` - Image optimization bot\n- `allcontributors*` - All Contributors bot\n- `semantic-release*` - Semantic release bot\n\n**Add custom patterns** for your organization's bots:\n\n```yaml\noptions:\n  include_bots: false  # When false, hardcoded + additional patterns apply\n  additional_bot_patterns:\n    - \"my-org-bot\"     # Exact match\n    - \"jenkins*\"       # Prefix match\n    - \"*-ci\"           # Suffix match\n```\n\n### Meaningful Lines Filtering\n\nGit Velocity always filters out non-meaningful code changes when scoring line additions and deletions. This provides an accurate measure of actual code contributions.\n\n**What's filtered out:**\n- **Comments**: Single-line (`//`, `#`, `--`), block (`/* */`, `\u003c!-- --\u003e`), docstrings (`\"\"\"`, `'''`)\n- **Whitespace**: Empty lines, whitespace-only lines\n- **Documentation files**: `.md`, `.rst`, `.txt`, `README`, `CHANGELOG`, `LICENSE`, files in `docs/` directories\n\n**Supported comment styles:**\n- C-style: `//`, `/* */`, `*` (block continuation)\n- Python/Shell: `#`, `\"\"\"`, `'''`\n- SQL/Lua/Haskell: `--`\n- Assembly/Lisp/INI: `;`\n- VB: `'`\n- HTML/XML: `\u003c!-- --\u003e`\n\n### Environment Variables\n\nAll configuration values support environment variable expansion:\n\n```yaml\nauth:\n  github_token: \"${GITHUB_TOKEN}\"\n  github_app:\n    private_key: \"${GITHUB_APP_PRIVATE_KEY}\"\n```\n\n## 📖 CLI Commands\n\n### `analyze`\n\nAnalyze repositories and generate the dashboard.\n\n```bash\ngit-velocity analyze [flags]\n\nFlags:\n  -c, --config string   Path to configuration file (default \"config.yaml\")\n  -o, --output string   Output directory for generated site (default \"./dist\")\n  -v, --verbose         Enable verbose output\n```\n\n### `serve`\n\nStart a local preview server.\n\n```bash\ngit-velocity serve [flags]\n\nFlags:\n  -d, --directory string   Directory to serve (default \"./dist\")\n  -p, --port string        Port to listen on (default \"8080\")\n```\n\n### `version`\n\nPrint version information.\n\n```bash\ngit-velocity version\n```\n\n## 🛠️ Development\n\n```bash\n# Clone repository\ngit clone https://github.com/lukaszraczylo/git-velocity.git\ncd git-velocity\n\n# Install dependencies\ngo mod download\ncd web \u0026\u0026 npm install \u0026\u0026 cd ..\n\n# Build\nmake build\n\n# Run tests\nmake test\n\n# Build SPA\nmake build-spa\n```\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n## 🙏 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n---\n\n\u003cp align=\"center\"\u003e\n  Made with ❤️ by \u003ca href=\"https://github.com/lukaszraczylo\"\u003eLukasz Raczylo\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/lukaszraczylo/git-velocity\"\u003e⭐ Star this repo\u003c/a\u003e if you find it useful!\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukaszraczylo%2Fgit-velocity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flukaszraczylo%2Fgit-velocity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukaszraczylo%2Fgit-velocity/lists"}