Git Product home page Git Product logo

testecommerce's Introduction

Test Ecommerce

Made by API GitHub top language Lines of code GitHub issues

Introduction

The project was made as a test task some time ago. The main requirements were making UI (XML) in accordance with the Figma, code extensibility and technology stack. The modularization of the application is a mandatory requirement. For this reason, the current project echoes Fitness Assistant. If you want to see this architecture with local database implementation please check that repository.

Previews

image




Technology Overview

Modules structure

image

  • core - Elements and Technological Solutions specific only to this project;
  • core-data - General Data and Domain layers expandable by modules;
  • core-theme - Application Theme and XML styles. The module is implemented by core. It simplifies interaction with it since core is known to everyone higher in the hierarchy of modules;
  • core-utils - Contains methods that can be used in every Android project regardless of its context;
  • feature-N - Functional part of the Application.

Architecture Diagram

image

Key points:

Data Layer is internal and not visible outside of core-data module. It helps to make an application more flexible and prevents depending on incoming data. This concept are satisfied by mappers. They convert the data layer's models to the required models. Moreover, a user will receive only the required piece of data instead of all possible (Example: Cart module, ~Local source).

MockDatabase is carried out by Shared Preferences. Full local database implementation in this case is redundant. That is why ProductInCartDto, Gson and MockDatabase have this kind of connection on the graph. They are stubs.

MyResult is a sealed class that helps to collect complex data, where errors or exceptions may be received too.

DisplayableItem is an indicator. The interface should be inherited by used models in the AdapterDelegate. AdapterDelegate is mandatory for implementation.

Dagger Dependency Graph

image ViewModelFactoryModule is added in each required Dagger Module separately. It helps to limit the visibility of each ViewModel per library module.

Internal realisation of Feature Components/Modules prevents other library classes from disclosing. Same case with Source and Data modules.




Technology Stack

  • Clean Architecture*
  • Multi module*
  • MVVM*
  • Kotlin
  • Jetpack
    • Lifecycles
    • Coroutines*
    • LiveData*
    • ViewModel
    • Navigation Component
  • AdapterDelegates*
  • Dagger2*
    • Multibinding
    • Scopes
  • Retrofit2
  • Glide

(*) - Recommended technology stack

testecommerce's People

Contributors

r-khvstnv 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.