Back to Portfolio

Network Control Console

Technologies

Description

Read the full project overview for screenshots of each tool, the technology list, and links to the GitHub repos.

NCC is the operations dashboard for my self-hosted homelab at daha.us, a single pane of glass over the DNS, reverse-proxy, networking, and infrastructure services that everything else on my network depends on. Rather than juggle a half-dozen vendor UIs and SSH sessions to keep tabs on what's running, I built a Laravel app that talks to each underlying system's API and surfaces just the views I actually need to run the lab day-to-day.

The console has four primary tools. DNS Zones browses authoritative zones served by my own ns1.daha.us nameserver and renders A, CNAME, MX, TXT, and NS records on demand. Reverse Proxy queries the Caddy admin API live and traces how a given domain routes to its backend, including wildcard matches and recursive subroute upstreams, so I can answer "where is foo.daha.us actually pointing?" without grepping config files. Cloudflare DDNS wraps my dynamic-DNS updater with status, manual-run, and force-refresh controls, plus full CRUD over the zones it manages and a separate NSFW-domain blocklist stored as JSON. Network Clients authenticates against the UniFi controller on the UDM Pro and pulls the live DHCP/client table, IP, MAC, hostname, VLAN, signal strength, traffic counters, switch port, sorted naturally by IP.

Beyond the tools, the home view doubles as a launcher: quick links to Nextcloud, Plex, an Ollama AI host, phpMyAdmin, the UniFi controller, and individual servers in the rack (Venenzia, Milano, Roma). The UI is a dark-mode Blade interface with gradient cards, hover transitions, and inline search inputs that route directly into the tool views.

Architecturally it's a thin, opinionated Laravel front-end over the APIs I already run. Every controller talks to upstream systems with Guzzle/HTTP, normalizes the response, and returns JSON to a jQuery-driven frontend, no database of its own, just a bit of file-based JSON for state that doesn't belong anywhere else. Caddy fronts the app itself, so NCC is also reverse-proxied by the very service it inspects.