Giter Site home page Giter Site logo

nikialeksey / image-search Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 1.0 10.67 MB

Another android app architecture sample

License: MIT License

Kotlin 92.07% Java 7.93%
android android-app android-application android-sdk mvvm mvvm-android jetpack jetpack-android jetpack-navigation jetpack-pagination jetpack-lifecycle-components multimodule

image-search's Introduction

build status codecov

License: MIT

How to build and run

Flickr images

You should create local.properties file if you have not yet and add there flickr.api.key field with flickr api key:

flickr.api.key=<your flickr api key>

Then, install it:

./gradlew installDebug

Fake images

./gradlew installInstrumented

Architecture aspects

Code base conventions

Project uses feature modules approach. Every feature has at least two modules: api module and primary implementation module. For example, images feature has three modules:

  • api - API module
  • flickr - primary implementation
  • fake - additional implementation with providing images from assets for testing purposes

There is app module which contains entry points for application. There are several entry points with different code base:

  • debug with primary code base (flickr images provider)
  • release with primary code base (flickr images provider)
  • instrumented entry point without flickr images provider, but with fakes for images

So when you run:

./gradlew installInstrumented

you build and install only the code with :images:fake and without :images:flickr module.

Requirements protocol

Project does not use any DI framework. When a feature-module needs for external communication, it describes the requirements in api module, and app module must implement it in an entry point, which use the feature.

Thanks

Icons from flaticon.com

image-search's People

Contributors

nikialeksey avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Forkers

alexrogalskiy

image-search's Issues

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.