Skip to content

zack-barakat/SlateStudioGeofence

Repository files navigation

SlateStudioGeofence

1 App Architecture

1.1 General App Architecture

The application uses Dagger2 to inject repositories (whom maintain data layer and business logic) into different components of the app (fragments, activities, views, services, test cases, presenters, etc...).

Important Note: All presenters and classes interacts with the repositories interfaces only and does not interact with Preference Helper directly.

1.2 Types of Repsotitoeies:

Repositories interfaces can be found under data.repositories package. Each repository is responsible for handling its side of the business logic. Dagger2 should maintain only one copy of each repository per app session (Singlton behaviour).

  • GeofenceRepository: Responsible for all geofence data such as (adding geofences, fetching geofences, removing geofences,and etc...).

1.3 UI componentes architecture

Model View Preseneter known as MVP is the the architecture pattern used to develop SlateStudio Geofence TEst application UI. Model: It is responsible for handling the data part of the application. View: It is responsible for laying out the views with specific data on the screen. Presenter: It is a bridge that connects a Model and a View. It also acts as an instructor to the View. To read more about MVP Architecture you may refer to these links:

2 Language used

2.1 Kotlin

2.2 Java

3 Main Libraries used

  • Dagger2 - Dependency injection framework
  • Anko - Set of Kotlin extensions to make android development faster
  • RxJava and RxAndroid - Reactive programming, simplifies work with threading and concurrency in java and android.
  • Mockito and Robolectric - Unit test framework and mocking tools.

4 Unit Test

All presenters have equivalent test presenets to test mvp intercations and ensure logic is done properly

5 App UI flow and functionality

There are two screens in the app, Main screen where user can view geofences and check the status whether he is inside or outside of a geofence, and create geofence screen where user can create new geofence screen.

Main Screen

Create Geofence Screen

To test the the whole flow you can download the apk using this link from bitrise: https://app.bitrise.io/artifact/12046500/p/5b0d31e273f54e06f0e8a94ce3e82adc

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published