Parental control dashboard for Fritz!Box routers. Schedule internet access per device using friendly names and time windows.
- Runtime: Bun (backend + package manager + test runner)
- Frontend: Quasar v2 (Vue 3 + Vite), builds to web, iOS, Android
- Backend: Bun.serve() — zero-dependency HTTP server
- Database: SQLite via Bun's native
bun:sqlitedriver - Router API: Fritz!Box TR-064 (SOAP over HTTPS)
- Bun v1.1+
- Fritz!Box with TR-064 enabled (Fritz!Box admin → Home Network → Network → Network Settings)
- A Fritz!Box user account with "Smart Home" or "NAS" permissions
# Clone and install
git clone <repo-url> && cd oppressor
bun install
# Configure Fritz!Box credentials
cp .env.example .env
# Edit .env with your Fritz!Box IP, username, and password
# Start development (frontend + backend)
bun run devFrontend opens at http://localhost:9000, backend API at http://localhost:3000.
# On the Pi (64-bit OS required for Bun)
curl -fsSL https://bun.sh/install | bash
# Build for production
bun run build
bun run build:backend
# Run
cp .env.example .env # configure credentials
bun run startFor auto-start on boot, create a systemd service:
# /etc/systemd/system/oppressor.service
[Unit]
Description=Oppressor Parental Control
After=network.target
[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/oppressor
ExecStart=/home/pi/.bun/bin/bun dist/server/index.js
Restart=always
[Install]
WantedBy=multi-user.target| Method | Endpoint | Description |
|---|---|---|
| GET | /api/devices | List managed devices |
| GET | /api/devices/discover | Scan Fritz!Box hosts |
| POST | /api/devices | Add device to manage |
| PATCH | /api/devices/:id | Rename device |
| DELETE | /api/devices/:id | Remove device |
| POST | /api/devices/:id/block | Block immediately |
| POST | /api/devices/:id/unblock | Unblock immediately |
| GET | /api/schedules | List all schedules |
| POST | /api/schedules | Create schedule |
| PUT | /api/schedules/:id/toggle | Enable/disable schedule |
| DELETE | /api/schedules/:id | Remove schedule |
| GET | /api/health | Server health check |