Skip to content

This repository contains a sample app that implements MVP architecture using Dagger2, Retrofit, Calligraphy, Lottie and Glide

License

Notifications You must be signed in to change notification settings

mohamedebrahim96/Soleeklab

Repository files navigation

Soleeklab

Build Status Open Source Love License: MIT

This is a pure Android application.
It has the following features.

  • Splash Screen.
  • Login Screen.
  • Signup Screen.
  • Firebase based Authentication.
  • Displays the list of countries form free api. (API here)
  • Has a Logout Button.


Git Flow

Getting Started

Google Sign In Setup

  • Go to the Firebase Console and navigate to your project:
    • Select the Auth panel and then click the Sign In Method tab.
    • Click Google and turn on the Enable switch, then click Save.
  • Run the sample app on your device or emulator.
    • Select GoogleSignInActivity from the main screen.
    • Click the Sign In button to begin.

Email/Password Setup

  • Go to the Firebase Console and navigate to your project:
    • Select the Auth panel and then click the Sign In Method tab.
    • Click Email/Password and turn on the Enable switch, then click Save.
    • Under Authorized Domains click Add Domain and add auth.example.com.
  • Run the app on your device or emulator.
    • Select EmailPasswordActivity from the main screen.
    • Fill in your desired email and password and click Create Account to begin.

Result

Library reference resources:

  1. Glide: https://github.com/bumptech/glide
  2. Dagger2: https://github.com/MindorksOpenSource/android-dagger2-example
  3. Retrofit: https://github.com/square/retrofit
  4. lottie: https://github.com/airbnb/lottie-android
  5. Firebase: https://github.com/firebase/firebase-ios-sdk/tree/master/Firebase/Auth
  6. Calligraphy: https://github.com/chrisjenx/Calligraphy
  7. androidsvg: https://github.com/BigBadaboom/androidsvg

Developer setup

Requirements

  • Java 8
  • Latest version of Android SDK and Android Build Tools

API Key

The app uses themoviedb.org API to get movie information and posters. You must provide your own [API key][1] in order to build the app.

Just put your API key into ~/.gradle/gradle.properties file (create the file if it does not exist already):

MY_MOVIE_DB_API_KEY="abc123"

Building

You can build the app with Android Studio or with ./gradlew assembleDebug command.

Testing

This project integrates a combination of [local unit tests][2], [instrumented tests][3] and [code analysis tools][4].

Just run build.sh to ensure that project code is valid and stable. This will run local unit tests on the JVM, instrumented tests on connected device (or emulator) and analyse code with Checkstyle, Findbugs and PMD.

Versioning

For transparency and insight into our release cycle, and for striving to maintain backward compatibility, PlexMedia will be maintained according to the Semantic Versioning guidelines as much as possible.

Releases will be numbered with the following format:

<major>.<minor>.<patch>-<build>

Constructed with the following guidelines:

  • A new major release indicates a large change where backward compatibility is broken.
  • A new minor release indicates a normal change that maintains backward compatibility.
  • A new patch release indicates a bugfix or small change which does not affect compatibility.
  • A new build release indicates this is a pre-release of the version.

If you distribute a copy or make a fork of the project, you have to credit this project as the source.

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/ .


License

Copyright 2018 mohamedebrahim96

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.