Mobilní aplikace pro TK Olymp — tenisový klub. Postavena na Kotlin Multiplatform s Compose Multiplatform UI, cílí na Android a iOS z jediné sdílené codebase.
| Oblast | Technologie |
|---|---|
| Jazyk | Kotlin 2.3.0 |
| UI | Compose Multiplatform 1.10.0 + Material 3 |
| Síť | Ktor 2.3.4 (GraphQL přes OkHttp/Darwin) |
| Serializace | kotlinx-serialization 1.6.0 |
| Datum/čas | kotlinx-datetime 0.6.0 |
| Navigace | Jetpack Navigation Compose |
| Android min SDK | 31 |
| Android target SDK | 36 |
Projekt je rozdělen do dvou modulů:
Sdílená business logika — platformově nezávislá. Obsahuje:
- Services —
AuthService,UserService,EventService,PeopleService,ClubService,AnnouncementService,NotificationService - ViewModels — jeden ViewModel na každou obrazovku (sdílený mezi Android a iOS)
- Network —
GraphQlClientImpl(Ktor) - Storage —
TokenStorage,UserStorage,OnboardingStorage,NotificationStorage - ServiceLocator — DI entry point
Compose UI vrstva (aktuálně Android). Obsahuje pouze tenké obrazovky, veškerá logika je v shared.
Obrazovky:
- Onboarding / Login / Registrace
- Přehled (Overview)
- Události (Events, EventDetail)
- Kalendář + zobrazení kalendáře (kolizní algoritmus)
- Žebříček (Leaderboard)
- Nástěnka (Board)
- Lidé (People, PersonDetail)
- Skupiny (Groups)
- Trenéři – lokace (TrainersLocations)
- Oznámení (Notifications settings)
- Profil
- Ostatní / O aplikaci / Ochrana soukromí
./gradlew :composeApp:assembleDebugAPK se nachází v composeApp/build/outputs/apk/debug/.
Instalace na zařízení/emulátor:
adb install composeApp/build/outputs/apk/debug/composeApp-debug.apk- Sestavte Kotlin framework:
./gradlew :shared:linkDebugFrameworkIosSimulatorArm64
- Otevřete
iosApp/iosApp.xcodeprojv Xcode. - Spusťte
Run(⌘R).
TKOlympApp/
├── composeApp/ # Compose UI (Android)
│ └── src/
│ ├── androidMain/kotlin/ # Obrazovky, navigace, MainActivity
│ └── commonMain/kotlin/ # Sdílené UI utility, téma
├── shared/ # Sdílená business logika (Android + iOS)
│ └── src/commonMain/kotlin/com/tkolymp/shared/
│ ├── auth/ # Autentizace
│ ├── event/ # Události
│ ├── people/ # Lidé
│ ├── club/ # Klub
│ ├── calendar/ # Kalendář + kolizní algoritmus
│ ├── announcements/ # Oznámení
│ ├── notification/ # Notifikace
│ ├── network/ # GraphQL klient (Ktor)
│ ├── storage/ # Lokální úložiště
│ ├── viewmodels/ # ViewModels (sdílené)
│ └── ServiceLocator.kt # Dependency injection
├── iosApp/ # iOS Swift/SwiftUI host
└── gradle/
└── libs.versions.toml # Centrální správa závislostí
- Přidejte verzi a alias do
gradle/libs.versions.toml. - Odkazujte se na ni přes
libs.<alias>v příslušnémbuild.gradle.kts.
# gradle/libs.versions.toml
[versions]
myLib = "1.2.3"
[libraries]
my-lib = { module = "com.example:mylib", version.ref = "myLib" }- Veškerá business logika patří do
shared/src/commonMain— obrazovky jsou co nejtenčí. - Nové služby zakládejte do příslušného subpackage v
com.tkolymp.shared.*. - Platformně specifický kód umístěte do
androidMain/iosMain. - Nikdy nepoužívejte hardcoded verze závislostí — pouze aliasy z
libs.versions.toml.