Developed with the software and tools below.
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.
- 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):
video_2024-07-07_03-51-53.mp4
video_2024-07-07_03-52-59.mp4
video_2024-07-07_03-54-06.mp4
video_2024-07-07_03-55-44.mp4
└── 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
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
- Clone the FootballApp repository:
git clone https://github.com/robarcoo/FootballApp
- Change to the project directory:
cd FootballApp
- Install the dependencies:
gradle build
Use the following command to run FootballApp:
java -jar build/libs/myapp.jar
To execute tests, run:
gradle test