Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

48 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ”₯ CodeStreak

Build the Habit. Break the Loop.

Kotlin Jetpack Compose Firebase Hilt Room


Download APK



Features β€’ Screenshots β€’ Tech Stack β€’ Architecture β€’ Setup


πŸš€ About The Project

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.


✨ Key Features

πŸ“… The Daily Drop

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

πŸ’» The Arena (Workspace)

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

πŸ† Gamification & Profile

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

⚑ Utility & Polish

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

πŸ“Έ Screenshots

Home Dashboard The Workspace Profile & Heatmap
Solution Screen Daily Notification Saved Questions Screen

πŸ› οΈ Tech Stack

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

πŸ—οΈ Architecture

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]
Loading

πŸ“‚ Directory Structure

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

⚑ Setup & Installation

Download the App:

OR

  1. Clone the repository:

        git clone https://github.com/SilentFURY-x/CodeStreak-Daily-Coding-App.git
  2. Add Firebase

    • Create a project on Firebase Console.
    • Download google-services.json and place it in the app/ directory.
  3. Build & Run:

    • Open in Android Studio (Koala or newer).
    • Sync Gradle and Run on Emulator/Device.

🀝 Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project

  2. Create your Feature Branch:

    git checkout -b feature/AmazingFeature
  3. Commit your Changes:

    git commit -m 'Add some AmazingFeature'
  4. Push to the Branch:

    git push origin feature/AmazingFeature
  5. Open a Pull Request


πŸ“„ License

Distributed under the MIT License. See LICENSE for more information.


πŸ‘¨β€πŸ’» Author

Arjun Tyagi

GitHub LinkedIn


πŸ”₯ Don't break the chain.

About

A daily coding habit builder for Android. Solve one curated algorithm problem every day, track your streaks on a heatmap, and master DSA. Built with Kotlin, Jetpack Compose, & Firebase.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages