YeetCode App is an open-source desktop application that makes competitive programming practice fun and social. Built with Electron and React, it gamifies LeetCode practice with XP, streaks, duels, and competitive features.
π Like this project? Give it a star! It helps us grow and motivates continued development.
- LeetCode Integration - Connect your LeetCode account and track problem submissions in real-time
- Study Groups - Create or join groups with invite codes, compete on group leaderboards
- XP System - Earn XP for solving problems (Easy: 100 XP, Medium: 300 XP, Hard: 500 XP)
- Daily Streaks - Maintain streaks by solving daily LeetCode problems
- Real-time Leaderboards - Global, friends, group, and university leaderboards with live updates
- Duels - Challenge friends to head-to-head coding competitions
- Normal Duels: Race to solve a problem fastest
- Wager Duels: Bet XP on your skills (winner takes all)
- Duel History: Track your wins/losses and completion times
- Bounty System - Time-limited challenges with XP rewards
- Daily Challenges - Complete LeetCode's daily problem for bonus XP
- Friends Leaderboard - Compete with your added friends
- Group Leaderboard - See rankings within your study group
- University Leaderboard - Compare with students from your university
- My University Leaderboard - Personal ranking at your school
- Magic Link Authentication - Secure email-based login with 6-digit codes
- Profile Customization - Set display names, add profile pictures
- Notifications - Desktop notifications for duels, bounties, and achievements
- Smooth Animations - Framer Motion animations for polished UI
- Electron - Cross-platform desktop framework
- React - UI components with hooks
- Vite - Fast build tool and dev server
- Tailwind CSS - Utility-first styling
- Framer Motion - Animation library
- Axios - HTTP client for API calls
- FastAPI - Python REST API server
- AWS DynamoDB - NoSQL database for user data
- AWS SDK - Cloud services integration
- Resend - Email service for magic links
- LeetCode GraphQL API - Problem data and validation
- Node.js 18+ (LTS version recommended)
- npm or yarn
- Python 3.9+ (for backend development)
# Install frontend dependencies
npm install
# Install backend dependencies (if running locally)
cd scripts/fastapi
pip install -r requirements.txtCreate a .env file in the project root:
FASTAPI_URL=your_backend_url
YETCODE_API_KEY=your_api_key# Start both Electron and Vite dev server
npm run dev
# Or start Electron separately
npm run start# Build frontend
npm run build
# Package for distribution
npm run package
# Create installers
npm run make# Package with electron-builder
npm run package:builder
# macOS unsigned build
npm run package:mac-unsigned
# Publish (requires configuration)
npm run publish# Run tests
npm test
# Run tests once
npm run test:run
# Run with coverage
npm run test:coverage
# Visual test UI
npm run test:ui# Run E2E tests
npm run test:e2e
# Run with browser visible
npm run test:e2e:headed
# Debug mode
npm run test:e2e:debug
# Visual test UI
npm run test:e2e:uinpm run test:all# Format code with Prettier
npm run format
# Check formatting
npm run format:checkThe project uses lint-staged to enforce code quality:
npm run enforce-precommit-hooksyeetcode-app/
βββ src/
β βββ components/ # React components
β β βββ leaderboard/ # Leaderboard-related components
β β βββ App.jsx # Main app component
β β βββ WelcomeStep.jsx # Onboarding steps
β β βββ ...
β βββ hooks/ # Custom React hooks
β βββ utils/ # Utility functions
β βββ index.js # Electron main process
β βββ preload.js # Electron preload script
β βββ renderer.jsx # React entry point
βββ scripts/
β βββ fastapi/ # Python backend
β βββ main.py # FastAPI app
β βββ routes/ # API endpoints
β βββ aws.py # AWS operations
β βββ ...
βββ dist/ # Built frontend files
βββ out/ # Packaged applications
βββ tests/ # Test files
- Context Isolation - Electron security best practices enabled
- Input Validation - All user inputs validated in preload script
- API Key Protection - Keys stored securely, never exposed to frontend
- Sandboxing - Renderer process runs in sandboxed environment
- URL Whitelisting - Only approved domains (leetcode.com, wa.me, t.me) allowed
We love contributions! π Please read our Contributing Guidelines before getting started.
Important: Before working on any feature or fix, please open an issue to discuss it first. This helps us coordinate efforts and ensure your contribution aligns with the project's direction.
Quick start for contributors:
- Fork the repository
- Open an issue to discuss your planned changes
- Create a feature branch
- Follow our code style guidelines
- Write tests for new features
- Submit a pull request
See CONTRIBUTING.md for detailed instructions.
This project follows the Contributor Covenant Code of Conduct. By participating, you agree to uphold this code.
YeetCode is developed and maintained by:
- Siddhant Modi - Co-creator & Lead Developer
- Akeenth Ramanathan - Co-creator & Lead Developer
We're grateful to all our contributors who help make YeetCode better! π
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright (c) 2025 Siddhant Modi and Akeenth Ramanathan