wow-backup/README.md
2026-08-25 12:47:44 +01:00

74 lines
2.7 KiB
Markdown

![WoW Backup](docs/screenshots/hero.png)
## 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 [UNLICENSE](UNLICENSE) file or [unlicense.org](https://unlicense.org/) for details.