F1-Journal is a Compose Multiplatform Desktop application for comparing Formula 1 driver performance under various weather and temperature conditions.
⚠️ Note: This project focuses on core functionality, multiplatform architecture, and data analysis.
🎨 UI design was not a priority — it's kept minimal, functional, and secondary to the app's logic.
Displays a chart of the average race positions for each driver in dry and wet conditions.

Highlights the performance gap between dry and wet tracks for each driver. Sorted to show who performs best in the rain.

Analyzes how asphalt temperature affects drivers' lap times.

The app allows importing and exporting data to/from a server:
- 🔄 Import: User selects a JSON or XML file to upload current F1 data to the server.
- 📀 Export: User chooses a location and file name to save data from the server.
Supported Formats
- JSON
- XML
-
Jetpack Compose Multiplatform - Modern UI toolkit for declarative UI design.
-
Ktor - Server communication
-
Koin - Dependency Injection
-
Vico - Advanced charting (Vico documentation)
-
Voyager - Navigation between screens
-
Jackson / org.json - JSON and XML processing
-
BuildConfig - Configuration management for build-time constants, including platform-specific values (e.g., API URLs, environment flags). (BuildConfig plugin documentation)
-
MVI architecture - Scalable and maintainable state management
-
Setup Android client:
- Clone project
git clone https://github.com/AdamDawi/F1-Journal
- Open the project in Android Studio.
- Be sure the versions in gradle are same as on github
- Clone project
-
Run the backend server
- Clone project
git clone https://github.com/jakubdziem/f1-personal-tracker-server cd f1-personal-tracker-server - Build Docker image:
docker build -t f1-personal-tracker:latest . - Start container on port 8080
docker-compose up
- Clone project
-
Add the server url to your local gradle.properties file as follows:
BASE_URL="http://localhost:8080"- Run client app: In android studio run:
./gradlew runWindows operating system
Adam Dawidziuk🧑💻


