π View Live Dashboard β’ π Quick Start β’ π Documentation β’ π Detailed Stats β’ β¨ Features
A 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.
π¦ Total Repositories π Community Stars π΄ Total Forks π» Languages
Auto-discovered Tracked in real-time Live counting Full analysis
- Dark Mode Design: Professional GitHub-themed interface with smooth animations
- Responsive Layout: Perfect experience on desktop, tablet, and mobile
- Real-time Search: Instant repository filtering with debounced search
- Advanced Filtering: Filter by language, status, fork status, and more
- Interactive Charts: Language distribution, stars comparison, activity timeline, fork analysis
- Statistical Insights: Repository trends, growth metrics, and engagement data
- Language Statistics: Detailed breakdown of technologies used across projects
- Activity Tracking: Repository update frequency and commit patterns
- Zero Tracking: No cookies, no analytics, no data collection
- Fast Loading: Optimized assets and lazy loading for instant performance
- Cached Data: Smart caching system to reduce API calls
- Progressive Enhancement: Works even with JavaScript disabled (basic view)
- GitHub Actions: Automated daily updates via scheduled workflows
- Auto Deployment: Automatic build and deploy to GitHub Pages
- Data Validation: Comprehensive validation before publishing
- Error Recovery: Robust error handling and fallback mechanisms
- Python 3.8+ for data generation
- Node.js 18+ (optional, for frontend development)
- GitHub Personal Access Token (for API access)
-
Clone the repository
git clone https://github.com/fabriziosalmi/repos.git cd repos -
Set up Python environment
python3 -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate pip install -r requirements.txt
-
Configure GitHub Token
export MY_PAT="your_github_personal_access_token" # Or create a .env file with: MY_PAT=your_token_here
-
Generate Data
python stats.py
This creates
docs/repositories-data.jsonwith your repository data. -
View the Dashboard Simply open
docs/index.htmlin your browser, or use a local server:python -m http.server 8000 -d docs # Visit http://localhost:8000
The Python script fetches repository data from GitHub API with advanced caching and validation:
# Install dependencies
pip install -r requirements.txt
# Run with verbose output
python stats.py --verbose
# Force refresh cache
python stats.py --no-cache
# Generate specific user stats
python stats.py --user usernameKey Features:
- Smart caching (1-hour default TTL)
- Rate limit handling with exponential backoff
- Data validation and integrity checks
- Detailed progress indicators
- Backup and recovery mechanisms
For UI modifications, the dashboard uses vanilla JavaScript with Chart.js:
# Install development server (optional)
npm install -g live-server
# Run with hot reload
live-server docs/
# Or use Python
python -m http.server 8000 -d docsTech Stack:
- Pure HTML/CSS/JavaScript (no build step required)
- Chart.js for data visualization
- CSS Grid & Flexbox for responsive layout
- Modern CSS variables for theming
The repositories-data.json file contains rich metadata for each repository:
{
"name": "repository-name",
"full_name": "user/repository-name",
"description": "Repository description",
"url": "https://github.com/user/repo",
"stars": 100,
"forks": 50,
"watchers": 100,
"language": "Python",
"license": "MIT License",
"last_update": "2025-11-16T10:00:00Z",
"last_update_str": "2 hours ago",
"commits": 250,
"contributors": 5,
"open_issues_count": 10,
"language_stats": {
"Python": {"bytes": 50000, "percentage": 75.5},
"JavaScript": {"bytes": 15000, "percentage": 24.5}
},
"archived": false,
"fork": false,
"private": false
}The dashboard auto-updates through GitHub Actions with multiple triggers:
| Trigger | Frequency | Description |
|---|---|---|
| π Push to Main | On commit | Instant deployment on code changes |
| β° Scheduled | Daily at 00:00 UTC | Automatic data refresh |
| π±οΈ Manual Dispatch | On demand | Trigger via Actions tab |
graph LR
A[Trigger] --> B[Fetch GitHub Data]
B --> C[Validate Data]
C --> D[Generate JSON]
D --> E[Deploy to Pages]
E --> F[Live Dashboard]
Workflow Features:
- β Data validation before deployment
- πΎ Automatic backup of previous data
- π Secure token handling via GitHub Secrets
- π§ Failure notifications
- π Zero-downtime deployment
- Go to repository Settings β Pages
- Set source to GitHub Actions
- Add
MY_PATsecret in Settings β Secrets β Actions - Workflow runs automatically on next commit
| Category | Metrics |
|---|---|
| Repository Stats | Total repos, stars, forks, watchers, issues |
| Activity | Last update, commit frequency, contribution timeline |
| Languages | Distribution, bytes written, file counts |
| Engagement | Stars per repo, fork ratio, issue response time |
| Quality | License compliance, documentation coverage |
- π₯§ Donut Charts: Language distribution across repositories
- π Bar Charts: Top repositories by stars, forks, or activity
- π Line Charts: Repository activity over time
- π΅ Scatter Plots: Correlation between stars and forks
- π Trend Analysis: Growth patterns and forecasts
Edit CSS variables in docs/index.html to customize colors:
:root {
--bg-primary: #0d1117; /* Main background */
--bg-secondary: #161b22; /* Card background */
--accent-blue: #58a6ff; /* Primary accent */
--accent-green: #3fb950; /* Success color */
--text-primary: #e6edf3; /* Main text */
}Add new visualizations by extending the chart rendering functions:
function renderCustomChart() {
const ctx = document.getElementById('customChart').getContext('2d');
new Chart(ctx, {
type: 'radar',
data: { /* your data */ },
options: { /* your options */ }
});
}Customize filter options in the JavaScript section:
// Add custom sort option
<option value="custom">π― Custom Metric</option>
// Implement custom sort logic
case 'custom':
return calculateCustomMetric(b) - calculateCustomMetric(a);Contributions are welcome! Here's how you can help:
- π΄ Fork the repository
- πΏ Create a feature branch:
git checkout -b feature/amazing-feature - π» Commit changes:
git commit -m 'Add amazing feature' - π€ Push to branch:
git push origin feature/amazing-feature - π Open a Pull Request
- Follow existing code style and conventions
- Add tests for new features
- Update documentation for API changes
- Ensure all checks pass before submitting PR
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub API for providing comprehensive repository data
- Chart.js for beautiful, responsive charts
- GitHub Actions for seamless automation
- Open Source Community for inspiration and support
- π§ Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
- π Documentation: Setup Guide
- β No tracking or analytics
- β No cookies or local storage abuse
- β No external API calls from client
- β All data fetched server-side
- β Open source and auditable






