{"id":49571104,"url":"https://github.com/sagargupta16/gitscope","last_synced_at":"2026-05-03T14:03:25.204Z","repository":{"id":347461232,"uuid":"1194129207","full_name":"Sagargupta16/GitScope","owner":"Sagargupta16","description":"Chrome extension that adds contribution insights, streak tracking, and activity analytics to any GitHub profile page","archived":false,"fork":false,"pushed_at":"2026-04-27T01:48:34.000Z","size":1600,"stargazers_count":3,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-27T03:34:40.700Z","etag":null,"topics":["browser-extension","chrome-extension","contribution-graph","contribution-insights","developer-tools","github","github-profile","github-stats","graphql","javascript","manifest-v3","open-source","typescript","web-extension"],"latest_commit_sha":null,"homepage":"https://chromewebstore.google.com/detail/gitscope/fndaanihifimmlnmkjdmjbbkbdajolff","language":"TypeScript","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/Sagargupta16.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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":"2026-03-28T00:35:04.000Z","updated_at":"2026-04-27T01:47:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Sagargupta16/GitScope","commit_stats":null,"previous_names":["sagargupta16/github-profile-insights"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Sagargupta16/GitScope","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagargupta16%2FGitScope","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagargupta16%2FGitScope/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagargupta16%2FGitScope/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagargupta16%2FGitScope/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sagargupta16","download_url":"https://codeload.github.com/Sagargupta16/GitScope/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagargupta16%2FGitScope/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32571456,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: 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":["browser-extension","chrome-extension","contribution-graph","contribution-insights","developer-tools","github","github-profile","github-stats","graphql","javascript","manifest-v3","open-source","typescript","web-extension"],"created_at":"2026-05-03T14:03:23.826Z","updated_at":"2026-05-03T14:03:25.192Z","avatar_url":"https://github.com/Sagargupta16.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitScope\n\n![GitHub stars](https://img.shields.io/github/stars/Sagargupta16/GitScope?style=flat-square)\n![GitHub forks](https://img.shields.io/github/forks/Sagargupta16/GitScope?style=flat-square)\n![License](https://img.shields.io/github/license/Sagargupta16/GitScope?style=flat-square)\n![Last Commit](https://img.shields.io/github/last-commit/Sagargupta16/GitScope?style=flat-square)\n![Chrome Web Store](https://img.shields.io/badge/Chrome_Web_Store-install-blue?style=flat-square\u0026logo=googlechrome)\n\n[![Chrome Web Store](https://img.shields.io/chrome-web-store/v/fndaanihifimmlnmkjdmjbbkbdajolff?label=Chrome%20Web%20Store\u0026logo=googlechrome\u0026logoColor=white)](https://chromewebstore.google.com/detail/gitscope/fndaanihifimmlnmkjdmjbbkbdajolff)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Manifest V3](https://img.shields.io/badge/Manifest-V3-green)](src/manifest.json)\n[![Website](https://img.shields.io/badge/Website-GitScope-blue)](https://sagargupta16.github.io/GitScope/)\n\n\u003e Browser extension + web tools for GitHub profile insights - contribution streaks, language breakdown, PR stats, profile comparison, leaderboards, and a personal analytics dashboard with traffic data.\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/gitscope-dark-top.jpg\" alt=\"GitScope - Stats grid, language breakdown, top repos, and activity heatmap\" width=\"700\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/gitscope-dark-bottom.jpg\" alt=\"GitScope - Contribution donut, activity by day, and footer stats\" width=\"700\"\u003e\n\u003c/p\u003e\n\n## Features\n\n### Chrome Extension\n\n- **Stats Grid** - 9 stats: stars, contributions, streaks, merged PRs, PR merge rate, repos, forks received, issue close rate\n- **Coding Personality** - Badge like \"Builder\", \"Reviewer\", or \"Collaborator\" based on contribution mix\n- **Quick Insights** - Avg/day, velocity trend, own/fork ratio, weekend %, language count\n- **Language Breakdown** - Color-coded bar chart and legend showing language distribution\n- **Top Repositories** - Top 5 repos by stars with language and star count\n- **Activity Heatmap** - Compact 20-week contribution heatmap with Less/More legend\n- **Contribution Donut** - Commits, PRs, reviews, and issues breakdown chart\n- **Activity by Day** - Bar chart showing which day of the week you're most active\n- **Repo Growth Timeline** - Bar chart showing repository creation history by year\n- **Community \u0026 Impact** - Repos contributed to, organizations, follower ratio, account age\n- **Profile Comparison** - Compare any profile against your own (contributions, stars, repos, PRs, forks, followers)\n- **Dark Theme** - Automatically adapts to GitHub's light/dark theme\n- **Caching** - 5-minute TTL to avoid redundant API calls\n\n### Website ([sagargupta16.github.io/GitScope](https://sagargupta16.github.io/GitScope/))\n\n- **Dashboard** - Personal analytics dashboard with traffic data (views, clones, referrers), star/fork trends, and per-repo drill-down. Requires GitHub OAuth with `repo` scope for traffic API access.\n- **Repo Detail** - Per-repository traffic charts, referrer breakdown, and stats (views, clones, stars, forks, issues)\n- **Compare Tool** - Side-by-side profile comparison with up to 17 head-to-head stats (PR merge rate, issue close rate, weekend %, contributed to, organizations, and more)\n- **Leaderboard** - Rank yourself against everyone you follow, sortable by stars, repos, followers, forks, or languages\n- **Leaderboard Caching** - Results cached locally for 10 minutes to avoid rate limits\n- **Dashboard Caching** - Dashboard data cached locally for 5 minutes; manual \"Sync Now\" button for refresh\n- **Full Stats Mode** - Sign in for contributions, streaks, PRs, personality, velocity, and community stats\n\n## Installation\n\n### Chrome Web Store (Recommended)\n\nInstall directly from the [Chrome Web Store](https://chromewebstore.google.com/detail/gitscope/fndaanihifimmlnmkjdmjbbkbdajolff).\n\n### Chrome (Developer Mode)\n\n1. Clone and build:\n   ```bash\n   git clone https://github.com/Sagargupta16/GitScope.git\n   cd GitScope\n   npm install\n   npm run build\n   ```\n2. Open `chrome://extensions` in Chrome\n3. Enable **Developer mode** (top right)\n4. Click **Load unpacked** and select the `dist/` folder\n5. Click the extension icon and click **\"Sign in with GitHub\"**\n\n## How It Works\n\n```\nUser visits github.com/\u003cusername\u003e\n    |\n    v\nContent Script (content.js)\n    | detects profile page\n    v\nBackground Worker (background.js)\n    | sends GraphQL query to api.github.com\n    | (parameterized variables - no injection)\n    v\nDashboard (dashboard.js + charts.js)\n    | builds panel with stats, charts, heatmap\n    v\nInjected into GitHub sidebar\n    | cached for 5 minutes per profile\n```\n\n**Authentication** uses GitHub OAuth via a Cloudflare Worker (`worker/`). The worker holds the client secret server-side and exchanges the auth code for a token. No secrets in the extension code.\n\n## Project Structure\n\n```\nGitScope/\n  src/                       # Chrome extension source\n    manifest.json            # Extension manifest (Manifest V3)\n    css/insights.css         # Dashboard styles (GitHub theme-aware)\n    html/popup.html          # Extension popup (OAuth sign in/out)\n    icons/                   # Extension icons (16/32/48/128px + SVG)\n    js/\n      content.js             # Entry point (profile detection, SPA nav)\n      background.js          # Service worker (API calls, avoids CORS)\n      api.js                 # GitHub GraphQL queries (parameterized)\n      charts.js              # Pure CSS/SVG chart rendering + analytics\n      dashboard.js           # Panel construction and injection\n      storage.js             # Chrome storage + caching helpers\n      utils.js               # Utility functions\n      popup.js               # Popup OAuth management\n      auth-callback.js       # OAuth callback token capture\n  website/                   # Landing page + web tools (React + TS)\n    src/\n      pages/                 # Landing, Compare, Leaderboard, Dashboard, RepoDetail, Privacy\n      components/            # Header, Footer\n      components/charts/     # StatCard, TrafficAreaChart, TopReposBarChart, ReferrersChart, Sparkline\n      lib/                   # GitHub API, analytics, auth, dashboard utilities\n    vite.config.ts           # Builds to docs/ for GitHub Pages\n  worker/                    # Cloudflare Worker (OAuth token exchange)\n    index.js                 # Handles extension + web OAuth flows\n    wrangler.toml            # Wrangler config\n  docs/                      # Built website (deployed to GitHub Pages)\n  build.js                   # esbuild bundler for extension\n  package.json\n```\n\n## Tech Stack\n\n### Extension\n\n- **Manifest V3** - Latest Chrome extension API\n- **Vanilla JS** - Zero runtime dependencies\n- **esbuild** - Fast bundler (src/ -\u003e dist/ in \u003c1s)\n- **GitHub GraphQL API** - Single query fetches all profile data\n- **CSS Custom Properties** - GitHub's theme variables for automatic light/dark\n\n### Website\n\n- **React 19** + **TypeScript** - Component-based UI\n- **Vite 8** - Build tool with HMR\n- **Tailwind CSS v4** - Utility-first styling\n- **React Router v7** - Client-side routing\n- **Recharts 3** - React charting library for dashboard traffic/star charts\n- **date-fns 4** - Date formatting and manipulation\n- **GitHub REST + GraphQL APIs** - Hybrid auth (basic stats without login, full stats with)\n\n### Infrastructure\n\n- **Cloudflare Workers** - Serverless OAuth token exchange\n- **GitHub Pages** - Static site hosting\n- **GitHub Actions** - CI/CD for extension releases + website deployment\n\n## Privacy\n\n- Token stored locally (Chrome storage for extension, localStorage for website)\n- Client secret stored server-side on Cloudflare Worker\n- API responses cached locally (extension: 5 min, leaderboard: 10 min, dashboard: 5 min)\n- Dashboard requests `repo` scope for traffic API access (read-only -- never writes to repos)\n- No analytics, no tracking, no telemetry\n- Source code is fully open and auditable\n\nSee [PRIVACY.md](PRIVACY.md) for the full privacy policy.\n\n## Development\n\n```bash\n# Extension\nnpm install\nnpm run build        # Build to dist/\nnpm run watch        # Watch mode\n\n# Website\ncd website\npnpm install\npnpm dev             # Dev server at localhost:5173\npnpm build           # Build to docs/\n\n# Worker\ncd worker\nnpx wrangler dev     # Local dev server\nnpx wrangler deploy  # Deploy to Cloudflare\n```\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## More Projects\n\n| Project | Description |\n|---------|-------------|\n| [claude-cost-optimizer](https://github.com/Sagargupta16/claude-cost-optimizer) | Save 30-60% on Claude Code costs - proven strategies and benchmarks |\n| [InstagramLikesLeaderboard](https://github.com/Sagargupta16/InstagramLikesLeaderboard) | Browser tool showing who likes your Instagram posts the most |\n| [Financial Dashboard](https://github.com/Sagargupta16/Financial-Dashboard) | Modern React financial dashboard with analytics and data visualization |\n| [LeetCode Rating Predictor](https://github.com/Sagargupta16/LeetCode_Rating_Predictor) | Full-stack ML-powered LeetCode contest rating predictor |\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagargupta16%2Fgitscope","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsagargupta16%2Fgitscope","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagargupta16%2Fgitscope/lists"}