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.local
with 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_repo
andread:user
scopes - Add the token to your
.env.local
file
- 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].js
const 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
out
directory - 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=token
GET /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: [email protected]
Made with ❤️ by the open-source community