A modern, responsive dashboard that showcases contributions to the OpenHands repository and All-Hands-AI organization, with a special focus on highlighting external contributors.
- 📊 Real-time GitHub Analytics: Live data from OpenHands repository and All-Hands-AI organization
- 👥 External Contributor Focus: Highlights community contributors outside the organization
- 📈 Interactive Visualizations: Charts and graphs showing contribution patterns and activity
- 🌓 Dark/Light Mode: Clean, modern interface with theme switching
- 📱 Responsive Design: Works perfectly on desktop, tablet, and mobile devices
- ⚡ Fast Performance: Optimized with caching and efficient data loading
- Node.js 18+ and npm
- GitHub Personal Access Token
- Vercel account (for deployment)
git clone https://github.com/jamiechicago312/github-dashboard-OH.git
cd github-dashboard-OH
npm install- Go to GitHub Settings → Developer settings → Personal access tokens → Tokens (classic)
- Click "Generate new token (classic)"
- Select these permissions:
- ✅
public_repo(to read public repository data) - ✅
read:org(to read organization data) - ✅
read:user(to read user profiles)
- ✅
- Copy the generated token
For Local Development:
# Copy the example file
cp .env.example .env.local
# Edit .env.local and add your token
GITHUB_TOKEN=your_github_token_here
NEXT_PUBLIC_APP_URL=http://localhost:12000.env.local file is already in .gitignore.
# Start development server
npm run dev
# Test API connection (in another terminal)
curl http://localhost:12000/api/testIf successful, you should see repository data. If not, check your token configuration.
Open http://localhost:12000 in your browser.
- Go to Vercel Dashboard
- Click "New Project"
- Import your GitHub repository
- Configure build settings (Vercel auto-detects Next.js)
In Vercel project settings:
- Go to Settings → Environment Variables
- Add these variables:
- Name:
GITHUB_TOKEN - Value: Your GitHub Personal Access Token
- Environment: Production, Preview, Development
- Name:
Vercel will automatically deploy your application. Your dashboard will be available at:
https://your-project-name.vercel.app
- Stars: GitHub stars for OpenHands repository
- Forks: Repository forks count
- Contributors: Total number of contributors
- External Contributors: Community contributors (non-org members)
- Top external contributors by contribution count
- Contributor profiles with GitHub links
- Company and location information
- Contribution statistics
- Open issues and recent activity
- Recent commits and pull requests
- Repository statistics and health metrics
- Language and size information
- Daily commit activity visualization
- Community impact percentage
- Recent activity trends
- External contribution analysis
- Frontend: Next.js 14, React 18, TypeScript
- Styling: Tailwind CSS with custom design system
- Data Fetching: SWR for caching and real-time updates
- Charts: Chart.js with React integration
- Icons: Lucide React
- Deployment: Vercel with edge functions
github-dashboard-OH/
├── app/ # Next.js app directory
│ ├── api/ # API routes
│ ├── globals.css # Global styles
│ ├── layout.tsx # Root layout
│ └── page.tsx # Home page
├── components/ # React components
├── lib/ # Utilities and API clients
├── types/ # TypeScript type definitions
├── public/ # Static assets
└── package.json # Dependencies and scripts
# Development
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run type-check # Run TypeScript checksGET /api/github/dashboard- Main dashboard dataGET /api/test- Test GitHub API connection
- Authenticated: 5,000 requests per hour
- Unauthenticated: 60 requests per hour
The dashboard implements:
- Automatic rate limit monitoring
- Request caching to minimize API calls
- Error handling for rate limit exceeded
- Tokens are stored as environment variables
- Never exposed to client-side code
- Used only in server-side API routes
The dashboard supports light and dark themes. Users can toggle between themes using the button in the header.
Built with Tailwind CSS. Customize colors and styling in:
tailwind.config.js- Theme configurationapp/globals.css- Global styles and CSS variables
- Dashboard data refreshes every 5 minutes automatically
- Manual refresh available through browser reload
- Real-time indicators show data freshness
Dashboard shows loading forever:
- Check if GitHub token is properly configured
- Verify token has correct permissions
- Check browser console for API errors
API rate limit exceeded:
- Wait for rate limit to reset (shown in error message)
- Consider implementing longer caching intervals
Deployment issues:
- Ensure environment variables are set in Vercel
- Check build logs for errors
- Verify all dependencies are properly installed
Add ?debug=true to the URL to see additional debugging information.
The dashboard is optimized for performance:
- Server-side rendering for fast initial loads
- Client-side caching with SWR
- Image optimization with Next.js Image component
- Code splitting for smaller bundle sizes
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Test thoroughly
- Commit:
git commit -m 'Add amazing feature' - Push:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- OpenHands Team for the amazing project
- All-Hands-AI Organization for fostering open source collaboration
- External Contributors who make the project better every day
Built with ❤️ for the OpenHands community