A Network Discovery App for MSP Client Onboarding

Preface
For Managed Service Providers (MSPs), gathering detailed network information during client onboarding is critical. This process is usually time-consuming and non-billable. To solve this, I built a Node.js application to automate routine discovery tasks.
The concept is simple: install the app on a Raspberry Pi, connect it to the prospective client’s network, and initiate a scan. The app runs nmap to discover local devices and performs whois lookups on configured domains. It also queries DNS records (like MX records) to identify email providers. Technicians can then submit the gathered data to a central repository via a form.
Technical Decisions
Architecture
I built this as a monolithic JavaScript application using ESM imports, with no server-side compilation step. It connects to a PostgreSQL database running in Docker.
Stack
I prioritized performance and speed.
- Server: Fastify, for its low overhead.
- UI: Solid.js, for its fine-grained reactivity and small bundle size.
This minimal full-stack JavaScript setup is highly efficient. The frontend consumes a REST API from Fastify, while WebSockets push live scan updates to the client.
Building a Type-Safe Full-Stack Starter with Fastify and Astro
A complete starter template combining Astro, Fastify, tRPC, Lucia, React, NextUI, and Drizzle into a single type-safe monolith.
My Custom Pi Configuration for a Multi-Agent Coding Workflow
The Pi configuration I use for daily development: specialized coding agents, persistent RPC workers, iterative review loops, and a custom orchestration UI.
Building Compass: A Life Assistant That Still Works When the AI Does Not
I wanted a more customizable workout tracker, a budget my wife and I could share, and AI help on both. So I built Compass on TanStack Start and Cloudflare, and made sure it still works when the AI does not.