stevdza-san / DiaryApp

Multi-Modular Android application built with MongoDB's Device Sync.
153 stars 32 forks source link
dagger-hilt device-sync firebase-auth firebase-storage jetpack-compose kotlin material3 mongodb multi-module-architecture multi-modules-android one-tap-sign-in room-database


Thumbnail Image

DiaryApp

Complete Multi-Modular Android App
[Screenshots](#camera_flash-screenshots-camera_flash) ~ [Deployment](#arrow_lower_right-deployment-arrow_lower_right) ~ [Architecture](#hammer_and_wrench-architecture-hammer_and_wrench) ~ [Tech Stack](#building_construction-tech-stack-building_construction) ~ [Authors](#memo-authors-memo) ~ [Contributing](#handshake-contributing-handshake) [License](#scroll-license-scroll)

DiaryApp allows users to write and save diary entries with the option to include photos and expressive emojis to capture the essence of each moment.

DiaryApp is a complete course project written in Kotlin and powered by Jetpack Compose. It is a Single Module Project but with a branch that incorpolates the Multi-Modular approach. The Data part is handled by a Mongo-Firebase Combo.

This project is a valuable resource for developers seeking to learn multi-modular architecture from scratch.

Start your next Android chapter by grabing this Loaded and Modern Android Course.

You can also browse and reward yourself with more great courses

:camera_flash: Screenshots :camera_flash:

DiaryApp follows the latest Material 3 guidelines for a visually appealing and a consistent UI.

              

:arrow_lower_right: Deployment :arrow_lower_right:

These are the key parameters for DiaryApp.

Parameters Value
compileSdk 34
targetSdk 34
minSdk 23
kotlinVersion 2.0.0

You can clone the repository or download the Zip file here

To build and run the app, you will need the latest version of Android Studio Flamingo (or newer) installed on your system.

:hammer_and_wrench: Architecture :hammer_and_wrench:

Modules

DiaryApp is initially built using Android Clean Architecture that follows the more familiar Model-View-ViewModel (MVVM) pattern.

On the second branch the project is restructured into a Multi-Module Architecture using layered features.

Here's an overview of the app's architectural modular components:

Navigation

The app has :three: screen destinations which use Compose Navigation to manage navigation.

:feature:auth :feature:home :feature:write

Overroll by adopting a multi-modular architecture with layered features, the DiaryApp achieves a separation of concerns, enabling independent development and testing of specific functionalities. This architecture promotes code reusability, scalability and easy maintainability

:building_construction: Tech Stack :building_construction:

The DiaryApp project uses many popular libraries and tools in the Android Ecosystem:

:memo: Authors :memo:

Do Reach Out :

Check out my online courses: Online Courses

Buy Me A Coffee

:handshake: Contributing :handshake:

Contributions to make DiaryApp better are always welcome!

If you are interested in seeing a particular feature implemented in this app, please open a new issue after which you can make a PR!

:scroll: License :scroll:

MIT License

Copyright (c) [2023] [Stefan Jovanovic]

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.