Git Product home page Git Product logo

lloydblv / gooddictionary Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 5.61 MB

Android application showcasing treating a huge data base with more than 370k records with filter and search functionalities, Jetpack Compose, Dagger Hilt, MVVM, Coroutines, Flows, 100% Kotlin, Tests etc

Home Page: https://medium.com/@mrnajafi

Kotlin 100.00%
android dagger-hilt huge-data mvvm-architecture performance test

gooddictionary's Introduction

Good Dictionary

Introduction

Welcome to Good Dictionary, a cutting-edge, efficient dictionary app crafted with Kotlin, showcasing the best of Android development technologies. Our mission is to deliver a seamless and enriching dictionary experience, powered by Kotlin Coroutines, MVVM architecture, Kotlin Flows, among others.

Project Structure

Good Dictionary is structured into several modules, designed for scalability, maintainability, and modular development. Here's an overview of our module architecture:

  • App Module (app): The main entry point of the application, integrating all other modules and handling the app lifecycle.
  • UI Modules:
    • Words List (:ui:words-list): Manages the presentation and interaction logic for listing dictionary words.
    • Word Details (:ui:word-details): Handles the display of detailed information for a specific word.
    • Splash Screen (:ui:splash): Presents the initial splash screen to users upon app launch.
  • Data Module (data): Responsible for data management, including storage, retrieval, and manipulation. It depends on the Domain module for data definitions.
  • Domain Module (domain): Contains the business logic and use cases of the application. It is a dependency for all UI modules and the Data module.

Module Graph

Each UI module depends on the Domain module to ensure separation of concerns and modularity. The Data module also depends on the Domain module for defining data structures and business rules.

Current State and Next Steps

the project showcases a solid foundation and a glimpse into its potential. However, to fully realize this potential, the following steps are necessary:

  • Increase Code Coverage: Currently, only a limited number of tests have been written. Expanding test coverage is crucial for ensuring reliability and maintainability.
  • Architecture Refinement: Transitioning to a Unidirectional Data Flow (UDF) architecture from the current ViewModel usage could enhance the project's scalability and readability.
  • Screenshot Testing: Implementing screenshot testing to ensure UI consistency across devices and versions.
  • Continuous Integration (CI) Pipeline: Establishing a CI pipeline would automate testing and build processes, ensuring that every change is verified for quality and functionality.

Features

  • Fast and responsive dictionary search functionality.
  • Modern, intuitive UI with Jetpack Compose.
  • Asynchronous data handling with Kotlin Coroutines and Flows.
  • MVVM architecture for scalable development.
  • Dependency Injection with Dagger Hilt for a clean, manageable codebase.
  • Modular architecture for focused development and faster build times.
  • State-of-the-art navigation and design with Compose Navigation and Material3.
  • Performance optimizations with Microbenchmarking, KSP, and Compose Metrics.

Screenshots

Getting Started

Prerequisites

  • Android Studio Jellyfish | 2023.3.1 Canary 12 or later
  • JDK 17 or later

Building the Project

  1. Clone this repository.
  2. Open the project in Android Studio.
  3. Sync the project with Gradle files.
  4. Build the project by selecting Build > Make Project.
  5. To run the application, select Run > Run 'app'.

Technologies Used

  • Kotlin Coroutines & Flows
  • Jetpack Compose
  • MVVM Architecture
  • Jetpack Worker
  • Dagger Hilt
  • Gradle Convention Plugins
  • Spotless
  • Compose Linter
  • Multi-Module Architecture
  • Compose Navigation
  • Material3
  • Microbenchmarking
  • KSP (Kotlin Symbol Processing)
  • Compose Metrics

gooddictionary's People

Contributors

lloydblv avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.