Skip to content

SmartSettings - Domain Driven Design(DDD) Android app code. An app that aware of context and based on context apply/change your android phone settings.

License

Notifications You must be signed in to change notification settings

praslnx8/SmartSettings

Repository files navigation

SmartSettings

Docker Cloud Build Status GitHub issues GitHub GitHub last commit

We are following Domain Driven Design here.

SmartSettings Android app code and Ktor API Code.

An app that can smartly set your phone setting based on contextual data such as location, time, activity etc.

The app is decided to build with Kotlin, Android JetPack Components, Dagger2 etc.

On the architectural side, We are splitting the logic as

  1. Core Business Logic -> The model layer and
  2. Presentation logic -> UI and presentation layer.

Core/Main business logic

Core/Main business logic will be handled by models(Not just POJO or Data classes :p) itself. Please have a look at UML Diagrams expecially the class diagram to understand how the model is structured and what resposibility is provided to models.

Sequence Diagram: Sequence Diagram

Class Diagram: Class Diagram

Presentation logic

we are going with MVP + Cool feature of View Model and Live Data. :) We use liveData to listen for data changes on model side. We use presenter because, here the view should be as dumb as possible and presenter should have the business logic of user flow.

This project also uses REST API for few features such as FindMyDevice, Change PIN remotely etc. For this the REST API we are using Ktor. REST API Document: https://documenter.getpostman.com/view/132932/SW18waXa?version=latest

To Run Rest API Server from command line ./gradlew restApi:run

To Create Rest API Server with Docker ./gradlew build docker build -t prasilabs/smartsettings . docker run -m512M --cpus 2 -it -p 5000:5000 --rm my-application

docker tag prasilabs/smartsettings:latest prasilabs/smartsettings:latest docker push prasilabs/smartsettings:latest

About

SmartSettings - Domain Driven Design(DDD) Android app code. An app that aware of context and based on context apply/change your android phone settings.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages