Android app to check Head 2 Head between two specific teams from the Brazilian Football Championship. Personal project created to display my knowledge as a developer.
Head 2 Head App is a native Android App made with Kotlin. The app is capable of displaying data from a direct confrontation (Head 2 Head) between two teams from the Brazilian League; The count of wins and ties along with cards containing past matches are displayed in a specific scene, thanks to Recycler View and Live Data; maintaining the model and view separation with MVVM and utilizing Clean Architecture and SOLID patterns to make the code clean, reusable and decoupled. Some of the data are cached inside the device´s database to improve the speed, also, the head to head data comes from a remote origin.
-
Minimum SDK Level 25
-
- Live Data: Used for observe data from a reactive point of view. Allowing the data used in UI to be updated automatically.
- Lifecycle: Observe the Android lifecycle and manipulate the states from the UI after the lifecycle change.
- ViewModel: Used to retrieve the data from the Model layer and update the data from View.
- ViewBinding: Manages the XML layout views in Kotlin through a class.
- Recycler View: Show a more efficient way of displaying a list of Views in the screen, recycling the views for better performance.
- Room: The persistency library that offers a abstraction layer on top of SQLite to allow for a more robust database access.
-
Architecture
- MVVM (Model-View-ViewModel) + Clean Architecture: The first item is used to separate the logic of the app's UI, helping with testability and organization; also, the Clean Architecture helps to build the app's main system with well designed layers, who work with independency, facilitating with the scalability and maintenance.
- Repository pattern: This pattern help with the data layer´s abstraction
-
Libraries
Head2HeadApp was built using MVVM, Clean Architecture and the Repository pattern. Following Google´s official recomendation
API Sports, this API provides all kind of data related to sports and series and it have a limited usage for free accounts.
List of all teams created with a Custom adapter to Spinner. The data is gathered from a API, cached to the local database and then displayed to the user.
Users can check the overall wins and ties from a duel, also there are cards with the latests scores, displayed by Recycler View and Live Data.
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.
Privacy Policy
Your privacy is important to us. It is Head to Head App's policy to respect your privacy regarding any information we may collect from you across our website, Head to Head App, and other sites we own and operate.
We only ask for personal information when we truly need it to provide a service to you. We collect it by fair and lawful means, with your knowledge and consent. We also let you know why we’re collecting it and how it will be used.
We only retain collected information for as long as necessary to provide you with your requested service. What data we store, we’ll protect within commercially acceptable means to prevent loss and theft, as well as unauthorised access, disclosure, copying, use or modification.
We don’t share any personally identifying information publicly or with third-parties, except when required to by law.
Our website may link to external sites that are not operated by us. Please be aware that we have no control over the content and practices of these sites, and cannot accept responsibility or liability for their respective privacy policies.
You are free to refuse our request for your personal information, with the understanding that we may be unable to provide you with some of your desired services.
Your continued use of our website will be regarded as acceptance of our practices around privacy and personal information. If you have any questions about how we handle user data and personal information, feel free to contact us.
More Information
Hopefully that has clarified things for you and as was previously mentioned if there is something that you aren't sure whether you need or not it's usually safer to leave cookies enabled in case it does interact with one of the features you use on our site.
This policy is effective as of Sep 2023.