A clean, native Android note-taking application designed to demonstrate the Google Jetpack Model-View-ViewModel (MVVM) architectural pattern and modern local persistence with Android Room Database.
+------------------------------------------------+
| View (UI Layer) |
| MainActivity / AddEditNoteActivity |
| - Observes LiveData updates |
| - Dispatches user intent & gestures |
+-----------------------+------------------------+
|
v
+------------------------------------------------+
| ViewModel Layer |
| NoteViewModel |
| - Survives configuration changes |
| - Exposes LiveData<List<Note>> |
+-----------------------+------------------------+
|
v
+------------------------------------------------+
| Repository Layer |
| NoteRepository |
| - Single source of truth |
| - Manages background thread worker execution |
+-----------------------+------------------------+
|
v
+------------------------------------------------+
| Local Database |
| Room Database / SQLite (NoteDao) |
| - Type-safe SQLite abstractions |
+------------------------------------------------+
- Jetpack MVVM Architecture: Clean separation of concerns between UI presentation, presentation logic, and underlying data persistence.
- Room SQLite Persistence: Room annotations (
@Entity,@Dao,@Database) providing compile-time verification of SQL queries and observable data streams. - Reactive UI with LiveData: Automatic UI synchronization upon database mutations with zero memory leaks.
- Optimized UI Components: Smooth swipe-to-delete and priority ordering via
RecyclerViewandItemTouchHelper.
- Language: Java
- Architecture: Android Jetpack MVVM (ViewModel, LiveData)
- Local Persistence: Room Persistence Library (SQLite)
- UI: XML Layouts, Material Design Components, RecyclerView
- Clone repository:
git clone https://github.com/HamzaA598/Notebook.git
- Open the project in Android Studio.
- Let Gradle sync and download dependencies.
- Run on an Android emulator or physical device running Android 5.0 (API 21) or higher.