Momentum is a feature-rich note-taking and to-do application built with modern Android development practices. It provides a seamless experience for managing tasks, capturing ideas, and synchronizing data across devices using Firebase.
The app features a rich text editor, image attachments, categorizations, and robust offline support, ensuring that you can remain productive regardless of your network connection.
- Rich Text Editing: Format your notes seamlessly.
- Image Support: Attach images to your notes using Coil for image loading.
- Organization: Pin important notes, archive completed ones, and categorize notes efficiently.
- Offline First: Write and manage notes without an internet connection. Changes sync automatically in the background using WorkManager once connectivity is restored.
- Search: Search across note titles and contents quickly.
- Calendar View: Manage tasks directly from an interactive calendar interface.
- Scheduling: Set deadlines and view tasks by date.
- Notifications: Receive scheduled local notifications for upcoming to-dos.
- Google Sign-In & Email/Password: Secure authentication via Firebase and Jetpack Credential Manager.
- Cross-Device Sync: Firebase Firestore ensures your data is always up-to-date across multiple devices.
- Language: Kotlin
- UI Framework: Jetpack Compose (Material 3 UI, Compose Navigation, Coil)
- Architecture: Clean Architecture with MVVM (Model-View-ViewModel)
- Dependency Injection: Koin
- Local Database: Room
- Background Processing: WorkManager
- Backend & Auth: Firebase (Firestore, Auth, Storage, Analytics, Crashlytics)
- Navigation: Voyager
The project is structured into logical feature modules and layers (Domain, Data, UI):
HomeScreen: Manages Notes, Archiving, and the Rich Editor. Contains Data layer (Room, Firebase), Domain Layer (UseCases, Models), and Presentation Layer (ViewModels, Compose UI).TodoFeature: Handles Todo creation, calendar integration, scheduling, and Notifications.sign_in: Manages Authentication workflows, user state, and Google Sign-in integration.
- Android Studio (Latest version recommended)
- JDK 17 or higher
- A Firebase Project
-
Clone the Repository
git clone https://github.com/yourusername/Momentum.git cd Momentum -
Firebase Setup
- Go to the Firebase Console.
- Create a new project and add an Android app.
- Register your app using the package name
com.example.noteapp. - Download the
google-services.jsonfile and place it in theapp/directory. - Enable Authentication (Email/Password & Google Sign-In).
- Enable Firestore Database and set up appropriate security rules.
- Enable Storage (if you intend to sync images).
-
Google Sign-In Requirements
- To make Google Sign-In work, ensure you've added your SHA-1 and SHA-256 fingerprint hashes in the Firebase console settings for your Android app.
- You will need to update the
default_web_client_idin yourstrings.xmlor pass it securely depending on your Firebase setup.
-
Build and Run
- Open the project in Android Studio.
- Wait for Gradle to sync.
- Select an emulator or a connected physical device and click Run.
Contributions, issues, and feature requests are welcome!
- 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)