An open API service indexing awesome lists of open source software.

https://github.com/niranjanxprt/starred-repos-graph

Interactive graph visualization of GitHub starred repositories with automatic updates
https://github.com/niranjanxprt/starred-repos-graph

d3js-graph starred-repositories visualization

Last synced: 2 months ago
JSON representation

Interactive graph visualization of GitHub starred repositories with automatic updates

Awesome Lists containing this project

README

          

# ๐ŸŒŸ GitHub Stars Graph Visualization

> **Interactive force-directed graph of ALL your GitHub starred repositories with intelligent categorization, mobile-responsive design, and automatic updates**

[![Live Demo](https://img.shields.io/badge/๐Ÿš€%20Live%20Demo-View%20App-blue?style=for-the-badge&logo=github)](https://niranjanxprt.github.io/starred-repos-graph/)
[![Auto Update](https://img.shields.io/badge/๐Ÿ”„%20Auto%20Update-Every%206%20Hours-green?style=for-the-badge)](https://github.com/niranjanxprt/starred-repos-graph/actions)
[![Repositories](https://img.shields.io/badge/๐Ÿ“ฆ%20Repositories-958%2B-orange?style=for-the-badge)](https://github.com/niranjanxprt?tab=stars)
[![GitHub Pages](https://img.shields.io/badge/๐ŸŒ%20GitHub%20Pages-Live-success?style=for-the-badge)](https://niranjanxprt.github.io/starred-repos-graph/)

## ๐ŸŽฏ **Live Application**

**๐Ÿ”— [https://niranjanxprt.github.io/starred-repos-graph/](https://niranjanxprt.github.io/starred-repos-graph/)**

*Click above to explore an interactive visualization of 958+ starred repositories with intelligent clustering, advanced filtering, mobile-responsive design, and real-time updates!*

---

## โœจ **Key Features**

### ๐ŸŽจ **Interactive Graph Visualization**
- **Force-directed network graph** showing all 958+ starred repositories as connected nodes
- **Intelligent clustering** with strategic positioning across 19 categories
- **Dark professional theme** optimized for long viewing sessions
- **Click any node** to instantly open the repository in GitHub
- **Drag nodes** around to explore relationships and reorganize
- **Zoom and pan** for detailed exploration of different areas
- **Smart connections** between related repositories within and across categories

### ๐Ÿง  **Intelligent Categorization System**

Powered by **advanced weighted scoring algorithm** that analyzes repository names, descriptions, topics, and programming languages:

| Category | Count | Color | Description |
|----------|-------|-------|-------------|
| ๐Ÿค– **AI/ML** | 247 (25.8%) | Purple | Machine Learning, LLMs, Transformers, Neural Networks |
| ๐Ÿ **Python** | 112 (11.7%) | Yellow | Django, Flask, FastAPI, Data Science Tools |
| ๐ŸŒ **Web Dev** | 91 (9.5%) | Emerald | React, Next.js, Vue, Angular, Full-stack |
| ๐Ÿ“š **Learning** | 41 (4.3%) | Green | Tutorials, Courses, Educational Resources |
| ๐Ÿš€ **DevOps** | 35 (3.7%) | Cyan | Docker, Kubernetes, CI/CD, GitOps |
| โ˜๏ธ **Cloud** | 31 (3.2%) | Amber | AWS, Azure, GCP, Infrastructure-as-Code |
| ๐Ÿ“Š **Data** | 25 (2.6%) | Blue | Databases, ETL, Data Engineering |
| ๐Ÿ”ง **MCP** | 23 (2.4%) | Purple | Model Context Protocol, Claude Desktop |
| ๐ŸŽจ **UI/UX** | 23 (2.4%) | Pink | Design Systems, Components, Animations |
| ๐Ÿ› ๏ธ **Tools** | 22 (2.3%) | Gray | CLI Tools, IDEs, Productivity Apps |
| ๐Ÿ“ฑ **Mobile** | 22 (2.3%) | Red | React Native, Flutter, iOS/Android |
| ๐Ÿ”’ **Security** | 18 (1.9%) | Dark Red | Authentication, Encryption, OAuth |
| ๐Ÿ”— **API** | 10 (1.0%) | Violet | REST, GraphQL, SDKs, Microservices |
| ๐Ÿ“ก **Monitoring** | 5 (0.5%) | Orange | Prometheus, Grafana, Observability |
| ๐ŸŒ **Networking** | 5 (0.5%) | Sky Blue | Network Programming, Protocols |
| ๐ŸŽฎ **Game Dev** | 4 (0.4%) | Orange | Unity, Unreal, Game Engines |
| ๐Ÿงช **Testing** | 4 (0.4%) | Lime | Jest, Pytest, Cypress, Test Automation |
| โ‚ฟ **Blockchain** | 3 (0.3%) | Gold | Ethereum, Web3, Smart Contracts |
| โš™๏ธ **Other** | 237 (24.7%) | Indigo | Uncategorized & Specialized |

**Intelligent Scoring Features:**
- **Word boundary matching**: Prevents false positives (e.g., "app" won't match "application")
- **Multi-factor analysis**: Considers name, description, topics, and programming language
- **Weighted keywords**: Strong (10pts), Medium (5pts), Weak (2pts) indicators
- **Topic bonuses**: Extra points for GitHub's curated topic tags
- **Language boosts**: Automatic scoring based on primary programming language
- **Special case handling**: Kubernetes+examples prioritizes DevOps over Learning

### ๐Ÿ” **Advanced Filtering & Search**
- **Real-time search** by repository name, description, owner, or language
- **Category filtering** - click legend items or category buttons to focus
- **Language filtering** - filter by programming language
- **Star count filtering** - view only popular repositories (1K+, 5K+, 10K+, 50K+)
- **Visual feedback** - filtered results update graph in real-time
- **Reset functionality** - clear all filters with Escape key

### ๐Ÿ“ฑ **Mobile-Responsive Design**

Fully optimized for mobile devices with:
- **Collapsible navigation panels** with hamburger-style toggles
- **Touch-friendly controls** with 44px minimum tap targets
- **Smart tooltip positioning** that adapts to viewport
- **Landscape orientation support** with optimized layouts
- **Responsive breakpoints**:
- Small phones (< 480px)
- Phones/tablets (480-767px)
- Tablets (768-1023px)
- Desktop (1024px+)
- **Gesture support**: Pinch-to-zoom, swipe, drag interactions
- **Slide-in panels** that don't block the graph view

### ๐Ÿ”„ **Fully Automated Updates**
- **GitHub Actions workflow** runs every 6 hours automatically
- **Fetches ALL starred repositories** via GitHub API with pagination
- **Intelligent categorization** using advanced weighted scoring
- **Auto-deployment** to GitHub Pages after each update
- **Commit tracking** - see update history in repository commits
- **Zero maintenance** - completely hands-off operation

---

## ๐ŸŽฎ **How to Use the App**

### ๐Ÿ–ฅ๏ธ **Desktop Controls**
1. **Zoom**: Mouse wheel or trackpad pinch to zoom in/out
2. **Pan**: Click and drag empty space to move around the graph
3. **Drag Nodes**: Click and drag individual repositories to reposition
4. **Click to Open**: Click any node to open the repository in GitHub
5. **Keyboard Shortcuts**: Press `Escape` to reset all filters

### ๐Ÿ“ฑ **Mobile Controls**
1. **Open Filters**: Tap the โš™๏ธ button (bottom-left) for search and filters
2. **Open Legend**: Tap the ๐ŸŽจ button (bottom-left) for category legend
3. **Close Panels**: Tap โœ• button or tap outside the panel
4. **Touch Gestures**: Pinch to zoom, drag to pan, tap nodes to open
5. **Landscape Mode**: Rotate device for optimized horizontal layout

### ๐Ÿ” **Filtering & Search**
1. **Search Bar**: Type to find repositories by name, description, or language
2. **Category Buttons**: Click category filters or legend items to focus
3. **Language Filter**: Filter by programming language
4. **Star Filters**: Show only popular repositories with minimum star counts
5. **Reset**: Press `Escape` key or use reset button to clear all filters

### ๐Ÿ“Š **Understanding the Visualization**
- **Node Size**: Larger nodes = more popular repositories (higher star count)
- **Node Color**: Each color represents a different category (see legend)
- **Connections**: Lines connect related repositories (same category/language)
- **Positioning**: Force-directed physics groups similar repositories together
- **Clusters**: Categories are positioned strategically for better organization

---

## ๐Ÿ› ๏ธ **Technical Architecture**

### ๐Ÿ“ **Project Structure**
```
starred-repos-graph/
โ”œโ”€โ”€ index.html # Main application interface with mobile-responsive CSS
โ”œโ”€โ”€ app.js # Core D3.js visualization with intelligent categorization
โ”œโ”€โ”€ scripts/
โ”‚ โ”œโ”€โ”€ fetch-data.js # Backend data fetcher with scoring algorithm
โ”‚ โ””โ”€โ”€ clean-data.js # Data quality validation and cleanup
โ”œโ”€โ”€ data/
โ”‚ โ”œโ”€โ”€ repositories.json # Auto-generated repository dataset (958+ repos)
โ”‚ โ””โ”€โ”€ summary.json # Category and language statistics
โ”œโ”€โ”€ .github/workflows/
โ”‚ โ””โ”€โ”€ update-data.yml # Scheduled automation (every 6 hours)
โ””โ”€โ”€ README.md # Documentation
```

### ๐Ÿ’ป **Technology Stack**
- **Frontend**: Vanilla JavaScript + D3.js v7 (no frameworks needed)
- **Visualization**: D3.js force-directed graph with custom physics simulation
- **Styling**: Modern CSS with dark theme and mobile-responsive breakpoints
- **Data Source**: GitHub API (real-time repository data with pagination)
- **Automation**: GitHub Actions (scheduled data updates every 6 hours)
- **Deployment**: GitHub Pages (automatic deployment pipeline)
- **Storage**: JSON files (version-controlled repository data)

### ๐Ÿงฎ **Algorithm Details**

**Categorization System:**
- **Weighted Scoring**: Strong keywords (10pts), Medium (5pts), Weak (2pts)
- **Word Boundary Matching**: Uses regex `\b` to prevent false positives
- **Topic Bonuses**: +3-5 points for matching GitHub topics
- **Language Boosts**: +3-10 points based on programming language
- **Minimum Threshold**: Requires 5+ points to categorize
- **Special Cases**: Custom rules for edge cases (e.g., kubernetes+examples)

**Physics Simulation:**
- Custom force simulation with collision detection
- Category-based gravitational attraction for clustering
- Strategic positioning across 19 category locations
- Optimized for 958+ repositories with efficient rendering

---

## ๐Ÿ“Š **Repository Statistics**

### ๐Ÿ“ˆ **Current Numbers**
- **Total Repositories**: 958+ (automatically counted)
- **Programming Languages**: 30+ (JavaScript, Python, TypeScript, Java, Go, Rust, etc.)
- **Categories**: 19 intelligent auto-categories (including Cloud, Monitoring, Testing, Networking)
- **Update Frequency**: Every 6 hours via GitHub Actions
- **Data Freshness**: Always current with your latest stars
- **Most Popular Category**: AI/ML (247 repositories, 25.8%)
- **Fastest Growing**: Cloud infrastructure and DevOps tools

### ๐Ÿ† **Top Categories by Repository Count**
1. ๐Ÿค– **AI/ML**: 247 repositories (25.8%)
2. โš™๏ธ **Other**: 237 repositories (24.7%)
3. ๐Ÿ **Python**: 112 repositories (11.7%)
4. ๐ŸŒ **Web Development**: 91 repositories (9.5%)
5. ๐Ÿ“š **Learning**: 41 repositories (4.3%)

---

## ๐Ÿš€ **Setup & Configuration**

### ๐ŸŽฏ **Quick Setup (For Your Own Stars)**

1. **Fork this repository**
2. **Update username** in `.github/workflows/update-data.yml`:
```yaml
GITHUB_USERNAME: 'YOUR-GITHUB-USERNAME' # Change this line
```
3. **Update username** in `scripts/fetch-data.js`:
```javascript
const USERNAME = process.env.GITHUB_USERNAME || 'YOUR-GITHUB-USERNAME';
```
4. **Enable GitHub Pages**:
- Go to **Settings** โ†’ **Pages**
- Source: **GitHub Actions**
5. **Configure Actions permissions**:
- **Settings** โ†’ **Actions** โ†’ **General**
- Workflow permissions: **Read and write permissions**
- Enable: **Allow GitHub Actions to create and approve pull requests**
6. **Run first update**:
- Go to **Actions** tab โ†’ **"Update Stars and Deploy to Pages"** โ†’ **"Run workflow"**

### โš™๏ธ **Advanced Configuration**

#### **Customize Update Frequency**
```yaml
# In .github/workflows/update-data.yml
schedule:
- cron: '0 */3 * * *' # Every 3 hours instead of 6
```

#### **Add Custom Categories**
```javascript
// In app.js and scripts/fetch-data.js, modify the categories object
'my-category': {
strong: ['exact-framework-name', 'specific-tool'],
medium: ['general-term', 'category-keyword'],
weak: ['common-word']
}
```

#### **Customize Colors**
```javascript
// In app.js, modify the categoryColors object
this.categoryColors = {
'my-category': '#FF6B6B', // Custom color
// ... existing colors
};
```

---

## ๐Ÿ”„ **How Automatic Updates Work**

### ๐Ÿ“… **Scheduled Updates**
The GitHub Actions workflow automatically:

1. **๐Ÿ• Runs every 6 hours** (00:00, 06:00, 12:00, 18:00 UTC)
2. **๐Ÿ“ก Fetches ALL starred repositories** using GitHub API (handles pagination for 958+ repos)
3. **๐Ÿท๏ธ Categorizes each repository** using intelligent weighted scoring
4. **๐Ÿ’พ Saves structured data** to `data/repositories.json`
5. **๐Ÿ“ Commits changes** with timestamp and repository count
6. **๐Ÿš€ Auto-deploys** updated visualization to GitHub Pages

### ๐ŸŽฏ **Manual Updates**

**From the app UI:**
- Click the "๐Ÿ”„ Refresh Data" button in the header
- It opens the Actions page: "Update Stars and Deploy to Pages"
- Click "Run workflow" โ†’ "Run workflow"
- Within 2-3 minutes, Pages redeploys automatically

**Using GitHub CLI:**
```bash
gh workflow run update-data.yml --ref main
```

### ๐Ÿงช **Run Locally**
```bash
# Generate data locally
GITHUB_USERNAME=your-username node scripts/fetch-data.js > data/repositories.json

# Serve statically like GitHub Pages
npx -y serve -l 4000 -s .
# Open http://localhost:4000
```

---

## ๐Ÿ“ฑ **Device Compatibility**

### ๐Ÿ’ป **Desktop Experience**
- Full feature set with all controls and interactions
- Keyboard shortcuts (Escape to reset filters)
- Precise mouse interactions for detailed exploration
- Large screen optimization for better clustering visibility

### ๐Ÿ“ฑ **Mobile Experience** (NEW!)
- **Touch-friendly interface** with collapsible navigation panels
- **Hamburger-style toggles** for filters (โš™๏ธ) and legend (๐ŸŽจ)
- **Smart tooltips** that adjust position to stay within viewport
- **Responsive layouts** for portrait and landscape orientations
- **Gesture support**: Pinch-to-zoom, swipe, drag interactions
- **44px minimum tap targets** for accessibility
- **Optimized breakpoints** for all screen sizes

### ๐ŸŒ **Browser Support**
- โœ… **Chrome/Chromium** (recommended)
- โœ… **Firefox**
- โœ… **Safari** (desktop and iOS)
- โœ… **Edge**
- โœ… **Mobile browsers** (Chrome Mobile, Safari iOS, Samsung Internet)
- โš ๏ธ **Internet Explorer**: Not supported

---

## ๐Ÿ”ง **Troubleshooting Guide**

### ๐Ÿšจ **Common Issues & Solutions**

#### **Issue: Site shows 404 error**
**Solution**:
- Wait 5-10 minutes after first deployment
- Check that GitHub Pages is set to "GitHub Actions" in Settings โ†’ Pages
- Verify the workflow completed successfully (green checkmark in Actions)

#### **Issue: Mobile panels won't open**
**Solution**:
- Look for โš™๏ธ and ๐ŸŽจ buttons at bottom-left corner
- Ensure JavaScript is enabled in your browser
- Try refreshing the page
- Check browser console for errors

#### **Issue: 0 visible repositories**
**Solution**:
- Click "All" button in category filters to reset
- Clear search box if you have text in it
- Press Escape key to reset all filters
- Try refreshing the page

#### **Issue: Workflow fails with rate limit**
**Solution**:
- GitHub allows 5,000 requests/hour with authentication
- The GITHUB_TOKEN is automatically provided by Actions
- If issues persist, check Actions logs for details

#### **Issue: Graph looks cluttered**
**Solution**:
- Use category filters to focus on specific types
- Try star count filters (10K+, 50K+) to see only popular repos
- Use search to find specific repositories
- Zoom in to see detailed areas, zoom out for overview
- On mobile, use collapsible panels to maximize graph space

---

## ๐Ÿ“Š **Data Structure & API**

### ๐Ÿ“‹ **Repository Data Format**
```json
{
"repositories": [
{
"id": 669879380,
"name": "LLMs-from-scratch",
"owner": "rasbt",
"fullName": "rasbt/LLMs-from-scratch",
"description": "Implement a ChatGPT-like LLM in PyTorch from scratch",
"url": "https://github.com/rasbt/LLMs-from-scratch",
"language": "Jupyter Notebook",
"stars": 73565,
"forks": 10699,
"category": "ai-ml",
"updatedAt": "2025-10-28T06:32:44.599Z",
"topics": ["machine-learning", "pytorch", "llm"]
}
],
"lastUpdated": "2025-10-28T06:32:44.599Z",
"totalCount": 958,
"categoryStats": {
"ai-ml": 247,
"python": 112,
"web-dev": 91
},
"languageStats": {
"JavaScript": 145,
"Python": 134,
"TypeScript": 89
}
}
```

---

## ๐ŸŽจ **Customization Options**

### ๐ŸŽฏ **Add Custom Categories**
Update both `app.js` and `scripts/fetch-data.js`:
```javascript
this.categories = {
'my-category': {
strong: ['exact-match', 'specific-framework'], // 10 points
medium: ['general-term', 'category-keyword'], // 5 points
weak: ['common-descriptor'] // 2 points
},
// ... existing categories
};
```

### ๐ŸŒˆ **Change Color Scheme**
Update `app.js`:
```javascript
this.categoryColors = {
'my-category': '#YOUR-COLOR',
// ... other categories
};
```

### โฐ **Adjust Update Frequency**
Modify `.github/workflows/update-data.yml`:
```yaml
schedule:
- cron: '0 */2 * * *' # Every 2 hours
- cron: '0 8 * * *' # Daily at 8 AM UTC
- cron: '0 0 * * 0' # Weekly on Sunday
```

---

## ๐Ÿš€ **Performance & Limits**

### ๐Ÿ“ˆ **Performance Metrics**
- **Repository Capacity**: Up to 1,000 starred repositories (GitHub API limit)
- **Load Time**: 2-5 seconds for 958+ repositories
- **Rendering**: Optimized D3.js with efficient force simulation
- **Memory Usage**: ~80-120MB for full dataset in browser
- **Mobile Performance**: Optimized with efficient rendering and touch handling

### ๐Ÿ“Š **API Limits & Usage**
- **GitHub API**: 5,000 requests/hour (authenticated via Actions)
- **Repository Fetch**: ~10 API calls for 958 repositories (100 per page)
- **Rate Limiting**: Built-in delays between API requests
- **Caching**: Data stored in repository to reduce API calls

---

## ๐Ÿ“„ **License & Credits**

### ๐Ÿ“œ **License**
MIT License - Feel free to use, modify, and distribute!

### ๐Ÿ™ **Credits**
- **Built with**: D3.js by Mike Bostock
- **Powered by**: GitHub API and GitHub Actions
- **Hosted on**: GitHub Pages
- **Enhanced by**: Claude Code (AI-assisted development)
- **Inspired by**: The amazing open source community

### โญ **Support**
If you find this project helpful:
- Give it a star โญ on GitHub
- Share it with other developers
- Contribute improvements
- [Report issues](https://github.com/niranjanxprt/starred-repos-graph/issues) or suggestions

---

## ๐Ÿ“ **Changelog**

### **v3.0.0** - 2025-10-28 ๐ŸŽ‰
- ๐Ÿง  **Intelligent Categorization System**: Advanced weighted scoring algorithm
- Word boundary matching to prevent false positives
- Multi-factor analysis (name, description, topics, language)
- Weighted keywords: Strong (10pts), Medium (5pts), Weak (2pts)
- Topic bonuses and language boosts
- Fixed misclassifications (kubernetesโ†’devops, AWSโ†’cloud)
- ๐Ÿ†• **New Categories**: Cloud, Monitoring, Testing, Networking (19 total)
- ๐Ÿ“Š **Improved Distribution**: AI/ML 43%โ†’26%, DevOps 2%โ†’4%, Cloud 0%โ†’3%
- ๐ŸŽจ **Dark Professional Theme**: Optimized background for better node visibility
- ๐Ÿ“ฑ **Mobile-Responsive Design**: Complete mobile optimization
- Collapsible navigation panels with hamburger toggles
- Touch-friendly controls (44px minimum tap targets)
- Smart tooltip positioning
- Landscape orientation support
- Responsive breakpoints (480px, 768px, 1024px)
- ๐Ÿ”ง **Backend Synchronization**: Applied scoring to both frontend and data fetch script

### **v2.1.0** - 2025-09-29
- ๐ŸŽจ Enhanced visualization with strategic category positioning
- ๐Ÿ Fixed Python language filter
- ๐Ÿ”— Improved clustering with intelligent repository connections
- ๐Ÿ“Š Better node sizing and visual hierarchy
- ๐ŸŽฏ Enhanced tooltips with richer repository information

### **v2.0.0** - 2025-09-29
- ๐Ÿค– Complete GitHub Actions automation (every 6 hours)
- ๐Ÿ“Š Smart categorization system with 15 categories
- ๐Ÿ” Advanced filtering (search, category, language, stars)
- ๐ŸŽจ Modern glassmorphism UI
- ๐Ÿ“ฑ Basic responsive layout

### **v1.0.0** - 2025-09-29
- ๐ŸŒŸ Initial release with D3.js force-directed graph
- ๐Ÿ“ Basic category organization
- ๐Ÿ” Simple search functionality

---

**๐ŸŒŸ Explore the fascinating world of open source through interactive visualization!**

*Transform your GitHub stars into beautiful, intelligent insights with advanced categorization, mobile-responsive design, and automatic updates.* ๐Ÿš€

**Live Demo**: https://niranjanxprt.github.io/starred-repos-graph/