docs: update README with features, build instructions, and desktop JVM toolchain fix

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
shahondin1624
2026-03-13 15:39:00 +01:00
parent 587180dd91
commit 5f941a09de
2 changed files with 57 additions and 17 deletions

View File

@@ -1,29 +1,65 @@
# ShadowrunCharSheet
### Android
To run the application on android device/emulator:
- open project in Android Studio and run imported android run configuration
A Kotlin Multiplatform character sheet application for Shadowrun 5th Edition, built with Compose Multiplatform. Supports Android, Desktop (JVM), Web (JS + WASM), and iOS.
To build the application bundle:
- run `./gradlew :androidApp:assembleDebug`
- find `.apk` file in `androidApp/build/outputs/apk/debug/androidApp-debug.apk`
## Features
- **Character Management** — Create, edit, import/export characters as JSON
- **Attributes & Talents** — Full Shadowrun 5e attribute system with 60+ predefined talents
- **Dice Rolling** — Built-in dice roller with success counting and roll history
- **Damage Monitor** — Stun, physical, and overflow damage tracking with wound modifiers
- **Responsive UI** — Adaptive layout with window size classes for all screen sizes
- **Theming** — Material 3 with dark/light mode and theme color selection
- **Cross-Platform** — Single shared codebase across Android, Desktop, Web, and iOS
## Platforms
### Android
To run the application on android device/emulator:
- open project in Android Studio and run imported android run configuration
To build the application bundle:
- run `./gradlew :androidApp:assembleDebug`
- find `.apk` file in `androidApp/build/outputs/apk/debug/androidApp-debug.apk`
### Desktop
Run the desktop application: `./gradlew :desktopApp:run`
Run the desktop **hot reload** application: `./gradlew :desktopApp:hotRun --auto`
Run the desktop application: `./gradlew :desktopApp:run`
Run the desktop **hot reload** application: `./gradlew :desktopApp:hotRun --auto`
Build a standalone uber JAR: `./gradlew :desktopApp:packageUberJarForCurrentOS`
- find `.jar` file in `desktopApp/build/compose/jars/`
### iOS
To run the application on iPhone device/simulator:
- Open `iosApp/iosApp.xcproject` in Xcode and run standard configuration
- Or use [Kotlin Multiplatform Mobile plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile) for Android Studio
To run the application on iPhone device/simulator:
- Open `iosApp/iosApp.xcproject` in Xcode and run standard configuration
- Or use [Kotlin Multiplatform Mobile plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile) for Android Studio
### Web Distribution
Build web distribution: `./gradlew :webApp:composeCompatibilityBrowserDistribution`
Deploy a dir `webApp/build/dist/composeWebCompatibility/productionExecutable` to a web server
Build web distribution: `./gradlew :webApp:composeCompatibilityBrowserDistribution`
Deploy the dir `webApp/build/dist/composeWebCompatibility/productionExecutable` to a web server
### JS Browser
Run the browser application: `./gradlew :webApp:jsBrowserDevelopmentRun`
### JS Browser (Development)
Run the browser application: `./gradlew :webApp:jsBrowserDevelopmentRun`
### Wasm Browser
Run the browser application: `./gradlew :webApp:wasmJsBrowserDevelopmentRun`
### Wasm Browser (Development)
Run the browser application: `./gradlew :webApp:wasmJsBrowserDevelopmentRun`
## Testing
Run all tests:
```
./gradlew :sharedUI:allTests
```
Run a single test class:
```
./gradlew :sharedUI:jvmTest --tests "org.shahondin1624.ComposeTest"
```
## Architecture
Kotlin Multiplatform project with all shared logic and UI in the `sharedUI` module. Platform modules (`androidApp`, `desktopApp`, `webApp`, `iosApp`) are thin entry points.
Key dependencies: Compose Multiplatform, kotlinx.serialization, MaterialKolor, KStore, Ktor, Coil.
See `CLAUDE.md` for detailed architecture documentation.

View File

@@ -8,6 +8,10 @@ plugins {
alias(libs.plugins.compose.hot.reload)
}
kotlin {
jvmToolchain(24)
}
dependencies {
implementation(project(":sharedUI"))
implementation(compose.ui)