Init
This commit is contained in:
commit
ac88e62abe
17 changed files with 716 additions and 0 deletions
92
docs/masterplan.md
Normal file
92
docs/masterplan.md
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
# Major goals
|
||||
- Provide a simple and configurable way to automatically backup WoW's config data
|
||||
- Provide a way to restore backed up data
|
||||
|
||||
## Scope
|
||||
- This is a desktop application, supporting both MacOS and Windows
|
||||
- This uses Kotlin Compose Multiplatform to share as much code as possible
|
||||
- This is a GUI application, which the user can interact with primarily through a dialog, accessible through the system tray
|
||||
- The UI should be as native-looking as possible to each platform
|
||||
- The UX should be as intuitive as possible
|
||||
- This should be simple, straightforward to use, but configurable
|
||||
|
||||
### Non-functional requirements
|
||||
#### Logging
|
||||
- All app operations should be logged to a file
|
||||
- The log should be human-readable and timestamped
|
||||
- Log files should be rotated and archived to keep sizes manageable
|
||||
#### Native look and feel
|
||||
- The app should use native components for the UI, whenever possible
|
||||
- The app should leverage native APIs, like the MacOS system tray, whenever possible
|
||||
- **If** needed, prioritise MacOS over Windows
|
||||
#### Permissions
|
||||
- The app should request the minimum permissions it needs to run, as proactively as possible
|
||||
- The app should not request any permissions it doesn't need
|
||||
- The app should gracefully handle missing permissions, showing a warning to the user explaining the reasoning for needing those permissions
|
||||
- We must pay special attention to file and directory access permissions, particularly on MacOS
|
||||
|
||||
### Features
|
||||
#### 1. System Tray Icon
|
||||
- Show a system tray icon when the app is active
|
||||
#### 2. Configuration screen
|
||||
- A configuration screen needs to be accessible
|
||||
- Should be accessible through the system tray icon
|
||||
- Should appear when the app is run, **if** any configuration is missing
|
||||
##### 2.1 Configuration options
|
||||
- Run at startup
|
||||
- User should be able to enable/disable this
|
||||
- If enabled, the app should run automatically when the user logs in
|
||||
- WoW install location
|
||||
- User should be able to pick the location within their file system
|
||||
- The app should try to scan default locations for an existing install, potentially saving the user some clicks
|
||||
- Backup location
|
||||
- User should be able to pick the destination location within their file system
|
||||
- Destination should be a folder
|
||||
- Backup frequency
|
||||
- User should be able to define a schedule for their backups
|
||||
- A small message warning that the backup will run only if WoW isn't running
|
||||
- User should be able to define how much backup history to keep
|
||||
- Force backup
|
||||
- A checkbox to force the backup to run even when WoW is running
|
||||
- A confirmation dialog should be shown if the user enables this
|
||||
- Folder selection
|
||||
- The user should be able to toggle the WTF and Interface folders for backup
|
||||
- Each folder should have a small description of why it can be important to backup
|
||||
- Notifications
|
||||
- User should be able to toggle notifications for backup progress
|
||||
- Notifications should be native to the platform
|
||||
- Compression
|
||||
- User should be able to toggle compression for backup files
|
||||
- A description should inform the user what the consequences of compression are
|
||||
#### 3. Backup
|
||||
- The actual backup process should happen in the background
|
||||
- Backup only happens when the app is configured
|
||||
- Backup is automatic, following the configured schedule
|
||||
- The folders and all their contents should be backed up reliably
|
||||
- If compression is enabled, the backup should be compressed in order to save space
|
||||
- The result of the backup should be stored in the configured backup location, with a human-readable timestamped folder name
|
||||
- If enabled, notifications should be shown to the user:
|
||||
- When backup starts
|
||||
- When backup finishes
|
||||
- When backup fails
|
||||
#### 4. Status screen
|
||||
- Accessible when clicking the system tray icon
|
||||
- Should show the status of the backup process, including:
|
||||
- Time and status (failed/success) of last backup
|
||||
- If failed, show the reason for the failure
|
||||
- Time of next scheduled backup
|
||||
- Is WoW running, and is 'force backup' enabled?
|
||||
- Is the backup currently running? If so, show the progress of the backup
|
||||
- Should show a button to open the backup location
|
||||
- Should show a button to open the configuration screen
|
||||
- Should show a button to start the restore process
|
||||
- Should show a message if configuration is missing or incomplete
|
||||
#### 5. Restore screen
|
||||
- Should show a button to open the backup location
|
||||
- Should display a list of all existing backups, and their date in a human-readable format
|
||||
- Should allow the user to select a backup to restore
|
||||
- Confirmation dialog should be shown before restoring, informing all current WoW data will be replaced
|
||||
##### 5.1 Restore process
|
||||
- The restore process should happen in the foreground, with a proper dialog displaying the progress and ETA to finish
|
||||
- The restore should be done in a way that is as transparent as possible to the user
|
||||
- The restore process should be cancellable by the user
|
||||
Loading…
Add table
Add a link
Reference in a new issue