A desktop price tracking application that monitors product prices across Steam, Udemy, Amazon, and custom sources. Get notified when prices drop below your thresholds or discounts reach your targets.
Built with C++17 and Qt5. Runs on Linux, macOS, and Windows.
- Multi-source tracking -- Monitor prices from Steam, Udemy, Amazon, and user-configured sources
- Alert conditions -- Set price and discount thresholds with AND logic (all conditions must be met)
- Check Now -- On-demand price checking with multi-select support (Ctrl/Shift-click)
- Desktop notifications -- System tray alerts with configurable notification sounds
- Custom notification sounds -- Browse, test, and set custom
.wavalert sounds or use the built-in default - Alert history -- Review and dismiss past alerts
- Background polling -- Per-product check intervals from 30 seconds to 24 hours
- Currency support -- Track prices in multiple currencies with formatted display
- Auto-update checker -- Checks GitHub Releases for new versions on startup and via Help menu
- Plugin system -- Extend with native C++ plugins (.so/.dll) or JSON-configured sources; IPlugin2 interface supports embedded settings widgets
- SVG icon set -- Consistent Catppuccin-themed icons for toolbar, sources, and status indicators
- Dark theme -- Catppuccin Mocha palette applied by default
- System tray -- Minimizes to tray on close, runs in background
- Auto-start -- Optional launch on system startup (Linux, macOS, Windows)
- SQLite persistence -- Products, conditions, and alert history stored locally with versioned migrations
- Internationalization -- English, Arabic (RTL), and French translations with auto-restart on language change
- Code signing -- Release builds support code signing via
scripts/sign.sh
git clone https://github.com/Abdulkhalek-1/PriceBell.git
cd PriceBell
mkdir build && cd build
cmake ..
make -j$(nproc)
./PriceBellSee docs/BUILDING.md for prerequisites and platform-specific instructions.
- Add a product -- Click "+ Add Product", enter the name, URL, source, alert conditions, and check interval
- Monitor -- The app polls prices in the background and updates the product table
- Check Now -- Select one or more products and click "Check Now" for an immediate price check
- Get notified -- When alert conditions are met, a tray notification appears and the table row highlights
- Review alerts -- Open Alert History to see triggered alerts and dismiss them
- Configure -- Use Settings to enter API credentials (Udemy, Amazon), adjust polling defaults, notification sounds, enable auto-start, and manage plugins
See docs/USER_GUIDE.md for the full walkthrough.
| Document | Description |
|---|---|
| Building | Prerequisites, build steps, running tests |
| Architecture | System design, data flow, SQLite schema, plugin system |
| User Guide | Installation, adding products, alerts, settings |
| Plugins | Native plugin and JSON config source development |
| Handlers | How to add a new built-in price handler |
| Contributing | Code style, PR workflow, testing |
PriceBell/
├── include/
│ ├── core/ # Business logic (AppController, PriceChecker, AlertManager, PricePoller, PluginManager, IPlugin2)
│ ├── handlers/ # Price source handlers (Steam, Udemy, Amazon, Generic)
│ ├── storage/ # SQLite persistence (Database, ProductRepository, AlertRepository)
│ ├── gui/ # Qt UI components (MainWindow, ProductDialog, SettingsDialog, TrayIcon)
│ └── utils/ # Logger, HttpClient, UpdateChecker, AutoStartManager, SettingsProvider, CurrencyUtils, Constants
├── src/ # Implementation files (mirrors include/ structure)
├── tests/ # Test suite (URL validation, repository, settings, currency, logger)
├── assets/
│ ├── icons/ # SVG icon set (toolbar, source, status, tray, app)
│ ├── sounds/ # Notification sounds (alert.wav)
│ └── themes/ # QSS stylesheets (dark.qss)
├── scripts/ # Build & release helpers (sign.sh)
├── i18n/ # Translation files (.ts)
├── docs/ # Documentation
└── CMakeLists.txt
This project is licensed under the MIT License. See LICENSE for details.