D&D 5e Party Inventory Manager — self-host with one command
791
A collaborative web app for managing shared party inventory in D&D 5e campaigns. Players join via a unique slug link — no accounts needed. Changes sync in real-time across all connected devices.
🎮 Try it now at dndinventorymanager.com

docker run -d -p 8080:80 -v dnd-data:/app/data linuxlewis/dnd-inventory-manager
Open http://localhost:8080 — that's it!
Your data persists in the dnd-data volume across restarts and upgrades.
git clone https://github.com/linuxlewis/dnd-inventory-manager.git
cd dnd-inventory-manager
docker compose up -d
Access at http://localhost:8080.
| Variable | Default | Description |
|---|---|---|
DATABASE_URL | sqlite+aiosqlite:///./data/dnd_inventory.db | Database connection string |
CORS_ORIGINS | ["*"] | Allowed CORS origins |
Override via environment in docker-compose.yml or docker run -e:
docker run -d -p 8080:80 \
-v dnd-data:/app/data \
-e 'CORS_ORIGINS=["https://yourdomain.com"]' \
linuxlewis/dnd-inventory-manager
Prerequisites: Bun (frontend) · UV + Python 3.11+ (backend)
# Backend
cd backend && uv sync && uv run uvicorn app.main:app --reload --port 8000
# Frontend (in another terminal)
cd frontend && bun install && bun run dev
The frontend dev server proxies /api requests to localhost:8000.
| Layer | Technology |
|---|---|
| Frontend | React 18 · TypeScript · Vite · Bun |
| Backend | Python 3.12 · FastAPI · SQLAlchemy |
| Database | SQLite (async via aiosqlite) |
| Real-time | Server-Sent Events (SSE) |
| SRD Data | GraphQL (dnd5eapi.co) |
| Container | nginx + uvicorn · supervisord |
This project is not affiliated with, endorsed by, or associated with Wizards of the Coast, Hasbro, or any of their subsidiaries. Dungeons & Dragons, D&D, and all related trademarks are property of Wizards of the Coast LLC. Game data provided via the D&D 5e SRD API under the Open Gaming License (OGL).
MIT
Content type
Image
Digest
sha256:d46efde3d…
Size
74.8 MB
Last updated
3 months ago
docker pull linuxlewis/dnd-inventory-manager:60d06d4