{"id":16162922,"url":"https://github.com/fabriziosalmi/repos","last_synced_at":"2026-02-01T10:04:30.589Z","repository":{"id":247099729,"uuid":"825025980","full_name":"fabriziosalmi/repos","owner":"fabriziosalmi","description":"My repositories","archived":false,"fork":false,"pushed_at":"2026-01-27T01:40:49.000Z","size":2680,"stargazers_count":6,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-27T13:40:16.977Z","etag":null,"topics":["automation","github-stars","github-stats","repositories","tracker"],"latest_commit_sha":null,"homepage":"https://fabriziosalmi.github.io/repos/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fabriziosalmi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2024-07-06T14:59:07.000Z","updated_at":"2026-01-27T01:40:53.000Z","dependencies_parsed_at":"2025-12-15T14:05:57.442Z","dependency_job_id":null,"html_url":"https://github.com/fabriziosalmi/repos","commit_stats":null,"previous_names":["fabriziosalmi/fab","fabriziosalmi/repos"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/fabriziosalmi/repos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabriziosalmi%2Frepos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabriziosalmi%2Frepos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabriziosalmi%2Frepos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabriziosalmi%2Frepos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fabriziosalmi","download_url":"https://codeload.github.com/fabriziosalmi/repos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabriziosalmi%2Frepos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28975278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T09:57:52.632Z","status":"ssl_error","status_checked_at":"2026-02-01T09:57:49.143Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["automation","github-stars","github-stats","repositories","tracker"],"created_at":"2024-10-10T02:33:54.287Z","updated_at":"2026-02-01T10:04:30.584Z","avatar_url":"https://github.com/fabriziosalmi.png","language":"Python","readme":"\u003cdiv align=\"center\"\u003e\n\n# 📊 GitHub Repository Analytics Dashboard\n\n![screenshot](https://github.com/fabriziosalmi/repos/blob/main/screenshot.png?raw=true)\n\n### Advanced Analytics \u0026 Insights for GitHub Repositories\n\n[![Live Dashboard](https://img.shields.io/badge/🚀_Live-Dashboard-blue?style=for-the-badge)](https://fabriziosalmi.github.io/repos/)\n[![GitHub Stars](https://img.shields.io/github/stars/fabriziosalmi/repos?style=for-the-badge\u0026logo=github)](https://github.com/fabriziosalmi/repos/stargazers)\n[![License](https://img.shields.io/github/license/fabriziosalmi/repos?style=for-the-badge)](LICENSE)\n[![Last Update](https://img.shields.io/github/last-commit/fabriziosalmi/repos?style=for-the-badge)](https://github.com/fabriziosalmi/repos/commits)\n\n**[🌐 View Live Dashboard](https://fabriziosalmi.github.io/repos/)** • **[🚀 Quick Start](TUTORIAL.md)** • **[📖 Documentation](SETUP.md)** • **[✨ Features](FEATURES.md)**\n\n---\n\n## 📈 Live Statistics\n\n\u003cdiv align=\"center\"\u003e\n\n![Total Repos](https://img.shields.io/badge/Total_Repos-104-blue?style=flat-square)\n![Total Stars](https://img.shields.io/badge/Total_Stars-3,794-yellow?style=flat-square)\n![Total Forks](https://img.shields.io/badge/Total_Forks-281-green?style=flat-square)\n![Total Commits](https://img.shields.io/badge/Total_Commits-22,991-purple?style=flat-square)\n![Contributors](https://img.shields.io/badge/Contributors-548-brightgreen?style=flat-square)\n![Issues Resolved](https://img.shields.io/badge/Issues_Resolved-72-green?style=flat-square)\n![Resolution Rate](https://img.shields.io/badge/Resolution_Rate-45.0%25-brightgreen?style=flat-square)\n\n**🏆 Most Starred: certmate (1127 ⭐) | 💻 Top Language: Python (55 repos) | 📊 Avg: 36.5★ / 221.1 commits**\n\n\u003c/div\u003e\n\n\u003c/div\u003e\n\n---\n\n## 🎯 Overview\n\nA powerful, privacy-focused analytics dashboard that transforms GitHub repository data into beautiful, interactive visualizations. Built with modern web technologies and automated through GitHub Actions for real-time insights.\n\n## ✨ Features\n\n### 🎨 **Modern, Interactive UI**\n- **Dark Mode Design**: Professional GitHub-themed interface with smooth animations\n- **Responsive Layout**: Perfect experience on desktop, tablet, and mobile\n- **Real-time Search**: Instant repository filtering with debounced search\n- **Advanced Filtering**: Filter by language, status, fork status, and more\n\n### 📊 **Advanced Analytics**\n- **Interactive Charts**: Language distribution, stars comparison, activity timeline, fork analysis\n- **Statistical Insights**: Repository trends, growth metrics, and engagement data\n- **Language Statistics**: Detailed breakdown of technologies used across projects\n- **Activity Tracking**: Repository update frequency and commit patterns\n\n### 🚀 **Performance \u0026 Privacy**\n- **Zero Tracking**: No cookies, no analytics, no data collection\n- **Fast Loading**: Optimized assets and lazy loading for instant performance\n- **Cached Data**: Smart caching system to reduce API calls\n- **Progressive Enhancement**: Works even with JavaScript disabled (basic view)\n\n### 🤖 **Automation \u0026 CI/CD**\n- **GitHub Actions**: Automated daily updates via scheduled workflows\n- **Auto Deployment**: Automatic build and deploy to GitHub Pages\n- **Data Validation**: Comprehensive validation before publishing\n- **Error Recovery**: Robust error handling and fallback mechanisms\n\n---\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- **Python 3.8+** for data generation\n- **Node.js 18+** (optional, for frontend development)\n- **GitHub Personal Access Token** (for API access)\n\n### 🔧 Installation\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/fabriziosalmi/repos.git\n   cd repos\n   ```\n\n2. **Set up Python environment**\n   ```bash\n   python3 -m venv .venv\n   source .venv/bin/activate  # On Windows: .venv\\Scripts\\activate\n   pip install -r requirements.txt\n   ```\n\n3. **Configure GitHub Token**\n   ```bash\n   export MY_PAT=\"your_github_personal_access_token\"\n   # Or create a .env file with: MY_PAT=your_token_here\n   ```\n\n4. **Generate Data**\n   ```bash\n   python stats.py\n   ```\n   This creates `docs/repositories-data.json` with your repository data.\n\n5. **View the Dashboard**\n   Simply open `docs/index.html` in your browser, or use a local server:\n   ```bash\n   python -m http.server 8000 -d docs\n   # Visit http://localhost:8000\n   ```\n\n---\n\n## 🛠️ Development\n\n### Local Development Setup\n\n#### **Backend (Python Data Generator)**\n\nThe Python script fetches repository data from GitHub API with advanced caching and validation:\n\n```bash\n# Install dependencies\npip install -r requirements.txt\n\n# Run with verbose output\npython stats.py --verbose\n\n# Force refresh cache\npython stats.py --no-cache\n\n# Generate specific user stats\npython stats.py --user username\n```\n\n**Key Features:**\n- Smart caching (1-hour default TTL)\n- Rate limit handling with exponential backoff\n- Data validation and integrity checks\n- Detailed progress indicators\n- Backup and recovery mechanisms\n\n#### **Frontend Development**\n\nFor UI modifications, the dashboard uses vanilla JavaScript with Chart.js:\n\n```bash\n# Install development server (optional)\nnpm install -g live-server\n\n# Run with hot reload\nlive-server docs/\n\n# Or use Python\npython -m http.server 8000 -d docs\n```\n\n**Tech Stack:**\n- Pure HTML/CSS/JavaScript (no build step required)\n- Chart.js for data visualization\n- CSS Grid \u0026 Flexbox for responsive layout\n- Modern CSS variables for theming\n\n---\n\n## 📊 Data Structure\n\nThe `repositories-data.json` file contains rich metadata for each repository:\n\n```json\n{\n  \"name\": \"repository-name\",\n  \"full_name\": \"user/repository-name\",\n  \"description\": \"Repository description\",\n  \"url\": \"https://github.com/user/repo\",\n  \"stars\": 100,\n  \"forks\": 50,\n  \"watchers\": 100,\n  \"language\": \"Python\",\n  \"license\": \"MIT License\",\n  \"last_update\": \"2025-11-16T10:00:00Z\",\n  \"last_update_str\": \"2 hours ago\",\n  \"commits\": 250,\n  \"contributors\": 5,\n  \"open_issues_count\": 10,\n  \"language_stats\": {\n    \"Python\": {\"bytes\": 50000, \"percentage\": 75.5},\n    \"JavaScript\": {\"bytes\": 15000, \"percentage\": 24.5}\n  },\n  \"archived\": false,\n  \"fork\": false,\n  \"private\": false\n}\n```\n\n---\n\n## 🔄 Automated Deployment\n\nThe dashboard auto-updates through GitHub Actions with multiple triggers:\n\n### Workflow Triggers\n\n| Trigger | Frequency | Description |\n|---------|-----------|-------------|\n| 🔄 **Push to Main** | On commit | Instant deployment on code changes |\n| ⏰ **Scheduled** | Daily at 00:00 UTC | Automatic data refresh |\n| 🖱️ **Manual Dispatch** | On demand | Trigger via Actions tab |\n\n### Deployment Pipeline\n\n```mermaid\ngraph LR\n    A[Trigger] --\u003e B[Fetch GitHub Data]\n    B --\u003e C[Validate Data]\n    C --\u003e D[Generate JSON]\n    D --\u003e E[Deploy to Pages]\n    E --\u003e F[Live Dashboard]\n```\n\n**Workflow Features:**\n- ✅ Data validation before deployment\n- 💾 Automatic backup of previous data\n- 🔐 Secure token handling via GitHub Secrets\n- 📧 Failure notifications\n- 🚀 Zero-downtime deployment\n\n### Setup GitHub Pages Deployment\n\n1. Go to repository **Settings** → **Pages**\n2. Set source to **GitHub Actions**\n3. Add `MY_PAT` secret in **Settings** → **Secrets** → **Actions**\n4. Workflow runs automatically on next commit\n\n---\n\n## 📈 Analytics \u0026 Insights\n\n### Available Metrics\n\n| Category | Metrics |\n|----------|---------|\n| **Repository Stats** | Total repos, stars, forks, watchers, issues |\n| **Activity** | Last update, commit frequency, contribution timeline |\n| **Languages** | Distribution, bytes written, file counts |\n| **Engagement** | Stars per repo, fork ratio, issue response time |\n| **Quality** | License compliance, documentation coverage |\n\n### Visualization Types\n\n- 🥧 **Donut Charts**: Language distribution across repositories\n- 📊 **Bar Charts**: Top repositories by stars, forks, or activity\n- 📈 **Line Charts**: Repository activity over time\n- 🔵 **Scatter Plots**: Correlation between stars and forks\n- 📉 **Trend Analysis**: Growth patterns and forecasts\n\n---\n\n## 🎨 Customization\n\n### Theming\n\nEdit CSS variables in `docs/index.html` to customize colors:\n\n```css\n:root {\n    --bg-primary: #0d1117;      /* Main background */\n    --bg-secondary: #161b22;    /* Card background */\n    --accent-blue: #58a6ff;     /* Primary accent */\n    --accent-green: #3fb950;    /* Success color */\n    --text-primary: #e6edf3;    /* Main text */\n}\n```\n\n### Adding Custom Charts\n\nAdd new visualizations by extending the chart rendering functions:\n\n```javascript\nfunction renderCustomChart() {\n    const ctx = document.getElementById('customChart').getContext('2d');\n    new Chart(ctx, {\n        type: 'radar',\n        data: { /* your data */ },\n        options: { /* your options */ }\n    });\n}\n```\n\n### Filtering \u0026 Sorting\n\nCustomize filter options in the JavaScript section:\n\n```javascript\n// Add custom sort option\n\u003coption value=\"custom\"\u003e🎯 Custom Metric\u003c/option\u003e\n\n// Implement custom sort logic\ncase 'custom':\n    return calculateCustomMetric(b) - calculateCustomMetric(a);\n```\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Here's how you can help:\n\n1. **🍴 Fork** the repository\n2. **🌿 Create** a feature branch: `git checkout -b feature/amazing-feature`\n3. **💻 Commit** changes: `git commit -m 'Add amazing feature'`\n4. **📤 Push** to branch: `git push origin feature/amazing-feature`\n5. **🎉 Open** a Pull Request\n\n### Development Guidelines\n\n- Follow existing code style and conventions\n- Add tests for new features\n- Update documentation for API changes\n- Ensure all checks pass before submitting PR\n\n---\n\n## 📄 License\n\nThis project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.\n\n---\n\n## 🙏 Acknowledgments\n\n- **GitHub API** for providing comprehensive repository data\n- **Chart.js** for beautiful, responsive charts\n- **GitHub Actions** for seamless automation\n- **Open Source Community** for inspiration and support\n\n---\n\n## 📞 Support\n\n- 📧 **Issues**: [GitHub Issues](https://github.com/fabriziosalmi/repos/issues)\n- 💬 **Discussions**: [GitHub Discussions](https://github.com/fabriziosalmi/repos/discussions)\n- 📖 **Documentation**: [Setup Guide](SETUP.md)\n\n---\n\n## 🔒 Privacy \u0026 Security\n\n- ✅ **No tracking or analytics**\n- ✅ **No cookies or local storage abuse**\n- ✅ **No external API calls from client**\n- ✅ **All data fetched server-side**\n- ✅ **Open source and auditable**\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Built with ❤️ and GitHub Action☕**\n\n[![GitHub followers](https://img.shields.io/github/followers/fabriziosalmi?style=social)](https://github.com/fabriziosalmi)\n[![Twitter Follow](https://img.shields.io/twitter/follow/fabriziosalmi?style=social)](https://twitter.com/fabriziosalmi)\n\n**⭐ Star this repo if you find it useful!**\n\n\u003c/div\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabriziosalmi%2Frepos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffabriziosalmi%2Frepos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabriziosalmi%2Frepos/lists"}