A self-hosted asset tracking platform for community organisations — manage props, costumes, lights, sound gear, set pieces, and more across multiple storage locations.
Built with Django, HTMX, and S3-compatible object storage.
- Asset management — categories, locations, custom tags, and full transaction history
- Barcode & NFC — auto-generated Code128 barcodes, camera scanning, NFC tag support (Android + iOS)
- Check-in/check-out — track who has what, with timestamped audit trail
- Stocktake — bulk verification of assets at a location
- AI-powered capture — optional image analysis for automatic categorisation (Claude API)
- Zebra label printing — direct printing to thermal label printers via ZPL
- Self-hosted S3 storage — uses Garage for zero-dependency object storage, or any S3-compatible provider
- Multi-tenant branding — configurable site name, colours, and barcode prefix
- Mobile-first UI — responsive design with Tailwind CSS + HTMX
- Background tasks — Celery + Redis for async operations
| Component | Technology |
|---|---|
| Backend | Django 5.x, Python 3.12 |
| Database | PostgreSQL 17 |
| Frontend | Django templates, HTMX, Tailwind CSS |
| Object storage | Garage (S3-compatible) |
| Task queue | Celery + Redis |
| Deployment | Docker Compose, Traefik v3.6 |
git clone git@github.com:realworldtech/props.git
cd props
cp .env.example .env
./bootstrap.shThe bootstrap script starts Garage, creates the S3 bucket, and populates your .env with credentials.
# Development (hot reload, port 8003)
docker compose --profile dev up -d
# Production (Traefik with auto-SSL)
docker compose --profile prod up -ddocker compose exec web python manage.py createsuperuser
docker compose exec web python manage.py setup_groupsAccess the application at http://localhost:8003 (dev) or your configured domain (prod).
Copy .env.example to .env and configure. Key variables:
| Variable | Description |
|---|---|
SECRET_KEY |
Django secret key (generate for production) |
DATABASE_URL |
PostgreSQL connection string |
USE_S3 |
Enable S3 storage (True/False) |
SITE_NAME |
Display name for the application |
BARCODE_PREFIX |
Prefix for generated barcodes |
ANTHROPIC_API_KEY |
Optional — enables AI image analysis |
ZEBRA_PRINTER_HOST |
Optional — enables direct label printing |
DOMAIN |
Production domain (for Traefik SSL) |
See .env.example for the full list with descriptions.
| Role | Capabilities |
|---|---|
| Admin | Full access — manage users, settings, all assets |
| Member | View assets, check-in/check-out, create assets |
| Viewer | Read-only access |
- Android (Chrome 89+): Web NFC API works directly over HTTPS
- iOS: Program NFC tags with NDEF URL records pointing to
https://yourdomain.com/a/{barcode}/
pytest
# or inside Docker:
docker compose exec web pytestblack src/
isort src/
flake8 src/Configuration is in pyproject.toml.
PROPS is built using specification-driven development — a formal specification governs application behaviour, and all changes are assessed against it.
Before contributing, please read CONTRIBUTING.md. In short:
- Open an issue first to discuss your proposed change
- Write tests before code (TDD — red/green cycle is mandatory)
- Submit a PR using the provided template, including spec alignment details
- Bug reports should include logs, screenshots, and reproduction steps — use the bug report template
- Using AI tools? We recommend the
/implementskill for Claude Code to keep changes aligned with the spec
Contributions are welcome, but may require spec discussion before merging. By submitting a contribution, you grant Real World Technology Solutions an irrevocable, royalty-free license to distribute your contribution as part of PROPS under both the open-source AGPL-3.0 and any commercial license we offer — this means your code may be included in commercially-licensed versions of the product. See CONTRIBUTING.md for full terms.
Copyright (C) 2024-2026 Real World Technology Solutions
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3.
See LICENSE for the full text.
If you require a license that permits proprietary modifications or want to use PROPS without the AGPL-3.0 obligations, contact us at sales@rwts.com.au for commercial licensing options.