Small desktop tool to automatically backup WoW Addon configuration.
Built with Kotlin and Compose Multiplatform.
| .gitea/issue_template | ||
| composeApp | ||
| docs | ||
| gradle | ||
| .gitignore | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| release.sh | ||
| settings.gradle.kts | ||
WoW Backup
A lightweight, native-feeling desktop application built with Kotlin and Compose Multiplatform to automatically backup and restore World of Warcraft configuration data (WTF and Interface directories) on macOS and Windows.
Overview
World of Warcraft stores all UI configurations, macros, keybindings, and addon saved variables in the WTF/ and Interface/ folders. Losing this data due to game corruption, accidental deletion, or addon errors can mean losing years of customized setups. WoW Backup runs discreetly in the system tray, automatically creates scheduled, timestamped backups (optionally compressed as ZIP archives), and will provide seamless one-click restoration.
Key Features
- 🛡️ System Tray Native Life Cycle: Lives in the menu bar / system tray with custom template icons matching light/dark OS appearances. Closing the window hides to tray; quitting is explicit.
- ⚙️ Smart Auto-Configuration: Automatically detects standard WoW install locations (supporting retail and classic directories) and validates folder permissions.
- ⏰ Automated & Scheduled Backups: Background scheduler powered by Cardiologist ensures dependable daily backups at a user-defined time.
- 📦 Compression & History Management: Supports both folder replication and ZIP compression, with automatic pruning of backups beyond the configured retention limit (1–30 backups).
- 🎮 Game State Detection: Checks for active WoW processes before running backups to prevent file-locking conflicts, with optional "force backup" override and safety confirmation.
- 🔔 Native OS Notifications: Notifies the user when backups start, succeed, fail, or are skipped due to game execution.
- 🚀 Launch at Startup: Integrated with macOS LaunchAgents (
~/Library/LaunchAgents/) and Windows Registry (HKCU\...\Run). - 🎨 Modern Theming & Customization: Dynamic Material 3 theming supporting System/Light/Dark modes and configurable accent colors (via MaterialKolor).
- 🔄 Restore System (In Progress): Interactive restore interface to safely roll back WTF and Interface configurations.
Tech Stack & Architecture
- Language & Runtime: Kotlin Multiplatform targeting Desktop (JVM, Java 17+)
- UI Framework: JetBrains Compose Multiplatform with Material 3 Design
- Architecture: MVI / MVVM with Kotlin Coroutines and StateFlow
- Scheduling:
io.github.kevincianfarini.cardiologistfor drift-free daily execution - Logging:
logback-classic+kotlin-logging-jvmwith daily rotation and size archiving in app data directories - Serialization:
kotlinx-serialization-jsonfor typed JSON configuration persistence - Theming:
com.materialkolor:material-kolorfor dynamic palette generation
Build & Run
Prerequisites
- JDK 17 or higher installed
Development Run
- macOS / Linux:
./gradlew :composeApp:run - Windows:
.\gradlew.bat :composeApp:run
Package Application Distributions
- macOS DMG:
./gradlew :composeApp:packageDmg - Windows MSI:
.\gradlew.bat :composeApp:packageMsi - Linux DEB:
./gradlew :composeApp:packageDeb
Feature Implementation Status
| Feature | Plan Document | Status | Description |
|---|---|---|---|
| 0. Foundation | docs/plans/feature-0-foundation.md |
✅ Completed | Architecture, config persistence, logging, platform abstractions |
| 1. System Tray | docs/plans/feature-1-system-tray.md |
✅ Completed | Tray icon, menu, tray-first lifecycle, window alignment |
| 2. Configuration | docs/plans/feature-2-configuration.md |
✅ Completed | Full settings UI, path validation, native file dialogs, startup manager |
| 3. Backup Engine | docs/plans/feature-3-backup.md |
✅ Completed | Parallel copy, ZIP compression, scheduler, history pruning, notifications |
| 4. Status Screen | docs/plans/feature-4-status.md |
✅ Completed | Live status dashboard, progress indicator, manual backup trigger, shortcuts |
| 5. Restore Screen | docs/plans/feature-5-restore.md |
🚧 Pending | Backup list browser, ZIP extraction, confirmation flow, safety checks |
Application Data Locations
- macOS:
~/Library/Application Support/WoWBackup/(Logs:.../logs/wowbackup.log) - Windows:
%APPDATA%\WoWBackup\(Logs:...\logs\wowbackup.log) - Linux:
~/.config/WoWBackup/(Logs:.../logs/wowbackup.log)