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:
- Install
paint-trackerfrom PyPI. - Create and enable a systemd service that starts automatically on every boot.
- Open port 8000 in the firewall (if ufw is active).
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c747e196141451a933e1cbfef4549f41c9719afa7cc67fb863d1bac72031814a
|
|
| MD5 |
37d1b25acf0ca0d6961df94699c2f88e
|
|
| BLAKE2b-256 |
c52ec8bbe21941689dde498afa77e18f308022759ed3bb4aa3edd4fe243f438c
|
Provenance
The following attestation bundles were made for paint_tracker-0.1.0.tar.gz:
Publisher:
pypi.yml on FlaccidFacade/paint-tracker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paint_tracker-0.1.0.tar.gz -
Subject digest:
c747e196141451a933e1cbfef4549f41c9719afa7cc67fb863d1bac72031814a - Sigstore transparency entry: 1509263338
- Sigstore integration time:
-
Permalink:
FlaccidFacade/paint-tracker@53eef0f3959d129ec6f2a1232a0ce62e5ac0b32c -
Branch / Tag:
refs/tags/v0.0.5 - Owner: https://github.com/FlaccidFacade
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@53eef0f3959d129ec6f2a1232a0ce62e5ac0b32c -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66bace186f53bcb9eb696d8e20a6a804073894b070a3bd8d54bd63c312e23a60
|
|
| MD5 |
81d7cff44fd6bb91dff8f7508857fa75
|
|
| BLAKE2b-256 |
cd88f08b9dbf17c6f5a8425f968f99ba7e36a402ace960db9f0579dddc17d901
|
Provenance
The following attestation bundles were made for paint_tracker-0.1.0-py3-none-any.whl:
Publisher:
pypi.yml on FlaccidFacade/paint-tracker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paint_tracker-0.1.0-py3-none-any.whl -
Subject digest:
66bace186f53bcb9eb696d8e20a6a804073894b070a3bd8d54bd63c312e23a60 - Sigstore transparency entry: 1509263422
- Sigstore integration time:
-
Permalink:
FlaccidFacade/paint-tracker@53eef0f3959d129ec6f2a1232a0ce62e5ac0b32c -
Branch / Tag:
refs/tags/v0.0.5 - Owner: https://github.com/FlaccidFacade
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@53eef0f3959d129ec6f2a1232a0ce62e5ac0b32c -
Trigger Event:
release
-
Statement type: