Secure Notes is an Android application built with Kotlin and Jetpack Compose. It allows users to create, edit, delete, and securely share notes with other users in real time.
The goal of this project was to practice modern Android development while also learning how to connect a mobile app to a secure cloud backend using Firebase Authentication and Cloud Firestore.
- User registration and login with Firebase Authentication
- Persistent login state
- Input validation and error handling
- Create, edit, and delete notes
- Real-time updates using Firestore listeners
- Automatic UI updates when note data changes
- Share notes with other users by email
- Role-based access:
- Owner: full control
- Editor: can edit notes
- Reader: read-only access
- Ability to remove shared access
- Firebase Authentication required for access
- Firestore security rules for protected data access
- Owners control note permissions
- Shared users have limited read/edit access
- Client-side and backend validation
This project follows the MVVM architecture pattern.
NoteUser
AuthViewModelNotesViewModel
AuthRepositoryNotesRepository
LoginScreenRegisterScreenNotesScreenNoteEditorScreen
- Kotlin
- Jetpack Compose
- MVVM
- StateFlow
- Firebase Authentication
- Cloud Firestore
- Kotlin Coroutines
users/{userId}
notes/{noteId}
{
"id": "String",
"title": "String",
"content": "String",
"ownerId": "String",
"sharedWith": {
"userId": "read | edit"
},
"createdAt": 0,
"updatedAt": 0
}- Building Android apps with Jetpack Compose
- Managing app state with StateFlow
- Connecting Android apps to Firebase
- Writing Firestore security rules
- Designing role-based sharing features
- Structuring an app using MVVM
- No offline mode yet
- No push notifications
- Limited role types
- Basic UI styling
- Add offline support with Room database
- Add push notifications with Firebase Cloud Messaging
- Improve UI animations and theming
- Add more detailed permission controls
- Compare Firebase backend with AWS services
- Android app development with Kotlin
- Real-time cloud database integration
- Secure authentication and access control
- MVVM architecture
- Collaborative app features