bonaminandClaude Opus 5.5 1253ec155e feat(mqtt-auth): per-device topic ACL for phone-app users
POST /mqtt/auth/acl now handles "app_<uid>" users:
- topic must be exactly vesper/{serial}/<a>/<b> with serial in the user's
  device_serials (resolved by the users doc `uid` field),
- publish (acc 2): only control/command,
- subscribe (acc 4) and read/delivery (acc 1): only control/ack,
  status/heartbeat, status/playback,
- wildcard topics (+ / #) are denied,
- clientid must start with "app_<uid>_" so one user cannot reuse another
  user's client id to kick them off,
- blocked users are denied; anything else (incl. other acc values) is 403.

Lookups go through mqtt/app_users.py's 60s TTL cache so per-message
checks don't hit Firestore every time; assign/unassign/block invalidate it.

Also fixes the acc comment: mosquitto passes 1 = read (delivery),
2 = write (publish), 4 = subscribe - not "1 = subscribe, 3 = both".
Device/kiosk ACL is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 00:02:48 +03:00
2026-02-25 21:29:56 +02:00
2026-02-16 19:57:22 +02:00

BellSystems Admin Panel

Self-hosted web admin panel for managing BellSystems devices, melodies, users, and MQTT communications.

Tech Stack

  • Backend: Python / FastAPI
  • Frontend: React + Tailwind CSS (Vite)
  • Database: Google Firestore (Firebase Admin SDK)
  • MQTT: Mosquitto (paho-mqtt)
  • Auth: JWT with role-based access control
  • Deployment: Docker Compose + Nginx

Getting Started

# Clone the repo
git clone <your-gitea-url>/bellsystems-admin.git
cd bellsystems-admin

# Copy env template and fill in your values
cp .env.example .env

# Place your Firebase service account key in the project root
# (file is gitignored — never commit it)

# Start everything
docker compose up --build

Project Structure

bellsystems-admin/
├── backend/          # FastAPI API server
├── frontend/         # React SPA
├── nginx/            # Reverse proxy config
├── docker-compose.yml
└── .env

Documentation

See BellSystems_AdminPanel_Strategy.md for the full architecture and build plan.

S
Description
BellSystems Contol Panel. Handles everything from Devices to Clients. Firebase / Mosquitto / Device Control / logging...
Readme
33 MiB
Languages
JavaScript 72.3%
Python 12.8%
HTML 12.4%
CSS 2.5%