Skip to main content

Paint and stain shelf tracker – self-updating, one-command deploy for Raspberry Pi

Project description

paint-tracker

Paint and stain shelf tracker with:

  • FastAPI API
  • SQLite auto-configured database (no setup required)
  • React + Vite frontend bundled into the Python package
  • Self-updating – checks PyPI for new versions on every start

🚀 One-click install on Raspberry Pi Zero 2 W

Run this single command on the Pi (requires Python 3.11+ and internet access):

bash <(curl -fsSL https://raw.githubusercontent.com/FlaccidFacade/paint-tracker/main/scripts/install_pi.sh)

The script will:

  1. Install paint-tracker from PyPI.
  2. Create and enable a systemd service that starts automatically on every boot.
  3. Open port 8000 in the firewall (if ufw is active).
  4. Print the local URL where the UI is reachable (e.g. http://raspberrypi.local:8000).

After installation, the tracker is accessible from any device on your network.


📦 Install from PyPI (any machine)

pip install paint-tracker
paint-tracker

On first launch Paint Tracker will:

  • Check PyPI for a newer version and prompt you to upgrade.
  • Auto-create the SQLite database at ~/.local/share/paint-tracker/paint_tracker.db.
  • Start the web server on http://0.0.0.0:8000.

CLI options

paint-tracker --help

  --host HOST            Bind host (default: 0.0.0.0)
  --port PORT            Bind port (default: 8000)
  --no-update-check      Skip the PyPI update check on startup

🔧 Development setup

Backend

cd backend
pip install -r requirements.txt
pip install -e ..          # install paint_tracker package in editable mode
uvicorn paint_tracker.main:app --reload

DATABASE_URL defaults to ~/.local/share/paint-tracker/paint_tracker.db. Override for PostgreSQL:

export DATABASE_URL='postgresql+psycopg://user:password@localhost:5432/paint_tracker'

Run tests:

cd backend
pytest

Frontend (standalone dev server)

cd frontend
npm install
npm run dev

Optional API override:

export VITE_API_BASE_URL='http://localhost:8000/api'

📤 Publishing to PyPI

Build the frontend, bundle it into the Python package, and publish in one step:

pip install build twine
bash scripts/build_and_publish.sh          # publish to PyPI
bash scripts/build_and_publish.sh --test   # publish to TestPyPI

Included behavior

  • Create paints with required room, shelf_level, shelf_depth
  • Room suggestions while typing; new room names are saved automatically
  • Search paints by room, color, and coordinates
  • Edit existing paints from the list (✏️ button)
  • Confirmation/decline controls use green check and red X buttons

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

paint_tracker-0.1.0.tar.gz (75.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

paint_tracker-0.1.0-py3-none-any.whl (75.8 kB view details)

Uploaded Python 3

File details

Details for the file paint_tracker-0.1.0.tar.gz.

File metadata

  • Download URL: paint_tracker-0.1.0.tar.gz
  • Upload date:
  • Size: 75.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for paint_tracker-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c747e196141451a933e1cbfef4549f41c9719afa7cc67fb863d1bac72031814a
MD5 37d1b25acf0ca0d6961df94699c2f88e
BLAKE2b-256 c52ec8bbe21941689dde498afa77e18f308022759ed3bb4aa3edd4fe243f438c

See more details on using hashes here.

Provenance

The following attestation bundles were made for paint_tracker-0.1.0.tar.gz:

Publisher: pypi.yml on FlaccidFacade/paint-tracker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file paint_tracker-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: paint_tracker-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 75.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for paint_tracker-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 66bace186f53bcb9eb696d8e20a6a804073894b070a3bd8d54bd63c312e23a60
MD5 81d7cff44fd6bb91dff8f7508857fa75
BLAKE2b-256 cd88f08b9dbf17c6f5a8425f968f99ba7e36a402ace960db9f0579dddc17d901

See more details on using hashes here.

Provenance

The following attestation bundles were made for paint_tracker-0.1.0-py3-none-any.whl:

Publisher: pypi.yml on FlaccidFacade/paint-tracker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page