Skip to content

Abdulkhalek-1/PriceBell

Repository files navigation

PriceBell Banner

PriceBell

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.

Features

  • 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 .wav alert 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

Quick Start

git clone https://github.com/Abdulkhalek-1/PriceBell.git
cd PriceBell
mkdir build && cd build
cmake ..
make -j$(nproc)
./PriceBell

See docs/BUILDING.md for prerequisites and platform-specific instructions.

Usage

  1. Add a product -- Click "+ Add Product", enter the name, URL, source, alert conditions, and check interval
  2. Monitor -- The app polls prices in the background and updates the product table
  3. Check Now -- Select one or more products and click "Check Now" for an immediate price check
  4. Get notified -- When alert conditions are met, a tray notification appears and the table row highlights
  5. Review alerts -- Open Alert History to see triggered alerts and dismiss them
  6. 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.

Documentation

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

Project Structure

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

License

This project is licensed under the MIT License. See LICENSE for details.

About

Desktop price tracking app - monitor Steam, Udemy, Amazon & custom sources. Get notified when prices drop. Built with C++17 and Qt5.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors