Giter VIP home page Giter VIP logo

mahao-android's Introduction

GPLv3 License

Mahao Android

Mahao is an Android application that recommends houses for rent to users. This application uses a recommender system that allows users to conduct a preference-based search for rental homes. The recommendations will be based on a collaborative recommendation model. This means that the user-user relationship, as well as the user-item relationship, plays a role in the recommendation. The application was the fourth-year project submitted in partial fulfilment of the requirements for a BSc. Computer Science.

Project Setup

  1. Clone the repo using git clone https://github.com/tonyawino/Mahao-Android.git
  2. Open the project in Android Studio
  3. Generate a Google Maps API Key
  4. Replace the API Key in the google_maps_api file with the generated API key <string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">YOUR_KEY_HERE</string>
  5. Hit "Run". Done!

Architecture Overview

Mahao uses MVVM architecture for separation of concerns and state maintenance on configuration changes.

The application uses Jetpack's Navigation component and has a single Activity with multiple fragments.

All operations are performed via accessing API endpoints over the network, making the app effectively a stateless client.

The single activity and fragments are solely there to help with presentation logic. Each activity and the majority of the fragments have their own ViewModels, which contain the business logic. The ViewModel uses LiveData to react to data changes and instructs the fragment/activity how to update itself.

Dependencies

These are the libraries the project depends on:

  • Jetpack
    • Viewmodel - Manage UI related data in a lifecycle conscious way and act as a channel between business logic and ui
    • View Binding - View binding is a feature that allows you to more easily write code that interacts with views
    • Room - Provides abstraction layer over SQLite
    • Navigation - The Navigation component provides fragment transactions
    • Paging - Load and display small chunks of data at a time
  • Google Maps - Displays a map by using the Google Maps
  • Places - Allows you to build location-aware apps that respond contextually to places near the user's device.
  • Retrofit - Type safe http client and supports coroutines out of the box
  • Gson - Library that can be used to convert Java Objects into their JSON representation.
  • okhttp-logging-interceptor - Logs HTTP request and response data
  • Glide - Media management and image loading framework for Android
  • Material Design - Build awesome beautiful UIs
  • Dagger - Dependency injection on Android
  • Espresso - Test framework to write UI Tests
  • Ronnie-Image-Picker - Asks for Camera and storage permission and return uri of the images taken or picked from the gallery
  • Lottie for Android - Parses Adobe After Effects animations exported as json with Bodymovin and renders them natively on mobile
  • oss-licenses - Displaying the notices for the open source libraries that your app uses
  • Smart App Rate - Smart app rate dialog for Android which takes user rating into consideration

Demo

Create Property View Property View properties list and filter Search and sort View properties on map View and edit profile

Authors

License

GPL v3

Mahao is an Android application that recommends houses for rent to users. 
Copyright (C) 2022  Tony Awino

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

mahao-android's People

Contributors

bardiaalavi-2020 avatar tonyawino 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.