GitXplorerGitXplorer
c

clean-ebook-library

public
6 stars
0 forks
0 issues

Commits

List of commits on branch master.
Unverified
60e27006ebb09f1361c2a300a0756ecc949daaec

Updated README.md

ccarlosmuvi committed 9 years ago
Unverified
583b5182d057ab44a53ae3a90dfece00521f8302

Updated README.md

ccarlosmuvi committed 9 years ago
Unverified
4ee6e396831218033cf4b6cf2994b7c2296b7a04

Merge pull request #1 from carlospiles/reactive

ccarlosmuvi committed 9 years ago
Unverified
c90f4a2f1ed495bf0b6ed27332e328b68486cd37

Refactored dropbox datasource with better operator use.

ccarlosmuvi committed 9 years ago
Unverified
ebfa9a6f8f7416da4fdc7f42d9e354e0db344ba6

gitignore update working

ccarlosmuvi committed 9 years ago
Unverified
53725b53be7f69b6ecf10b6279a29badc3ff6081

fixed minor bugs, updated gitignore

ccarlosmuvi committed 9 years ago

README

The README file for this repository.

Clean Ebook Library

Sample repository coded for selection proccess at BQ. It reads all .epub files from your Dropbox account and shows them in different ways.

Screenshots

## Introduction

This project has been built following the "Clean architecture" values. The idea behind this concept is to build solid and maintainable systems.

In order to carry out its ideas, the system has been divided into three main layers: app, domain and data.

App layer

This android framework dependent module contains the logic related with views, and it has been built following the Model View Presenter architectural pattern.

Inside this module we will find activities acting just as views, with just UI logic inside. This will be possible thanks to presenters, that will act as view - model mediators.

Domain layer

This pure java module contains the business rules of the system. The base components of this layer are the interactors.

Interactors are just system usecases that will be executed outside the UI thread.

Data layer

This module provides all data that the system needs. That data access will be grouped in Datasource classes.

## Things to highlight

  • You will find two main datasources in the system: DropboxDatasource and MockDbDatasource. The second one in combination with Dagger can be easily used to test the system without actually interacting with Dropbox.

  • Data layer will be android framework dependent because of the main data source of the system, Dropbox. I have decided to use Android Dropbox API, which usually requires context to execute requests. This dependencies will be satisfied by Dagger.

  • In order to simplify drawables, I have included Trello's Victor library in combination with Material Design svg menu icons.

  • I have decided to use Glide instead of Picasso for asynchronous image loading because it lets you to easily load images from byte arrays.

  • Data layer model classes will be transformed into Domain layer model classes via mappers.