A desktop application built with Electron that monitors running games and displays beautiful animated notifications for:
- ✅ Achievement unlocks
- ⏱️ Playtime tracking (Now Playing / You Played X minutes)
- 📈 Progress updates
- 🖼️ Game image overlays
- 📊 Real-time achievement dashboard
-
Achievement Tracking
- Detects running games using their process names
- Sends notifications with custom HTML/CSS animation
- Real-time progress monitoring and updates
- Screenshots achievements when unlocked (optional)
-
Smart Dashboard
- Grid view of all configured games
- Real-time progress tracking per game
- Multiple sorting options:
- Alphabetical (A→Z / Z→A)
- Progress (Low→High / High→Low)
- Last Updated (Recent→Old / Old→Recent)
- Quick game search and filtering
- Click-to-load configs
- Play game launch button (requires executable and optional arguments)
- Automatically refreshes when config or save files change
-
Notification System
- Multiple notification types:
- Achievement unlocks
- Progress updates
- Playtime tracking (Now Playing / Session Ended)
- Customizable sounds and visual presets
- Adjustable position and scaling (All presets now supports maximum 200% scale)
- Non-intrusive overlay system
- Playtime header artwork cached locally for faster repeat notifications
- Multiple notification types:
-
Playtime Tracker
- Detects when configured games start and stop via process monitoring
- Stores total Playtime per config inside
%APPDATA%/Achievements/playtime-totals.json - Shows Playtime totals in the Achievements panel
- Triggers dedicated notifications rendered by
playtime.html
-
Customization
- Modern settings UI with tabs
- Multiple visual themes/presets
- Startup options (maximized/minimized)
- UI scaling (75% to 200%)
- Multi-language support for achievements
| File/Folder | Description |
|---|---|
main.js |
Main Electron process: window handling, core logic |
playtime-log-watcher.js |
Tracks game start/stop and calculates total playtime |
index.html |
Main UI with dashboard and config management |
overlay.html |
Achievement notification overlay |
playtime.html |
Playtime notification template |
progress.html |
Progress notification template |
playtime-totals.json |
Runtime-generated playtime totals per config |
utils/ |
Helper modules and utilities: |
utils/auto-config-generator.js |
Auto-generates game configs from save directories |
utils/generate_achievements_schema.js |
Scrapes achievement data from Steam API/Web |
utils/paths.js, etc. |
Other utility modules |
presets/ |
Scalable and non-scalable notification themes |
sounds/ |
Notification sound assets |
style.css |
Global styling for all UI components |
- Install Node.js and Git.
- Clone this repository:
git clone https://github.com/YOUR_USERNAME/achievements.git cd achievements - Install dependencies:
npm install
npm startnpm run distCreates a standalone .exe installer in the dist/ folder.
- Electron - Cross-platform desktop application framework
- ps-list - Process monitoring
- crc-32 - Checksum calculation
- Playwright - Browser automation for achievement scraping
- axios - HTTP client for Steam API
- cheerio - HTML parsing
- jsdom - DOM environment
- screenshot-desktop - Achievement screenshot capture (optional install)
- ws - WebSocket support
- ini - Config file parsing
chokidarkeeps config/save directories under watch to trigger UI refreshesps-list(viautils/pslist-wrapper.mjs) provides process snapshots for auto-selection and playtime tracking- Interval timers (~2s) keep dashboard cards and playtime state up to date
- Create a new config with:
- Name: Your preferred identifier
- AppID: Steam AppID or folder name for achievements
- Config Path: Location of achievements.json and images / Leave empty to generate
- Save Path: Where achievement progress is stored
- Executable (optional): Direct path to game executable
- Arguments (optional): Launch parameters
- Process Name (optional): Specific .exe name to monitor
- Note: Names are sanitized (illegal filename characters removed, condensed spacing) before saving; the sanitized name is used on disk and for playtime totals.
- Click "Generate Auto-Configs" and select your game saves directory
- The app will:
- Scan for game folders with numeric names (Steam AppIDs)
- Fetch game info from Steam Store or Steam Hunters
- Download achievement data and images using Steam API
- Create pre-configured entries for each detected game
- Add configs to your dashboard automatically
- Watched Folders:
- By default the following folders are watched and configs are load automatically, or schema is created when new APPID is created.
["PUBLIC", ["Documents", "Steam", "CODEX"]], ["PUBLIC", ["Documents", "Steam", "RUNE"]], ["PUBLIC", ["Documents", "OnlineFix"]], ["PUBLIC", ["Documents", "EMPRESS"]], ["APPDATA", ["Goldberg SteamEmu Saves"]], ["APPDATA", ["GSE Saves"]], ["APPDATA", ["EMPRESS"]], ["LOCALAPPDATA", ["anadius", "LSX emu", "achievement_watcher"]], ["APPDATA", ["Steam", "CODEX"]], ["APPDATA", ["SmartSteamEmu"]], ["LOCALAPPDATA", ["SKIDROW"]],
- By default the following folders are watched and configs are load automatically, or schema is created when new APPID is created.
Note: Auto-configuration requires a Steam API key (optional) in my_login.txt with format: key=YOUR_API_KEY. Without a key, only English achievements will be fetched from SteamDB/Steam Hunters.
- Press the "Show Dashboard" button to access the game grid
- Use search to filter games quickly
- Sort by name, progress, or last update time
- Click any game to load its config
- Use the play button for games with configured executables (dashboard closes and returns focus to the main UI)
- Automatic background polling selects the active game when its process starts
Escor the close button restores the dashboard overlay and re-enables input for the rest of the window
- Choose notification preset and screen position
- Select notification sounds and language
- Adjust UI scale (75% to 200%)
- Configure overlay shortcut or disable the overlay entirely
- Enable/disable features:
- Achievement screenshots
- Progress Notification
- Playtime Notification
- Startup behavior
- Toggle "Start with Windows" to create/remove a Task Scheduler entry using the current executable path
- All preferences persist to
%APPDATA%/Achievements/preferences.jsonand are restored on startup
- Keyboard shortcuts
Esc/Backspacebacks out of the current overlay or clears the selected config.F1/Ctrl+Oopens Settings;F2/Ctrl+Dtoggles the Dashboard;F3Show/Hide the Options panel.Ctrl+Ffocuses dashboard search,PorCtrl/Shift + Enterlaunch the currently selected game.- Arrow keys,
Home,End, andEnterdrive focus inside lists, dashboard cards, and settings panels. PageUp/PageDownperform full-page scrolling;Alt+1/2/3change dashboard sorting while it is open.
- Controller support
- D-pad or left stick moves focus;
Aconfirms,Bbacks out,Yopens the Dashboard,XShow/Hide Options/search on Dashboard. Select/Backtoggles Settings,Start/Optionslaunches the active game.LB/RBcycle settings tabs,LB/RB/R3cycle dashboard sort modes when the dashboard overlay is active.- Right stick provides smooth scrolling; triggers respect repeat delays so hold-to-scroll feels natural.
- D-pad or left stick moves focus;
- Works best with games in Borderless window mode
- Limited support for Fullscreen mode
- Automatically detects and imports existing achievements
- Supports multiple achievement languages if available in Config
JokerVerse
Copyright © 2025
Feel free to contribute, fork or suggest improvements!