Giter VIP home page Giter VIP logo

reddit's Introduction

Supported language:

Summary

  1. Introduction
  2. Architecture
  3. TODO
  4. License

Reddit Application

The requirements raised for this assignment shall test concepts of:

  1. Architectural design for Android Applications;
  2. Ability to communicate with complex end-points, parsing JSON responses and update UI;



Land Support



Uses concepts of the notorious Uncle Bob's architecture called Clean Architecture. The software produced by this architecture is going to be:

Independent of Frameworks.
Testable.
Independent of UI.
Independent of Database.

  • UI - contains all UI related classes (Activities, Fragments, Adapters, etc.).
    This layer is using Jetpack's Navigation API to implement the "single activity" approach for the navigation flow.
  • BuildSrc - contains all gradle dependencies Better Management
  • Presentation - once this project is folowing (or trying to) the MVVM pattern, this layer is using View Model library to keep data between config changes.
    To expose observable data from the View Models, this module is using LiveData.
    This layer is using Lifecycle library in order to tie the View Model with UI lifecycle (in some cases).
  • Domain - in this module are declared the application's use cases.
  • Data - declares the basic operations that must be provided by the application's repository and the basic data classes used as DTO with implementation to get a remote data in the API Reddit.

One of the most importants gains that the Clean Architecture brings to the project is the fact that all business logic gets isolated, it means, all code worthy to be tested is well encapsulated on classes with low dependency on OS components. This pattern alied with a Dependency Injection Container and Mock Frameworks (such as Mockito and Junit allows the developer to take full advantage of Unit Tests.

Libraries and tools used in the project

Android

  • Android Support Library Provides additional convenience classes and features not available in the standard Framework API for easier development and support across more devices.
  • Custom tab Library Chrome Custom Tabs give apps more control over their web experience, and make transitions between native and web content more seamless without having to resort to a WebView.

Architecture and Design

  • Android Architecture Components A collection of libraries that help you design robust, testable, and maintainable apps. Start with classes for managing your UI component lifecycle and handling data persistence.

Dependency injection

  • Koin A pragmatic lightweight dependency injection framework for Kotlin developers.

Reactive

  • RX Java A library for composing asynchronous and event-based programs using observable sequences for the Java VM.
  • RX Kotlin RxJava bindings for Kotlin.
  • RX Android RxJava bindings for Android.

View and Image

  • ConstraintLayout Allows you to create large and complex layouts with a flat view hierarchy (no nested view groups).
  • RecyclerView A flexible view for providing a limited window into a large data set.
  • Glide An image loading and caching library for Android focused on smooth scrolling

Data Request

  • Retrofit A type-safe HTTP client for Android and Kotlin.
  • OkHttp An HTTP & HTTP/2 client for Android and Kotlin applications.
  • Gson A Converter which uses Gson for serialization to and from JSON..

Tests

  • Junit) JUnit is a unit testing framework for the Java programming language.
  • Mockito A small library that provides helper functions to work with Mockito in Kotlin.
  • kluent Kluent is a "Fluent Assertions" library written specifically for Kotlin.
  • kakao Nice and simple DSL for Espresso in Kotlin

TODO

Copyright 2018 Uzias Santos Ferreira

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

reddit's People

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.