Application to show the current opened jobs from Github jobs. You can view and filter jobs by country, company name, title etc using the powerful search engine.
Technically, this application was developed using MVP architecture, divided in three modules:
- app: Android views, navigation, activities and fragments. If you want to contribute to the look & feel, you need touch this module
- domain: All business logic lives here!
- data: Manage persistence, to allow offline mode and fast data recovery.
If you want to compile the application yourself see below.
First clone the project:
git clone https://github.com/fooock/android-github-jobs.git
Now, build the application in debug mode to generate the apk
:
gradlew app:assembleDebug
If you want to know the current application version, you can execute the gradle task printVersion
which produces an output similar to the following:
+----------------------------------
| Version Name: 0.1-89-g27c749b
| Version Code: 1
| Version Code Time: 1517590824
+----------------------------------
Important! If you find any bug, please attach this info in the issue tracker. For this example, the number
g27c749b
is the commit identifier, and it will allow me to do a checkout, create a new branch and upload the fix.
The application has two build types, and each one initialize things required for the given case. For example, the debug build type, initialize among other things:
- Log debug tree using
Timber
. This allows us print only in debug mode logs withDEBUG
andINFO
tags, because normally, this logs can't be needed in release builds LeakCanary
library, to look for memory leaks, and fix it!- Database inspection using
Stetho
- Enable
StrictMode
to detect all kind of problems
Note that in release
mode, we only need to catch WARNING
s and ERROR
s, and send it to a crash reporting system.
For this purpose I created the CrashLibrary
class
This project uses the following libraries. You can view for each module what library is used in the dependencies.gradle file.
- Android support libraries: app-compat, constraint-layout
- RxJava
- Timber
- Butterknife
- Google OSS Licenses
- Retrofit 2 & Gson converter
- OkHttp3
- Dagger2
- Room persistence library
- Joda time
For application debug, I included:
For application testing:
Copyright 2017 Javier (nhitbh at gmail dot com)
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.