BarkWho: Manor Network Controller
BarkWho is a self-hosted, "Dark Academia" themed parental control dashboard designed specifically for the UniFi Dream Router (UDR). It provides a simplified, high-fidelity interface for managing family internet access, implementing curfews, and "nuking" specific devices during emergencies.
🏛️ Architecture & Logic
BarkWho is built as a bridge between your family`s daily needs and the complex UniFi Network application.
The Stack
- Frontend: React (Vite) PWA with Tailwind CSS. Styled with a custom "Dark Academia Tech" aesthetic (Deep Viridian, Gold, Cream) featuring glassmorphism and circuit board motifs.
- Backend: Node.js (Express) acting as a secure middleware.
- Integration: Communicates directly with the UDR
s local API (/proxy/network/v2/...`).
Core Logic: "State Inversion"
BarkWho operates on a "Permission First" mental model, whereas UniFi operates on a "Restriction" model.
- UI Green (Allowed): BarkWho sends
enabled: falseto the UniFi Block Rule. (The block is off, so traffic flows). - UI Red (Blocked): BarkWho sends
enabled: trueto the UniFi Block Rule. (The block is active, traffic is stopped).
🚀 Deployment Guide
Prerequisites
- UniFi Dream Router (UDR) with SSH enabled or a local admin user.
- Docker & Docker Compose installed on your hosting server (e.g., Raspberry Pi, Proxmox VM).
1. Configuration
Create a .env file in the project root:
UDR_IP=192.168.1.1 # IP address of your UDR
UDR_USER=localadmin # Local admin username (not UI.com email)
UDR_PASSWORD=password123 # Local admin password
APP_SECRET_KEY=secret_key # Random string for session security
2. Map Your Policies
BarkWho needs to know which UniFi Traffic Rules correspond to your dashboard categories.
- Log in to your UniFi Network Controller.
- Go to Settings > Traffic Management > Rules.
- Create your blocking rules (e.g., "Block Social Media", "Block Gaming"). Assign them to the specific Target Groups (Target: "kids_console", "kids_computers") in UniFi.
- BarkWho will auto-discover these rules. In the BarkWho Dashboard, click the Settings (Gear) icon on a Category card to select which rules belong to "Social", "Gaming", etc.
3. Launch
docker compose up -d --build
Access the dashboard at http://<server-ip>:5173.
📖 End User Guide (How-To)
1. Dashboard Controls
- Category Toggles: Switch "Social Media" or "Gaming" on/off instantly. This toggles the underlying rules on your router.
- Bonus Time: Click the Circle/Plus icon on a category to grant temporary access (15m, 30m, 1h). The system automatically re-blocks access when time expires.
- Rule Assignment: Click the Gear icon to choose which UniFi rules are controlled by that category card.
2. The Curfew Clock
- Status: Shows if the "Estate Curfew" is currently active.
- Overrides: If you need to extend internet access past bedtime, use the Custom or preset buttons (+30m, +1h) to temporarily disable the curfew.
3. Device Library & "Nuke"
- Search: Quickly find devices by name (e.g., "iPad") or Owner.
- NUKE: The big red button immediately cuts off all internet access for that specific device (via UniFi`s "Block Client" feature). Use "Restore" to unblock.
🧩 Device Profiles & Router Groups
Q: I see a "Profile: Kids" option in BarkWho, but I have "kids_computers" and "kids_console" groups on my router. How do they match?
A: In Version 1.0, they function independently.
-
BarkWho Profiles (Visual Tagging): The dropdown in the Device Library (Default, Kids, IoT) is a visual organizer for you. It helps you quickly identify which iPad belongs to whom within the BarkWho interface. It remembers your selection locally but does not reconfigure the router.
-
Router Groups (Functional Enforcement): The actual blocking power comes from the UniFi Traffic Rules.
- Example: In UniFi, you create a rule named "Block Roblox". You set the Target of that rule to include both your
kids_computersandkids_consolegroups. - In BarkWho: You assign the "Block Roblox" rule to the "Gaming" category.
- Result: When you toggle "Gaming" to Block in BarkWho, it enables that rule. UniFi then enforces it against whomever you defined in the rule settings (both computer and console groups).
- Example: In UniFi, you create a rule named "Block Roblox". You set the Target of that rule to include both your
Summary: Use UniFi to define who gets blocked (Groups). Use BarkWho to decide when they get blocked (Policies/Curfew).