Giter Site home page Giter Site logo

architecture_sample_currency_converter's Introduction

A MVVM sample architecture

A MVVM sample architecture using a clean code structure. Please consider the project is the result of specific exercise requirements, some choices can sound strange, for example a specific requirement was to fetch and save dollar only rate, and execute the change rate using an algorithm The project use openexchangerate api to fetch currencies rate, if you want to use a different key (or the one inside the project is expired), take a look at app/build.gradle, you can change the value there.

In this project you'll find :

  • An hybrid MVVM/clean code architectural pattern, using views-> viewmodels -> usecases -> repositories -> models
  • Material 3
  • Dependency injection using Hilt
  • Room for persistence
  • Retrofit for networking
  • Coroutines for asynchronous operations
  • LiveData and ui states handling for loading/success/error
  • Unit testing

Why a currency converter app?

The app is the result of an interview exercise (done on codility.com), by the way I think the project is simple enough to quickly understand the advantages of a MVVM and Clean Code architectural pattern, but complex enough to showcase different scenarios and decisions.

What is it not?

  • A UI/Material Design sample. The interface of the app is deliberately kept simple to focus on architecture.
  • A Jetpack Compose sample. I feel more confident using XML layouts and I believe Compose is not mature enough to replace them.
  • A real production app, consider it just a showcase of an updated mvvm sample using clean code structure and some great (jetpack) libraries.

Who is it for?

  • Anyone looking for a way to structure a robust android application that is easy to evolve and maintain
  • A quick reference for a mvvm clean architecture

The project

Clone the repository:

git clone https://github.com/nicolacaferra/architecture_sample_currency_converter.git

The app

App sample

architecture_sample_currency_converter's People

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.