Mobile App for the Berlin Skylarks Baseball & Softball Club (iOS/Android). https://www.tib-baseball.de/verein/apps
Find a file
2025-11-14 10:41:13 +01:00
androidApp polish (android): improve home screen visuals a bit 2025-10-23 22:04:27 +02:00
gradle chore: upgrade deps 2025-11-14 10:41:13 +01:00
iosApp build(macOS): only build for Apple Silicon 2025-09-25 17:34:31 +02:00
shared feat(shared): add filter method for license type 2025-10-21 21:30:56 +02:00
.gitignore fix(android): correct player and game loading 2025-10-01 11:23:11 +02:00
build.gradle.kts refactor(android): install Hilt for DI 2025-09-22 18:47:56 +02:00
gradle.properties feat: display app info on corresponding screen 2024-02-25 16:52:31 +01:00
gradlew initial commit 2022-12-22 22:14:42 +01:00
LICENSE.md docs: create LICENSE.md 2023-06-12 23:56:14 +02:00
README.md docs: update both README files 2025-08-16 01:52:15 +02:00
settings.gradle.kts build(android): use first alpha version instead of snapshot builds for androidx-material3-adaptive-navigation3 2025-10-17 09:57:09 +02:00

Berlin Skylarks - Mobile App

Project description

This is the mobile app for the Berlin Skylarks Baseball & Softball Club. It's built with a focus on modern Android development practices, featuring:

  • 100% native Kotlin for the Android-specific parts.
  • Jetpack Compose for the UI layer.
  • Kotlin Multiplatform (KMP) for shared business logic, data models, and repository layers, enabling potential future expansion to other platforms (like iOS).

The main purpose is to display up-to-date data for all team activities, supplied by the API of the German Baseball Federation as well as additional info from the team website (game reports, player rosters, and practice times).

Kotlin Multiplatform Structure

This project has recently adopted a Kotlin Multiplatform (KMP) structure to share common code, primarily for data handling and business logic, between different potential platforms.

  • shared module: This is the heart of the multiplatform logic.
    • Located at /shared.
    • Contains common Kotlin code (commonMain) for data models (like Player.kt, Team.kt), repository patterns, network service definitions (expectations), and utility functions that are platform-agnostic.
    • Platform-specific implementations (androidMain, iosMain - if added later) for expect declarations (e.g., for HTTP clients, local storage, date/time utilities before kotlinx-datetime was fully adopted for this) reside here.
    • Uses kotlinx-datetime for multiplatform date and time handling.
    • Uses kotlinx-serialization for JSON parsing.
  • androidApp module (formerly app): This is the Android-specific application module.
    • Located at /androidApp
    • Depends on the shared module to access common business logic and data models.
    • Contains Android-specific UI (Jetpack Compose), Activitys, ViewModels, Android SDK interactions, and platform-specific implementations if any actual implementations are defined in androidMain within the shared module.

This structure allows for:

  • Maximizing code reuse.
  • Ensuring consistent business logic across platforms.
  • Easier maintenance of shared functionalities.

Who this project is for

This project is mainly intended to be used by team members and interested people to get accurate information. I believe in Open Source and collaboration, therefore the whole codebase is open to be used by anyone.

It was not originally designed to be a white label solution, but the BSM part and the shared KMP logic should be adaptable to other teams with appropriate modifications. Class and global constants are used to designate team-specific information.

Project dependencies (development)

  • A reasonably fast computer
  • Android Studio in the most recent version (with Kotlin Multiplatform Mobile plugin if targeting iOS)
  • All necessary plugins
  • A BSM API key to access team data
  • An access token for the Skylarks-specific website data (app should run fine without it though)
  • (If targeting iOS via KMP) Xcode and relevant iOS development tools.

Instructions for use

  1. Clone the repository.
  2. Open the project in Android Studio. It should recognize the KMP structure.
  3. Gradle should fetch all necessary dependencies for both the shared and androidApp modules.
  4. Build the androidApp module.

Configure

  1. Create API_key.kt in the appropriate module (likely androidApp or a configuration file read by the shared module) and enter your key (a .dist file or instructions should clarify the constant name and location).

Run

  1. Select the androidApp run configuration in Android Studio.
  2. Click Run or Debug in the top bar.

Contributing guidelines

None so far - I do not expect PRs ;-)

How to get help

  • The developer can be reached via an email link in the app.

Terms of use

This project is licensed under the GPLv3.