# InfraNet Pro — Architecture > The mental model, not a line-by-line reference. Read this first; then the code > reads itself. For the full feature manual, see the PDF in this repo > (`MANUALE_TECNICO_IT.pdf` / `TECHNICAL_MANUAL_EN.pdf`). InfraNet Pro is a **self-hosted L1/L2 network documentation tool** — racks, cabling, ports, VLANs, MAC/FDB, LLDP/CDP topology, SNMP discovery — with a visual, commercial-grade UI. Vanilla JS frontend, Node/Express backend, JSON file storage. **Minimal tooling** (a lightweight esbuild bundle for the frontend, introduced by the in-progress ESM migration — see §10), **no framework.** --- ## 1. Non-negotiable principles These are deliberate. Don't "fix" them without understanding why: 1. **Minimal build.** Pure `lib/*.js` stay plain UMD-lite (no transpile, Node tests import them as-is). The glue layer is being migrated to ES modules bundled by **esbuild** (`npm run build` → `dist/app.bundle.js`) to kill the implicit global coupling + `typeof` guards. **The JS strangler is complete:** all `lib/app-*.js` glue **and** the nucleus (`src/app.js`) are now ESM in the bundle. The only remaining classic `