Coder Social home page Coder Social logo

weather-forecast's Introduction

Get Weather Forecast Android App

This app will let you retrieve weather information based on your searching criteria and render the searched results on the dashboard screen.

processed

Getting Started

  • Clone or download this repository
  • Run and feel free to use this app without any account

Functionalities

  • Input the city name with a minimum of 3 keywords, it's will automatically searching. Or you can manually search by click on the "Get weather" button.
  • Render the searched results as a list of weather items.
  • Support caching mechanism to prevent the app from generating a bunch of API requests.
  • Manage caching mechanism & lifecycle.
  • Handle failures.
  • Supports disability using Talkback (screen reader)
  • Encrypt and decrypt any internal data caching.
  • Unit testing for ViewModel logic.

Libraries and Frameworks

  • Presentation module
    • Data-binding
    • MVVM
    • Navigation Graph
  • Data module
    • SharePreference
  • Network
    • Retrofit: ver 2.7.1 support kotlin coroutines
    • Okhttp3
    • Gson
  • Dependence Injection: Hilt
  • Kotlin coroutines
  • Layout
    • ConstraintLayout
  • Testing
    • JUnit4
    • Mockito
    • Nhaarman mockito kotlin

Base Architecture Diagram (Model-View-ViewModel)

image

View

  • Activity, Fragment, Views
  • Binding data from ViewModel
  • Handle UI logic

View-Model

  • Live Data
  • Code logic

Domain use-case

Define all functions to use-case

  • Get data from the repository

Model - Data layer | Repository

All data needed for the application comes from this

Receive a request to get data. Switch data between remote and local to return a value

  • Local data source: Room for complexly functions in the feature
  • Remote data source: web service API
  • Share preference

Outputs completed

  1. Programming language: Kotlin
  2. Design app's architecture (MVVM)
  3. Apply LiveData mechanism
  4. UI looks like in the attachment.
  5. Write UnitTests
  6. Acceptance Tests
  7. Exception handling
  8. Caching handling (using hashMap instead of DataBase cause weather forecast information can be changed by time)
  9. Secure Android app from:
    • a. Decompile APK (ProGuard)
    • d. Encryption for sensitive information (Encrypt in share preference)
  10. Accessibility for Disability Supports: a. Talkback: Use a screen reader.
  11. Solution diagrams for the components, infrastructure design.
  12. Readme file includes:
    • a. A brief explanation for the software development principles, patterns & practices being applied
    • b. A brief explanation for the code folder structure and the key Kotlin libraries and frameworks being used
    • c. All the required steps to get the application run on local computer
    • d. A checklist of items has been done.
    • d. A checklist of items has been done.

weather-forecast's People

Contributors

truongthanhit avatar

Stargazers

 avatar Nguyễn Hoàng Nam avatar

Watchers

 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.