Awesome
<div align="center"> <img alt="Icon" src="remote_data/assets/icon.png" width="200" /> </div> <h3 align="center"> The fastest way to call a taxi in Banja Luka </h3> <p align="center"> <a target="_blank" href="https://github.com/VladimirWrites/BLTaxi/blob/master/LICENSE"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a> <a href="https://android-arsenal.com/api?level=21"><img alt="API" src="https://img.shields.io/badge/API-21%2B-brightgreen.svg?style=flat"/></a> <a target="_blank" href="https://app.bitrise.io/app/b8b8722ee9645ad8"><img src="https://app.bitrise.io/app/b8b8722ee9645ad8/status.svg?token=7MWRGcMRCjH4Ivzp9xeBCw"></a> <a target="_blank" href="https://androidweekly.net/issues/issue-410"><img src="https://androidweekly.net/issues/issue-410/badge"></a> </p><p align="center"> <img alt="banner" src="remote_data/assets/banner.png"> </p>
Project characteristics 🚀
This project brings to the table set of best practices, tools, and solutions:
- 100% Kotlin
- Modern architecture (Clean Architecture, Multi-Module setup, Model-View-ViewModel)
- Android Jetpack
- Single-activity architecture, using the Navigation component
- CI pipeline (Bitrise)
- Dependency Injection
- Material Design (Dark theme)
Built With ðŸ›
- Kotlin - First class and official programming language for Android development.
- Coroutines - Kotlin's way of way of writing asynchronous, non-blocking code
- Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps
- LiveData - Data objects that notify views when the underlying data changes
- ViewModel - Stores UI-related data that isn't destroyed on UI changes
- DataBinding - Allows you to bind UI components in your layouts to data sources in your app using a declarative format rather than programmatically
- WorkManager - Makes it easy to schedule deferrable, asynchronous tasks that are expected to run even if the app exits or device restarts
- Hilt - Dependency Injection library for Android that reduces the boilerplate of doing manual dependency injection in your project
- Room - SQLite object mapping library
- Material Components for Android - Modular and customizable Material Design UI components for Android
- Navigation Component - Helps you implement navigation, from simple button clicks to more complex patterns, such as app bars and the navigation drawer
- Retrofit - A type-safe HTTP client for Android and Java
- Google Analytics - Free app measurement solution that provides insight on app usage and user engagement
- Firebase Crashlytics - Lightweight, realtime crash reporter that helps you track, prioritize, and fix stability issues that erode your app quality
Tested With 🔬
- JUnit 4 - Simple framework to write repeatable tests
- mockito - Most popular Mocking framework for unit tests
- mockito-kotlin - Provides helper functions to work with Mockito in Kotlin
- Truth - Makes your test assertions and failure messages more readable
- Robolectric - Runs tests in a simulated Android environment inside a JVM without the overhead of an emulator
Download
<a href='https://play.google.com/store/apps/details?id=com.vlad1m1r.bltaxi'> <img alt='Get it on Google Play' src='http://i.imgur.com/tka3Exw.png'/> </a>Find this repository useful? :heart:
Support it by joining stargazers for this repository. :star: <br> And follow me for my next creations! 🤩
License
Copyright 2020 Vladimir Jovanović
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.