Skip to content

MoatazBadawy/Mawaqeet-Todo_and_Habits

Repository files navigation

مواقيت - عادات ومهام

License API Kotlin Clean Architecture MVVM

📝 Mawaqeet: Your Ultimate To-Do and Habits Companion! Get ready to immerse yourself in a sleek and intuitive user interface, where functionality meets style, built with the latest technologies and architectural paradigms.


About the project

🚀 Is a modern Android app, built In different versions (Jetpack Compose and XML). It's Powered by Hilt, Coroutines, Flow, Jetpack (Room, ViewModel, Navigation), Lottie, and Material Design. The app is structured based on Clean architecture and MVVM architecture, and modulized by feature.

🔗 Download

Go to the Releases to download the latest APK. Or get it from the Play Store 👇

Get it on Google Play

How it works

🌟 Project Overview

We have built our application in different versions to ensure everyone can learn from it. Whether you prefer the futuristic feel of Jetpack Compose or the classic reliability of XML, we've got you covered. Dive into a visually appealing design that enhances usability and captivates your senses.

Note

You can obtain the different versions of the project through the following branches:

🏗️ Project Architecture

Mawaqeet follows the Clean Architecture structure and MVVM to provide logical simplicity and maintainability.

  • The domain layer contains UseCases that encapsulate a single, specific task that is part of the application's business logic.
  • The data layer implements the repository interface defined in the domain layer, providing a single source of truth for data.
  • The UI layer cnotance view and ViewModel layers, it uses all the components and classes related to the Android framework to get the data from the ViewModel layer and display it on the device.

🧩 Structure (App Modules)

With a modular architecture, the app is designed for scalability and maintainability. New features seamlessly integrate, and updates are a breeze, ensuring Mawaqeet evolves with you.

Tip

With modularizing by feature, Every feature has it is one (data - domain - UI).

  + App <- The main module
  + common/ 
      + data <- The common database(Room) between the features
  + habits/
      + data <- implements the repository interface defined in the domain layer
        - local 
        - repositories
      + domain <- contains UseCases that encapsulate the business logic.
        - entities 
        - repository
        - usecases
      + UI <- uses MVVM with ViewModels exposing StateFlow that the UI consumes.
          - view
          - viewmodel
  + to-do <- Have the same things as habits module

🔧 Tech stack & Open-source libraries

  • Minimum SDK level 24
  • Kotlin based, Coroutines + Flow for asynchronous.
  • Jetpack Compose is Android's recommended by Google modern toolkit for building native UI.
  • Jetpack
    • Lifecycle: Observe Android lifecycles and handle UI states upon the lifecycle changes.
    • ViewModel: Manages UI-related data holder and lifecycle awareness. Allows data to survive configuration changes such as screen rotations.
    • StateFlow: For reactive style programming (from VM to UI).
    • DataBinding: Binds UI components in your layouts to data sources in your app using a declarative format rather than programmatically.
    • Room: Constructs Database by providing an abstraction layer over SQLite to allow fluent database access.
    • Hilt: for dependency injection.
    • Navigation - Used to navigate between fragments
    • Material-Components - Material design components like ripple animation, cardView.
  • Architecture
    • Clean Architecture (Data - Domain - UI)
    • MVVM Architecture (View - DataBinding - ViewModel - Model)
    • Repository Pattern
  • Lottie Effortlessly bring the smallest, free, ready-to-use motion graphics for the web, app, social, and designs.
  • Kotlin-DSL - Used to handle gradle dependencies and config versions
  • ksp: Kotlin Symbol Processing API.

🤝 Contributions

If you'd like to contribute, please take a look at the PRs Welcome label on the issue tracker.
For new features, please open an issue to discuss it before beginning implementation.

❤️ Find this repository useful?

Support it by joining stargazers for this repository. ⭐ also, follow me on GitHub for my next creations! 🤩

License

Designed and developed by 2023 Moataz Badawy

Licensed under the Apache License, Version 2.0 (the "License");
You may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.