https://github.com/robarcoo/footballapp
Unfinished job project that uses Ktor, Koin, MVVM, Jetpack Compose, Local Caching, Flow
https://github.com/robarcoo/footballapp
android caching coroutines-android flow jetpack-compose jetpack-navigation koin kotlin kotlin-android ktor ktor-client mvvm
Last synced: 3 months ago
JSON representation
Unfinished job project that uses Ktor, Koin, MVVM, Jetpack Compose, Local Caching, Flow
- Host: GitHub
- URL: https://github.com/robarcoo/footballapp
- Owner: robarcoo
- Created: 2024-07-06T22:19:14.000Z (11 months ago)
- Default Branch: master
- Last Pushed: 2024-07-07T06:55:21.000Z (11 months ago)
- Last Synced: 2025-01-11T04:19:34.400Z (5 months ago)
- Topics: android, caching, coroutines-android, flow, jetpack-compose, jetpack-navigation, koin, kotlin, kotlin-android, ktor, ktor-client, mvvm
- Language: Kotlin
- Homepage:
- Size: 10.3 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
FOOTBALLAPP
![]()
Developed with the software and tools below.
![]()
![]()
![]()
![]()
![]()
![]()
## Quick Links
> - [ Overview](#-overview)
> - [ Features](#-features)
> - [ Repository Structure](#-repository-structure)
> - [ Modules](#-modules)
> - [ Getting Started](#-getting-started)
> - [ Installation](#-installation)
> - [ Running FootballApp](#-running-FootballApp)
> - [ Tests](#-tests)---
## Overview
Project I was working on during my internship, however all our team was laid off, so I'll at least post it here. I'm not going to finish it.
---
## Features
- Fully implemented UI using Jetpack Compose that adapts to different font and display sizes
- Almost finished work with API using Ktor
- Local caching (with different policies and expire time)
- MVVM implemented with repository pattern, corouintes, flow and usecasesUI implementation (without functionality):
https://github.com/robarcoo/FootballApp/assets/111498279/06374fa8-b677-4e3d-88ba-b65d628b9ab7
https://github.com/robarcoo/FootballApp/assets/111498279/6b52d7f8-f5e4-4042-88b0-40019d486bc2
https://github.com/robarcoo/FootballApp/assets/111498279/fa282eaa-42c6-471f-8f62-df9d7717f361
https://github.com/robarcoo/FootballApp/assets/111498279/6a07738c-dd26-43db-a973-820d6e821d78
---
## Repository Structure
```sh
└── FootballApp/
├── app
│ ├── .gitignore
│ ├── build.gradle.kts
│ ├── proguard-rules.pro
│ └── src
│ ├── androidTest
│ │ └── java
│ │ └── com
│ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ └── res
│ │ ├── drawable
│ │ ├── font
│ │ ├── mipmap-anydpi-v26
│ │ ├── mipmap-hdpi
│ │ ├── mipmap-mdpi
│ │ ├── mipmap-xhdpi
│ │ ├── mipmap-xxhdpi
│ │ ├── mipmap-xxxhdpi
│ │ ├── values
│ │ └── xml
│ └── test
│ └── java
│ └── com
├── build.gradle.kts
├── data
│ ├── .gitignore
│ ├── build.gradle.kts
│ ├── consumer-rules.pro
│ ├── proguard-rules.pro
│ └── src
│ ├── androidTest
│ │ └── java
│ │ └── com
│ ├── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── com
│ └── test
│ └── java
│ └── com
├── domain
│ ├── .gitignore
│ ├── build.gradle.kts
│ └── src
│ └── main
│ └── java
│ └── com
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
└── settings.gradle.kts
```---
## Modules
AppMain module of the app, contains:
- all configuration data
- dependenct injection using Koin
- UI using Jetpack Compose
- Navigation using Jetpack Navigation
- ViewModels
Data
Module that works with data, contains:
- Repositories implementation
- Client using Ktor
- Local cache storing that includes different cache policies, after 5 minutes cache is automatically renewed when sending a server request.
Domain
Module that implements business logic, contains:
- Repositories interfaces
- Data classes
- Usecases
## Getting Started
### Installation
1. Clone the FootballApp repository:
```sh
git clone https://github.com/robarcoo/FootballApp
```2. Change to the project directory:
```sh
cd FootballApp
```3. Install the dependencies:
```sh
gradle build
```### Running FootballApp
Use the following command to run FootballApp:
```sh
java -jar build/libs/myapp.jar
```### Tests
To execute tests, run:
```sh
gradle test
```