A cross-platform water intake tracker that uses computer vision to automatically detect and count your drinking gestures. Stay hydrated with intelligent sip detection and comprehensive tracking features.
- π€ Automatic Sip Detection: Uses computer vision to detect drinking gestures from your webcam
- β Manual Entry: Quick-add sips or cups when automatic detection isn't available
- π Daily Goal Tracking: Set and track daily hydration goals with visual progress indicators
- π Statistics & Analytics: View your hydration patterns over time with detailed charts
- β Multiple Cup Profiles: Calibrate different cup sizes and types for accurate tracking
- π Cross-Platform: Works seamlessly on Windows, macOS, and Linux
- π¨ Modern UI: Clean, responsive PyQt6 interface with dark/light themes
- π Theme Support: Auto-detection with manual theme switching (Light, Dark, Dracula)
- βΏ Accessibility: Keyboard shortcuts, high-contrast mode, resizable fonts
- π Smart Notifications: Desktop notifications for goal reminders and achievements
- π± System Tray: Minimize to system tray on supported platforms
- π§ Detection Engines: Heuristic-based detection (default) with optional MediaPipe support
- πΎ Data Persistence: SQLite database with migration support
- π€ Export/Import: CSV export and import functionality
- π Privacy-First: All data stored locally, optional telemetry
- β‘ Performance: Optimized for real-time detection with minimal resource usage
Download the latest release from the GitHub Releases page:
- Windows:
Count-Cups.exe(standalone executable) - macOS:
Count-Cups.dmg(disk image) - Linux:
count-cups(AppImage or DEB package)
# Clone the repository
git clone https://github.com/VoxHash/Count-Cups.git
cd Count-Cups
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run the application
python -m app.main
Overview of your daily hydration progress with quick actions
Real-time detection with visual feedback
Detailed analytics and trend analysis
Set up cup profiles and fine-tune detection
- OS: Windows 10, macOS 10.14, or Linux (Ubuntu 18.04+)
- Python: 3.10+ (for source installation)
- RAM: 4GB
- Storage: 100MB
- Camera: USB webcam or built-in camera
- OS: Windows 11, macOS 12+, or Linux (Ubuntu 20.04+)
- Python: 3.11+ (for source installation)
- RAM: 8GB
- Storage: 500MB
- Camera: HD webcam with good lighting
- Download
Count-Cups.exefrom the releases page - Run the executable (no installation required)
- Allow camera access when prompted
- Start tracking your hydration!
- Download
Count-Cups.dmgfrom the releases page - Open the DMG file and drag Count-Cups to Applications
- Launch from Applications folder
- Grant camera permissions when requested
- Download
Count-Cups-x86_64.AppImagefrom the releases page - Make executable:
chmod +x Count-Cups-x86_64.AppImage - Run:
./Count-Cups-x86_64.AppImage
- Download
count-cups_1.0.0_amd64.debfrom the releases page - Install:
sudo dpkg -i count-cups_1.0.0_amd64.deb - Run:
count-cups
- Launch Count-Cups and allow camera access when prompted
- Set up your first cup profile in the Calibration screen
- Configure your daily goal in Settings
- Start tracking by going to the Live Camera screen
- View your progress on the Dashboard
- Position yourself in front of the camera
- Start detection in the Live Camera screen
- Drink normally - the app will automatically detect sips
- Monitor progress on the Dashboard
- Add manual entries if needed
- Good Lighting: Ensure your face is well-lit
- Camera Position: Position camera at eye level
- Cup Visibility: Keep your cup visible to the camera
- Calibration: Use the Calibration screen to fine-tune detection
- Regular Use: Consistent usage improves detection accuracy
Create a .env file in the project root to customize settings (copy from .env.example):
# Detection Settings
DETECTION_ENGINE=heuristics
HEAD_TILT_THRESHOLD=25.0
HAND_FACE_DISTANCE_THRESHOLD=100.0
# Calibration
DEFAULT_CUP_SIZE_ML=250
DEFAULT_SIPS_PER_CUP=10
# Notifications
ENABLE_NOTIFICATIONS=true
GOAL_REMINDER_HOUR=20
# UI Settings
DEFAULT_THEME=auto
WINDOW_WIDTH=1200
WINDOW_HEIGHT=800Access the Settings screen to configure:
- General: Theme, window behavior, system tray
- Detection: Engine selection, sensitivity parameters
- Camera: Camera selection, resolution, frame rate
- Notifications: Goal reminders, notification preferences
- Advanced: Database settings, logging, telemetry
# Clone and setup
git clone https://github.com/VoxHash/Count-Cups.git
cd Count-Cups
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install -r requirements-dev.txt
# Run in development mode
./scripts/dev_run.sh # Linux/macOS
.\scripts\dev_run.ps1 # Windows
# Run tests
pytest tests/ -v
# Run linting
ruff check .
ruff format .
mypy app/.\scripts\build_win_nuitka.ps1 -Release./scripts/build_mac_nuitka.sh --release./scripts/build_linux_nuitka.sh --release# Run all tests
pytest tests/ -v
# Run with coverage
pytest tests/ -v --cov=app --cov-report=html
# Run specific test file
pytest tests/test_sip_logic.py -v
# Run linting
ruff check .
ruff format --check .
mypy app/- User Guide: Comprehensive user documentation
- Architecture: Technical architecture overview
- API Reference: API documentation for developers
- Contributing: Guidelines for contributing
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Check camera permissions
- Try different camera index in Settings
- Ensure camera is not in use by other applications
- Update camera drivers
- Improve lighting conditions
- Adjust camera position
- Use the Calibration screen to fine-tune settings
- Try switching between detection engines
- Check logs in
~/.count-cups/logs/ - Update dependencies
- Reset settings in Advanced tab
- Report issue on GitHub
- Check the documentation
- Search existing issues
- Create a new issue
- Join discussions
This project is licensed under the MIT License - see the LICENSE file for details.
- OpenCV for computer vision capabilities
- PyQt6 for the modern user interface
- MediaPipe for advanced pose detection (optional)
- SQLite for local data storage
- Nuitka for cross-platform compilation
- Version: 1.0.0
- Status: Active Development
- Python Support: 3.10+
- Platforms: Windows, macOS, Linux
- License: MIT
Count-Cups - Stay hydrated, stay healthy! π§
Made with β€οΈ by VoxHash