A comprehensive, open-source dashboard that aggregates data from all major developer platforms into one beautiful, unified interface.
- GitHub: Repositories, stars, contributions, language stats
- LeetCode: Problem solving stats, contest performance, badges
- npm: Package downloads and statistics
- Dev.to: Article analytics and engagement
- Stack Overflow: Reputation and badge tracking
- HackerRank: Coding challenges and certifications
- Codeforces: Competitive programming stats
- Contribution heatmaps (GitHub-style)
- Language distribution charts
- Problem-solving progress tracking
- Real-time data updates with caching
- Interactive data visualizations
- Responsive design (mobile-first)
- Dark/Light theme support
- Smooth animations and transitions
- Modular widget architecture
- Customizable dashboard layout
- Server-side caching
- Optimized API calls
- Lazy loading components
- Progressive Web App ready
- Frontend: Next.js 14, React 18, Tailwind CSS
- Charts: Recharts
- Icons: React Icons
- Styling: Tailwind CSS with custom components
- Caching: In-memory cache with TTL
- Deployment: Vercel/Netlify ready
- Node.js 18+
- npm or yarn
-
Clone the repository
git clone https://github.com/your-username/universal-dev-dashboard.git cd universal-dev-dashboard -
Install dependencies
npm install
-
Set up environment variables
cp env.example .env.local
Edit
.env.localwith your API keys:# GitHub API GITHUB_TOKEN=your_github_personal_access_token # LeetCode (optional) LEETCODE_USERNAME=your_leetcode_username # Other services...
-
Run the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
- Go to GitHub Settings → Developer settings → Personal access tokens
- Generate a new token with
public_repoandread:userscopes - Add the token to your
.env.localfile
- Your LeetCode username is sufficient (no API key required)
- Add your username to the dashboard settings
Each service has its own configuration requirements. Check the individual service documentation for setup instructions.
universal-dev-dashboard/
├── components/
│ ├── dashboard/ # Dashboard layout components
│ ├── widgets/ # Service-specific widgets
│ └── ui/ # Reusable UI components
├── lib/
│ ├── api/ # API service handlers
│ └── utils/ # Utility functions
├── pages/
│ ├── api/ # Next.js API routes
│ └── index.js # Main dashboard page
├── public/
│ └── icons/ # Service icons
├── styles/
│ └── globals.css # Global styles
└── hooks/ # Custom React hooks
-
Create API handler in
lib/api/// lib/api/newservice.js export const getUserStats = async ({ username }) => { // API implementation };
-
Create widget component in
components/widgets/// components/widgets/NewServiceWidget.jsx const NewServiceWidget = ({ username }) => { // Widget implementation };
-
Add to API router in
pages/api/[...service].jsconst serviceHandlers = { // ... existing services newservice: { stats: newservice.getUserStats } };
Each widget is self-contained and can be customized independently:
<GitHubWidget
username="your-username"
token="your-token"
showRepos={true}
showContributions={true}
/>- Push your code to GitHub
- Connect your repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy!
- Build the project:
npm run build - Deploy the
outdirectory - Add environment variables in Netlify dashboard
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Add tests (if applicable)
- Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow the existing code style
- Add TypeScript types when possible
- Include proper error handling
- Write meaningful commit messages
- Test your changes thoroughly
GET /api/github/stats?username=username&token=tokenGET /api/leetcode/stats?username=username{
"username": "string",
"stats": {
"repos": "number",
"stars": "number",
"followers": "number"
},
"data": "object"
}GitHub API Rate Limits
- Use a personal access token
- Implement proper caching
- Consider using GitHub Apps for higher limits
LeetCode Data Not Loading
- Verify username is correct
- Check network connectivity
- Ensure user profile is public
Widget Not Rendering
- Check browser console for errors
- Verify API endpoints are working
- Ensure all required props are passed
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js for the amazing React framework
- Tailwind CSS for the utility-first CSS framework
- Recharts for beautiful data visualizations
- React Icons for the icon library
- All the open-source contributors who made this possible
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: your-email@example.com
Made with ❤️ by the open-source community