Skip to content

CookieNote is a modern note-taking Android app built with Kotlin using Jetpack Compose for UI and a robust MVI (Model-View-Intent) architecture.

Notifications You must be signed in to change notification settings

AsH1605/CookieNote

Repository files navigation

🍪 CookieNote - Android

CookieNote is a modern note-taking Android app built with Kotlin using Jetpack Compose for UI and a robust MVI (Model-View-Intent) architecture. The app is backed by a custom backend server and supports both offline and online functionality through Room for local storage and Retrofit for network communication. See Backend here: https://github.com/AsH1605/NotesAppBackend

📱 Features

  • ✅ Create, Edit, and Delete Notes
  • ✅ Sync notes with a custom backend server
  • ✅ Offline access to notes
  • ✅ Modern Jetpack Compose UI
  • ✅ Separation of concerns using clean architecture (data-domain-presentation)

⚙️ Architecture

CookieNote follows a Clean Architecture approach with 3 distinct layers:

1. Domain Layer

  • Contains pure Kotlin code.
  • Defines all business logic.
  • Independent of the Android platform.
  • Contains repository interfaces, use cases, and core domain models.

2. Data Layer

  • Implements the repository interfaces defined in the domain layer.
  • Handles network calls using Retrofit.
  • Provides local storage using Room database.
  • Contains platform-specific implementations (e.g., Android database, network).

3. Presentation Layer

  • Contains all UI components built with Jetpack Compose.
  • Implements MVI (Model-View-Intent) architecture for state management.
  • Depends only on the domain layer, ensuring UI logic is separated from data management.
  • Dependency injection is handled using Dagger Hilt, which binds the domain and data layers at runtime.

Tech Stack

Layer Technology
UI Jetpack Compose
DI Dagger Hilt
Local Storage Room Database
Network Retrofit
Language Kotlin (100%)

📡 Backend Integration

CookieNote connects to a custom backend using Retrofit, handling:

  • Authentication
  • Syncing notes between local database and server
  • Fetching user-specific notes

🏛️ Dependency Injection

The app uses Dagger Hilt for dependency injection, ensuring:

  • Clear scoping across layers (App scope, ViewModel scope, etc.)
  • Seamless injection of platform-specific implementations (e.g., repository implementations from :data into :presentation).

🗄️ Local Storage

  • Notes are saved locally using Room.
  • In offline mode, users can still manage their notes, and changes are synced when back online.

Happy Coding 🍪

About

CookieNote is a modern note-taking Android app built with Kotlin using Jetpack Compose for UI and a robust MVI (Model-View-Intent) architecture.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages