Skip to content

Latest commit

 

History

History
339 lines (261 loc) · 8.61 KB

File metadata and controls

339 lines (261 loc) · 8.61 KB

🔥 devStreak

Never lose your coding streaks again. Track all your development activity across multiple platforms in one unified dashboard.

License: MIT PRs Welcome Open Source

📖 Table of Contents

🎯 The Problem

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.

✨ The Solution

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

🚀 Features

  • 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

🛠️ Tech Stack

Frontend

  • React with Vite for fast development
  • Tailwind CSS for styling
  • React Router for navigation

Backend

  • Java with SpringBoot
  • PostgreSQL for data storage
  • RESTful API architecture
  • JWT for authentication

Integrations

  • Platform-specific APIs (GitHub, LeetCode, etc.)
  • Scheduled jobs for automatic syncing

🏃 Getting Started

Prerequisites

  • Node.js (v16 or higher)
  • Java (17+ or higher)
  • PostgreSQL (v14 or higher)
  • npm or yarn

Installation

  1. Clone the repository
git clone https://github.com/yamiSukehiro/devStreak.git
cd devStreak
  1. Install dependencies
# Install backend dependencies
cd backend
npm install

# Install frontend dependencies
cd ../frontend
npm install
  1. 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_secret

Create a .env file in the frontend directory:

VITE_API_URL=http://localhost:5000/api
  1. Set up the database
cd backend
npm run db:migrate
npm run db:seed # Optional: adds sample data
  1. Run the application

In separate terminals:

# Terminal 1 - Backend
cd backend
npm run dev

# Terminal 2 - Frontend
cd frontend
npm run dev

The app will be available at http://localhost:5173

📁 Project Structure

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

🤝 Contributing

We love contributions! Here's how you can help:

Ways to Contribute

  • 🐛 Report bugs and issues
  • 💡 Suggest new features or platforms
  • 📝 Improve documentation
  • 🔌 Add new platform integrations
  • ✨ Submit pull requests

Contribution Guidelines

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/amazing-feature
  3. Make your changes
  4. Test thoroughly
  5. Commit with clear messages
    git commit -m "Add: Support for CodeChef platform"
  6. Push to your fork
    git push origin feature/amazing-feature
  7. Open a Pull Request

Commit Message Convention

We follow conventional commits:

  • feat: - New feature
  • fix: - Bug fix
  • docs: - Documentation changes
  • style: - Code style changes (formatting, etc.)
  • refactor: - Code refactoring
  • test: - Adding or updating tests
  • chore: - Maintenance tasks

Example: feat: add Codeforces platform integration

Code Style

  • Use ESLint and Prettier (configs included)
  • Write meaningful variable names
  • Comment complex logic
  • Follow existing code patterns
  • Add tests for new features

🗺️ Roadmap

Current Version (v1.0)

  • ✅ Multi-platform support (GitHub, LeetCode, Codeforces, HackerRank)
  • ✅ Unified dashboard
  • ✅ Basic streak tracking
  • ✅ Plugin architecture

Upcoming Features (v1.1)

  • Email/Push notifications
  • Streak reminders
  • Dark mode
  • Mobile app (React Native)
  • More platform integrations (CodeChef, AtCoder, TopCoder)

Future Plans (v2.0)

  • Social features (follow friends, compare streaks)
  • Gamification (badges, achievements)
  • Analytics dashboard
  • Custom streak goals
  • API for third-party integrations
  • Browser extension

📊 Platform Support

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!

🐛 Known Issues

  • GitHub API rate limiting on free tier
  • LeetCode unofficial API occasionally unstable
  • Timezone handling for streak calculations needs improvement

See Issues for full list.

🔒 Security

  • 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.

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Thanks to all platform APIs for making this possible
  • Inspired by the frustration of losing streaks
  • Built with ❤️ by developers, for developers

📞 Contact & Support

Support the Project

If you find devStreak helpful:

  • ⭐ Star this repository
  • 🐛 Report bugs
  • 💡 Suggest features
  • 🔀 Submit pull requests
  • 📢 Share with other developers

💻 Development

Running Tests

# Backend tests
cd backend
npm test

# Frontend tests
cd frontend
npm test

# Test specific plugin
npm run test:plugin github

Building for Production

# 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

Database Migrations

# Create new migration
npm run migration:create add_new_table

# Run migrations
npm run db:migrate

# Rollback last migration
npm run db:rollback

Built with 🔥 by developers who hate losing streaks

⬆ Back to Top