CodeStreak is not just another coding app; it is a discipline builder. Designed for developers who struggle with consistency, CodeStreak delivers exactly one high-quality coding problem every day at 9:00 AM.
Unlike massive platforms that overwhelm you with thousands of choices, CodeStreak focuses on the habit. It features a distraction-free environment, offline capability, and a "sassy" notification system that guilt-trips you into coding.
"Consistency eats talent for breakfast." — CodeStreak helps you win the morning.
- Curated Challenge: A fresh algorithmic problem unlocks every day at 9:00 AM.
- 24-Hour Cycle: Solve it before the clock resets to keep your streak alive.
- Smart Difficulty: Questions range from Easy to Hard, covering Arrays, Trees, DP, and more.
- Syntax Highlighting: A beautiful, dark-themed code editor built for mobile.
- Deferred Rendering: Optimized performance ensuring butter-smooth transitions even on heavy loads.
- No Peeking: Solutions are locked until you submit a valid attempt.
- Heatmap Visualization: Track your consistency with a GitHub-style contribution graph.
- Streak Counter: Don't break the chain! Visual cues change based on your streak length.
- Badges: Earn achievements for milestones (e.g., "7-Day Streak", "Graph Master").
- Offline-First: Built with Room Database, allowing you to view bookmarks and past solutions without internet.
- Sassy Notifications: A background worker (
WorkManager) that sends randomized, motivational (and slightly aggressive) reminders if you haven't coded by noon. - Smooth Animations: Custom navigation transitions that mimic native iOS/Android system gestures.
| Home Dashboard | The Workspace | Profile & Heatmap |
|---|---|---|
![]() |
![]() |
![]() |
| Solution Screen | Daily Notification | Saved Questions Screen |
|---|---|---|
![]() |
![]() |
![]() |
Engineered with Modern Android Development (MAD) standards.
| Layer | Component | Technology Used |
|---|---|---|
| 🎨 UI | Design System | Jetpack Compose (Material 3) |
| Animations | androidx.compose.animation (AnimatedContent, Shimmer) |
|
| Navigation | State-based Navigation with Smart Transitions | |
| 🧠 Logic | Architecture | MVVM + Clean Architecture |
| DI | Dagger Hilt | |
| Concurrency | Coroutines & Kotlin Flows | |
| 💾 Data | Local DB | Room (Offline Caching) |
| Remote | Firebase Firestore (Real-time Sync) | |
| Auth | Firebase Auth (Google Sign-In) | |
| ⚙️ System | Background | WorkManager (Periodic Notifications) |
| Permissions | Android 13+ Notification & Battery Optimization Logic |
CodeStreak follows a strict Unidirectional Data Flow (UDF) to ensure stability and testability.
graph TD
UI[Compose UI Layer] <-->|State & Events| VM[ViewModel]
VM <-->|Use Cases| Repo[Repository]
Repo <-->|Remote| Fire[Firebase Firestore]
Repo <-->|Local Cache| Room[Room Database]
Repo <-->|Auth| GAuth[Google Sign-In]
Work[WorkManager] -->|Trigger| Notify[Notification System]
com.fury.codestreak
├── data # Data Layer (Single Source of Truth)
│ ├── local # Room Database (Offline Cache)
│ │ ├── AppDatabase
│ │ ├── QuestionDao
│ │ └── QuestionEntity.kt
│ ├── remote # Network Data Source
│ │ └── CodeforcesApi
│ ├── model # Data Transfer Objects (DTOs)
│ │ └── CodeforcesModels.kt
│ └── repository # Repository Implementations
│ ├── AuthRepositoryImpl
│ ├── QuestionRepositoryImpl
│ └── UserRepositoryImpl
├── di # Dependency Injection
│ └── AppModule # Hilt Module (Provides Singletons)
├── domain # Domain Layer (Pure Business Logic)
│ ├── model # Core App Models
│ │ ├── Question
│ │ └── User
│ └── repository # Repository Interfaces
│ ├── AuthRepository
│ ├── QuestionRepository
│ └── UserRepository
├── presentation # UI Layer (Jetpack Compose + MVVM)
│ ├── auth # Authentication
│ │ ├── AuthScreen.kt
│ │ └── AuthViewModel.kt
│ ├── home # Dashboard & Daily Logic
│ │ ├── HomeScreen.kt
│ │ └── HomeViewModel.kt
│ ├── workspace # Code Editor & Submission
│ │ ├── CodeEditor.kt
│ │ ├── WorkspaceScreen.kt
│ │ └── WorkspaceViewModel
│ ├── profile # User Stats & Heatmap
│ │ ├── ProfileScreen.kt
│ │ └── ProfileViewModel.kt
│ ├── solution # Solution Reveal Logic
│ │ ├── SolutionScreen.kt
│ │ └── SolutionViewModel
│ ├── bookmarks # Saved Questions
│ │ ├── BookmarksScreen.kt
│ │ └── BookmarksViewModel.kt
│ ├── components # Reusable UI Components
│ │ └── Shimmer.kt
│ └── theme # Material 3 Design System
│ ├── Color.kt
│ ├── Theme.kt
│ └── Type.kt
└── util # Utilities & Background Tasks
├── NotificationWorker # WorkManager for Daily Alerts
├── Resource # Sealed Class for Data State
├── CodeStreakApp # Application Entry Point
└── MainActivity # Single Activity Architecture
Download the App:
- Click below to download the latest stable version (v1.1.0) for your Android device:
- 👉 Download CodeStreak-v1.1.0.apk
OR
-
Clone the repository:
git clone https://github.com/SilentFURY-x/CodeStreak-Daily-Coding-App.git
-
Add Firebase
- Create a project on Firebase Console.
- Download google-services.json and place it in the app/ directory.
-
Build & Run:
- Open in Android Studio (Koala or newer).
- Sync Gradle and Run on Emulator/Device.
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
-
Fork the Project
-
Create your Feature Branch:
git checkout -b feature/AmazingFeature
-
Commit your Changes:
git commit -m 'Add some AmazingFeature' -
Push to the Branch:
git push origin feature/AmazingFeature
-
Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
🔥 Don't break the chain.





