Never miss a competitive programming contest again.
A beautiful, fully-automated alarm app that wakes you up before every contest — even if you forget.
![]() Onboarding |
![]() Contest Calendar |
![]() Full-Screen Alarm |
![]() Settings |
You're a competitive programmer. You know that feeling:
"Wait, there was a Codeforces round today?!"
You set calendar reminders. You forget to check them. You rely on willpower. You oversleep. You miss Div. 2 rounds, weekly LeetCode contests, and CodeChef starters — over and over again.
CodeBuzzer exists to make that impossible.
Not just one gentle notification. CodeBuzzer hits you with a cascade of escalating reminders:
| Time Before Contest | Alert Type |
|---|---|
| ⏳ 30 minutes | Push notification |
| ⏳ 10 minutes | Push notification |
| 🔊 5 minutes | Full-screen ringing alarm (loud, with vibration) |
| 🟢 Contest start | Push notification |
The full-screen alarm rings even when your phone is locked or the app is closed. It's like a phone call you can't ignore.
- Horizontal scrollable calendar with contest indicators on each day
- Smart date-snapping — auto-jumps to the next contest day on launch
- Filter by platform to see only contests you care about
- Platform-specific timeline mode for focused browsing
| Platform | Source | Status |
|---|---|---|
| Codeforces | Live API (codeforces.com/api) |
✅ Real-time |
| LeetCode | Hardcoded schedule (Weekly + Biweekly) | ✅ Always available |
| CodeChef | Hardcoded schedule (Weekly) | ✅ Always available |
| AtCoder | — | 🔜 Coming soon |
LeetCode and CodeChef contests follow fixed schedules, so they're generated locally — no API dependency, no failures, works offline.
CodeBuzzer uses Android's WorkManager to silently sync contests every 48 hours in the background. Even if you don't open the app for a month, your alarms will keep updating themselves.
When the alarm rings, you get a beautiful full-screen experience:
- Swipe left → Dismiss
- Swipe right → Snooze (5 min)
- Or just tap the labels directly
No accidental dismissals. Inspired by the phone call UX.
Have a mock contest? A study session? An interview?
- Tap "Add Alarm" on any date to create your own custom reminder
- Set a title, description, and exact time
- Full alarm support — just like contest reminders
- Glassmorphism design with frosted blur effects
- Animated nebula landing screen with dancing platform logos
- Smooth micro-animations and transitions
- Green accent color palette (
#1CD065) - Google Sans typography throughout
- Toggle platforms on/off independently
- Custom alarm sounds — pick any audio file from your phone
- Permission manager — one-tap setup for exact alarms, notifications & overlays
- Battery optimization tips built-in
| Layer | Technology |
|---|---|
| Framework | Flutter (Dart) |
| State Management | Provider |
| Alarms | alarm package |
| Notifications | flutter_local_notifications |
| Background Sync | workmanager |
| HTTP | http |
| Storage | shared_preferences |
| Permissions | permission_handler |
lib/
├── main.dart # App entry + WorkManager setup
├── models/
│ └── contest.dart # Contest data model
├── providers/
│ └── contest_provider.dart # State management & alarm scheduling
├── services/
│ ├── alarm_service.dart # Alarm & notification scheduling
│ └── api_service.dart # API calls + hardcoded contest generation
└── ui/
├── screens/
│ ├── alarm_ring_screen.dart # Full-screen alarm with swipe actions
│ ├── home_screen.dart # Calendar + contest list
│ ├── landing_screen.dart # Animated onboarding
│ ├── main_screen.dart # Bottom nav shell
│ └── settings_screen.dart # Platform toggles, sounds, permissions
└── widgets/
├── add_alarm_popup.dart # Manual alarm creation sheet
└── mesh_background.dart # Decorative background widget
- Flutter SDK
>=3.10.4 - Android Studio / VS Code
- An Android device or emulator (API 21+)
# Clone the repo
git clone https://github.com/sambhandavale/CodeBuzzer.git
cd CodeBuzzer
# Install dependencies
flutter pub get
# Run on your device
flutter run
# Build release APK
flutter build apkThe release APK will be at build/app/outputs/flutter-apk/app-release.apk.
CodeBuzzer requests the following permissions for reliable alarm delivery:
| Permission | Why |
|---|---|
INTERNET |
Fetch Codeforces contests from API |
SCHEDULE_EXACT_ALARM |
Precise alarm scheduling |
POST_NOTIFICATIONS |
Push notification reminders |
SYSTEM_ALERT_WINDOW |
Full-screen alarm overlay |
RECEIVE_BOOT_COMPLETED |
Restore alarms after phone restart |
WAKE_LOCK |
Keep alarm ringing when screen is off |
FOREGROUND_SERVICE |
Background alarm service |
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS |
Prevent OS from killing the app |
Tip: For the most reliable experience, go to App Info → Battery → Unrestricted.
Contributions are welcome! Here are some ways you can help:
- 🐛 Report bugs — Open an issue
- 💡 Suggest features — Start a discussion
- 🔧 Submit PRs — Fork, branch, code, and open a pull request
- ⭐ Star the repo — It helps more than you think!
- Codeforces real-time API integration
- LeetCode hardcoded weekly + biweekly contests
- CodeChef hardcoded weekly contests
- Multi-stage alarm cascade (30m, 10m, 5m, start)
- Background sync with WorkManager
- Custom alarm sounds
- Swipe-to-dismiss alarm screen
- Manual alarm creation
- AtCoder support
- Contest rating predictions
- Contest problem difficulty analysis
- iOS support
- Widgets for home screen
This project is licensed under the MIT License — see the LICENSE file for details.
Built with 💚 for competitive programmers who oversleep.



