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.





