A beautiful and interactive web application that visualizes your GitHub starred repositories as a network graph. Discover connections between your favorite projects based on shared languages, organizations, dependencies, and topics.
Overview of your starred repositories with statistics and detailed repository cards
Interactive network graph with comprehensive filtering options
Force-directed visualization showing repository connections
Network visualization with detailed repository cards below showing metadata
- Interactive Network Graph: Force-directed visualization of repository connections
- Rich Repository Metadata: Stars, forks, languages, topics, and descriptions
- Multiple Connection Types: Same language, organization, shared dependencies, and topics
- Advanced Filtering: Filter by stars, forks, languages, organizations, and more
- Search & Discovery: Find specific repositories quickly
- Real-time Sync: Keep your data up to date with GitHub
- Beautiful UI: Modern, responsive design with GitHub-inspired theming
- Zoom & Navigation: Explore your repository network with smooth interactions
- Python 3.8+ and Node.js 16+
- GitHub Personal Access Token (see setup instructions below)
- UV package manager (recommended) or pip
git clone https://github.com/yourusername/git-stars.git
cd git-stars-
Generate a Personal Access Token:
- Go to GitHub Settings > Developer settings > Personal access tokens
- Click "Generate new token (classic)"
- Give it a name like "GitHub Stars Constellation"
- Select these scopes:
- ✅
public_repo(to read public repositories) - ✅
read:user(to read your user information)
- ✅
- Click "Generate token"
- Copy the token immediately (you won't see it again!)
-
Create Environment File:
cp .env.example .env
-
Add Your Token:
# Edit .env file and add your token GITHUB_TOKEN=your_github_token_here PORT=8001
# Install Python dependencies
make install
# Or manually with uv
uv sync# Start both backend and frontend
make run
# Or run them separately
make backend # Backend only (http://localhost:8001)
make frontend # Frontend only (http://localhost:5173)- Frontend: http://localhost:5173 (or the port shown in terminal)
- Backend API: http://localhost:8001
- API Documentation: http://localhost:8001/docs
- First Visit: When you first open the application, you'll see an empty dashboard
- Sync Your Stars: Click the "Sync Stars" button in the header to import your GitHub starred repositories
- Wait for Processing: The sync process will fetch your repositories and build the network graph
The Dashboard provides an overview of your starred repositories:
- Statistics Cards: Total repositories, top languages, top organizations, star distribution
- Repository List: Detailed cards showing each repository with metadata
- Timeline: Repository creation timeline by year
The Graph shows an interactive network visualization:
- Nodes: Each circle represents a repository (size indicates popularity)
- Edges: Lines show connections between repositories
- Colors: Nodes are color-coded by programming language
- Hover over nodes: See repository details in tooltips
- Click nodes: View detailed repository information
- Hover over edges: See connection type (Same Language, Same Organization, etc.)
- Drag nodes: Reposition repositories in the graph
- Zoom controls: Use the buttons in the top-right to zoom in/out
- Search: Use the search bar to find specific repositories
- Toggle labels: Show/hide repository names on the graph
Click "Filters" to customize your view:
- Basic Filters: Minimum stars, max repositories, minimum forks
- Connection Types: Choose which relationships to show
- Advanced Filters: Filter by languages, organizations, sort options
- Start with Dashboard: Get familiar with your data first
- Use Filters: Reduce clutter by filtering to specific languages or organizations
- Explore Connections: Hover over edges to understand relationships
- Zoom In: Use zoom to explore dense areas of the graph
- Search: Quickly find specific repositories you're interested in
git-stars/
├── backend/ # FastAPI backend
│ ├── app/
│ │ ├── api/ # API endpoints
│ │ ├── core/ # Configuration
│ │ ├── database/ # Database models
│ │ ├── services/ # Business logic
│ │ └── main.py # FastAPI app
├── frontend-react/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── lib/ # Utilities and API
│ │ └── types/ # TypeScript types
├── .env # Environment variables
├── Makefile # Development commands
└── pyproject.toml # Python dependencies
# Development
make run # Start both servers
make backend # Start backend only
make frontend # Start frontend only
make install # Install dependencies
# Code Quality
make lint # Run linting
make format # Format code
make test # Run tests
# Cleanup
make clean # Remove build artifacts
make clean-venv # Remove virtual environmentGET /health- Health checkGET /api/v1/repositories/- List repositoriesGET /api/v1/repositories/stats- Repository statisticsPOST /api/v1/repositories/sync- Sync repositoriesGET /api/v1/data- Graph data with filters
Create a .env file in the project root:
GITHUB_TOKEN=your_github_personal_access_token
PORT=8001
DEBUG=falseYour GitHub token needs these permissions:
public_repo- Read public repositoriesread:user- Read user information
-
"Failed to sync repositories"
- Check your GitHub token is valid and has correct permissions
- Ensure the token is properly set in
.envfile
-
"Address already in use"
- Kill existing processes:
pkill -f "uvicorn\|vite" - Or change the port in
.envfile
- Kill existing processes:
-
"No repositories found"
- Click "Sync Stars" to import your data
- Check your GitHub account has starred repositories
-
Graph not loading
- Ensure backend is running on port 8001
- Check browser console for errors
- Try refreshing the page
- Check the API documentation for backend details
- Review browser console for frontend errors
- Ensure all dependencies are installed:
make install
The network graph visualizes connections between your starred repositories:
- Same Language: Repositories written in the same programming language
- Same Organization: Repositories from the same GitHub organization
- Shared Dependencies: Repositories that use similar libraries/frameworks
- Shared Topics: Repositories with overlapping GitHub topics
This helps you discover:
- Which languages you prefer
- Which organizations you follow
- Related projects you might be interested in
- Patterns in your repository interests
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with FastAPI and React
- Graph visualization powered by D3.js
- Styled with Tailwind CSS
- Icons from Lucide React
Happy exploring your GitHub constellation! 🌟