Skip to content

Desktop app for comparing F1 driver performance based on weather conditions. Includes Ktor for networking, Koin for dependency injection and Compose Multiplatform for UI.

Notifications You must be signed in to change notification settings

AdamDawi/F1-Journal

Repository files navigation

F1-Journal

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.

⭐️Features

1. 📊 Average Driver Positions – Dry vs Rain

Displays a chart of the average race positions for each driver in dry and wet conditions. Image

2. 💧 Performance Difference – Dry − Rain

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

📅 Movie Details

Analyzes how asphalt temperature affects drivers' lap times. Image

🔀 Data Import / Export

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

⚙️Technologies

  • 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

Here are some overview pictures:

Image Image

Installation

  1. Setup Android client:

    1. Clone project
      git clone https://github.com/AdamDawi/F1-Journal
    2. Open the project in Android Studio.
    3. Be sure the versions in gradle are same as on github
  2. Run the backend server

    1. Clone project
      git clone https://github.com/jakubdziem/f1-personal-tracker-server
      cd f1-personal-tracker-server
    2. Build Docker image:
      docker build -t f1-personal-tracker:latest .
    3. Start container on port 8080
      docker-compose up
  3. Add the server url to your local gradle.properties file as follows:

BASE_URL="http://localhost:8080"
  1. Run client app: In android studio run:
./gradlew run

Requirements

Windows operating system

Author

Adam Dawidziuk🧑‍💻

About

Desktop app for comparing F1 driver performance based on weather conditions. Includes Ktor for networking, Koin for dependency injection and Compose Multiplatform for UI.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages