Never lose your coding streaks again. Track all your development activity across multiple platforms in one unified dashboard.
- The Problem
- The Solution
- Features
- Tech Stack
- Getting Started
- Project Structure
- Adding New Platforms
- Contributing
- Roadmap
- License
As developers, we maintain streaks on multiple platforms—LeetCode, GitHub, Codeforces, HackerRank, and more. But tracking them individually is tedious, and losing a streak because you forgot about one platform is frustrating.
devStreak solves this by bringing all your coding activity into a single, unified dashboard.
devStreak is a cross-platform activity tracker that:
- Aggregates your coding activity from multiple platforms
- Shows all your streaks in one place
- Sends you reminders before streaks expire
- Provides insights into your coding habits
- Makes it easy to maintain consistency across platforms
- Unified Dashboard: View all your platform streaks at a glance
- Multi-Platform Support: LeetCode, GitHub, Codeforces, HackerRank, and more
- Real-Time Sync: Automatic updates from connected platforms
- Streak Notifications: Get reminded before your streak expires
- Activity Insights: Visualize your coding patterns over time
- Plugin Architecture: Easy to add new platforms without touching core code
- Responsive Design: Works seamlessly on desktop and mobile
- React with Vite for fast development
- Tailwind CSS for styling
- React Router for navigation
- Java with SpringBoot
- PostgreSQL for data storage
- RESTful API architecture
- JWT for authentication
- Platform-specific APIs (GitHub, LeetCode, etc.)
- Scheduled jobs for automatic syncing
- Node.js (v16 or higher)
- Java (17+ or higher)
- PostgreSQL (v14 or higher)
- npm or yarn
- Clone the repository
git clone https://github.com/yamiSukehiro/devStreak.git
cd devStreak- Install dependencies
# Install backend dependencies
cd backend
npm install
# Install frontend dependencies
cd ../frontend
npm install- Set up environment variables
Create a .env file in the backend directory:
PORT=5000
DATABASE_URL=postgresql://username:password@localhost:5432/devstreak
JWT_SECRET=your_jwt_secret_here
NODE_ENV=development
# Platform API Keys (add as needed)
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secretCreate a .env file in the frontend directory:
VITE_API_URL=http://localhost:5000/api- Set up the database
cd backend
npm run db:migrate
npm run db:seed # Optional: adds sample data- Run the application
In separate terminals:
# Terminal 1 - Backend
cd backend
npm run dev
# Terminal 2 - Frontend
cd frontend
npm run devThe app will be available at http://localhost:5173
devStreak/
├── frontend/
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API calls
│ │ ├── utils/ # Helper functions
│ │ └── App.jsx # Main app component
│ └── package.json
│
├── backend/
│ ├── src/
│ │ ├── configurations/ # Configuration files
│ │ ├── controllers/ # Route controllers
│ │ ├── dtos/ # Database models
│ │ ├── entities/
│ │ ├── services/ # Business logic
│ │ ├── repositories/ # Platform integrations
| | ├── utils/
│ │ └── BackendApplication.java # Entry point
│ └── pom.xml
│
└── README.md
We love contributions! Here's how you can help:
- 🐛 Report bugs and issues
- 💡 Suggest new features or platforms
- 📝 Improve documentation
- 🔌 Add new platform integrations
- ✨ Submit pull requests
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
- Test thoroughly
- Commit with clear messages
git commit -m "Add: Support for CodeChef platform" - Push to your fork
git push origin feature/amazing-feature
- Open a Pull Request
We follow conventional commits:
feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Code style changes (formatting, etc.)refactor:- Code refactoringtest:- Adding or updating testschore:- Maintenance tasks
Example: feat: add Codeforces platform integration
- Use ESLint and Prettier (configs included)
- Write meaningful variable names
- Comment complex logic
- Follow existing code patterns
- Add tests for new features
- ✅ Multi-platform support (GitHub, LeetCode, Codeforces, HackerRank)
- ✅ Unified dashboard
- ✅ Basic streak tracking
- ✅ Plugin architecture
- Email/Push notifications
- Streak reminders
- Dark mode
- Mobile app (React Native)
- More platform integrations (CodeChef, AtCoder, TopCoder)
- Social features (follow friends, compare streaks)
- Gamification (badges, achievements)
- Analytics dashboard
- Custom streak goals
- API for third-party integrations
- Browser extension
| Platform | Status | Streak Tracking | Activity Feed |
|---|---|---|---|
| GitHub | ✅ Live | ✅ | ✅ |
| LeetCode | ✅ Live | ✅ | ✅ |
| Codeforces | ✅ Live | ✅ | ✅ |
| HackerRank | ✅ Live | ✅ | ✅ |
| CodeChef | 🚧 In Progress | - | - |
| AtCoder | 📋 Planned | - | - |
| TopCoder | 📋 Planned | - | - |
Want to add a platform? See Adding New Platforms!
- GitHub API rate limiting on free tier
- LeetCode unofficial API occasionally unstable
- Timezone handling for streak calculations needs improvement
See Issues for full list.
- All API keys are stored securely using environment variables
- Passwords are hashed using bcrypt
- JWT tokens expire after 7 days
- CORS enabled only for trusted origins
- Input validation on all endpoints
Found a security vulnerability? Please email [email protected] instead of opening a public issue.
This project is licensed under the MIT License - see the LICENSE file for details.
- Thanks to all platform APIs for making this possible
- Inspired by the frustration of losing streaks
- Built with ❤️ by developers, for developers
- Author: Vimal Kumar Yadav
- Email: [email protected]
- GitHub: @yourusername
- LinkedIn: Your Profile
If you find devStreak helpful:
- ⭐ Star this repository
- 🐛 Report bugs
- 💡 Suggest features
- 🔀 Submit pull requests
- 📢 Share with other developers
# Backend tests
cd backend
npm test
# Frontend tests
cd frontend
npm test
# Test specific plugin
npm run test:plugin github# Build frontend
cd frontend
npm run build
# The build files will be in frontend/dist/
# Start backend in production mode
cd backend
NODE_ENV=production npm start# Create new migration
npm run migration:create add_new_table
# Run migrations
npm run db:migrate
# Rollback last migration
npm run db:rollbackBuilt with 🔥 by developers who hate losing streaks