74 lines
2.7 KiB
Markdown
74 lines
2.7 KiB
Markdown

|
|
|
|
## Installation & Download
|
|
|
|
Pre-built binaries for **macOS**, **Windows**, and **Linux** are provided on each release.
|
|
|
|
👉 **See [here](INSTALL.md)** for download links and step-by-step installation instructions.
|
|
|
|
## Key Features
|
|
|
|
- ⚙️ **Smart Auto-Configuration**: Automatically detects standard WoW install locations (supporting retail and classic directories) and validates folder permissions.
|
|
- ⏰ **Automated & Scheduled Backups**: Background scheduler ensures regular backups at a user-defined time.
|
|
- 📦 **Compression & History Management**: Supports both folder replication and ZIP compression, with automatic pruning of backups beyond the configured limit.
|
|
- 🎮 **Game State Detection**: Checks for running WoW processes before running backups to prevent file-locking conflicts.
|
|
- 🔔 **Native OS Notifications**: Notifies the user when backups start, succeed, fail, or are skipped.
|
|
- 🚀 **Launch at Startup**: Integrated with macOS LaunchAgents (`~/Library/LaunchAgents/`) and Windows Registry (`HKCU\...\Run`).
|
|
- 🎨 **Theming & Customization**: Dynamic theming supporting Light/Dark mode, with configurable accent colors.
|
|
|
|
---
|
|
|
|
## Application Data Locations
|
|
The app uses a configuration file to store user preferences. This file and runtime logs are stored in the following locations:
|
|
- **macOS**: `~/Library/Application Support/WoWBackup/` (Logs: `.../logs/wowbackup.log`)
|
|
- **Windows**: `%APPDATA%\WoWBackup\` (Logs: `...\logs\wowbackup.log`)
|
|
- **Linux**: `~/.config/WoWBackup/` (Logs: `.../logs/wowbackup.log`)
|
|
|
|
---
|
|
|
|
## Tech Stack & Architecture
|
|
|
|
- **Language & Runtime**: Kotlin Multiplatform targeting Desktop (JVM, Java 17+)
|
|
- **UI Framework**: JetBrains Compose Multiplatform with Material 3 Design
|
|
- **Architecture**: MVVM with Kotlin Coroutines
|
|
- **Scheduling**: `io.github.kevincianfarini.cardiologist`
|
|
- **Logging**: `logback-classic` + `kotlin-logging-jvm` with daily rotation and archiving
|
|
- **Serialization**: Settings stored in a JSON file using `kotlinx-serialization-json`
|
|
- **Theming**: `com.materialkolor:material-kolor` for dynamic palette generation
|
|
|
|
---
|
|
|
|
## Build & Run
|
|
|
|
### Prerequisites
|
|
- JDK 17 or higher installed
|
|
|
|
### Development Run
|
|
- **macOS / Linux**:
|
|
```shell
|
|
./gradlew :composeApp:run
|
|
```
|
|
- **Windows**:
|
|
```shell
|
|
.\gradlew.bat :composeApp:run
|
|
```
|
|
|
|
### Package Application Distributions
|
|
- **macOS DMG**:
|
|
```shell
|
|
./gradlew :composeApp:packageDmg
|
|
```
|
|
- **Windows MSI**:
|
|
```shell
|
|
.\gradlew.bat :composeApp:packageMsi
|
|
```
|
|
- **Linux DEB**:
|
|
```shell
|
|
./gradlew :composeApp:packageDeb
|
|
```
|
|
|
|
---
|
|
|
|
## License
|
|
|
|
This project is released into the public domain. See the [LICENSE](LICENSE) file or [unlicense.org](https://unlicense.org/) for details.
|