Premium is a proof-of-concept Android app designed to display information about The English Premier League.
- User can browse a screen that displays a list of upcoming Premier League fixtures sectioned by day.
- Each fixture displays the two teams names and the game result or the time of the game (if it’s not played yet).
- User can toggle the list view to display the fixtures by (Upcoming fixtures/All season fixtures)
- User can click on a specific fixture to add it to his favourite list.
- User can navigate to another screen the displays a list of persisted previously favourites fixtures.
- App monitors network connectivity and error handling.
Clone this repository and import into Android Studio
git clone git@github.com:MhmoudAlim/Premium.git
Download App Apk : Premium
-The app interface is implemented by declarative UI using Jetpack Compose
-The App requires runtime permissions of
- INTERNET
- ACCESS_NETWORK_STATE
-The app uses Rest Api to fetch data from a remote Api.
-The app uses Room database to save user selected favourite matches.
-The performed requests handle successful results, failure results and no internet connection
- Unit test for application use-cases with fake repo and data sources.
- Unit test for app repo Api using mockWebServer and Android mockk
- Integration test for application Database and Dao.
- End-to-End test for user add fixture to favourite scenario.
- Kotlin
- Clean Architecture
- MVVM pattern
- Repository Pattern
- Observer Pattern
- UDF pattern
- Kotlin Dsl Gradle
- Dependency Injection using Dagger Hilt
- Unit tests
- Integration tests
- End-to-end tests
- Kotlin Coroutines
- Kotlin Flow
- Android Jetpack
- Android-KTX
- Room Database
- Navigation Component
- Jetpack Compose
- Retrofit & OkHttp
- Moshi
- Java ThreeTen
- Clean, Testable, Maintainable and extendable Codebase
- Apply high cohesion and low coupling
- Apply Separation of concerns principle
- Apply Single source of truth principle
- Fine-grained dependency control.
- Improve re-usability across other apps.
- Improves the ownership & the quality of the codebase.
1 | 2 |
---|---|
Click to reveal License
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
https://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.