An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

        


FOOTBALLAPP


repo-top-language



Developed with the software and tools below.



Kotlin
Org
Google
Android
GitHub
JetBrains



## 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 usecases

UI 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
App

Main 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
```