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 vimalyadavkr001@gmail.com 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: vimalyadavkr001@gmail.com
- 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