Initial commit: bootstrap monorepo NetMapper

This commit is contained in:
Perplexity Bot
2026-08-03 21:40:48 +00:00
commit 96130a11f4
10 changed files with 257 additions and 0 deletions
+89
View File
@@ -0,0 +1,89 @@
# Domain Model
## Entitਨ principali
### Object
Rappresenta qualsiasi entitਨ mappabile.
Campi iniziali:
- `id`
- `name`
- `slug`
- `type` (`site`, `area`, `rack`, `physical_host`, `vm`, `lxc`, `app`, `switch`, `firewall`, `router`, `ap`, `camera`, `storage`, `other`)
- `status`
- `vendor`
- `model`
- `serial`
- `os_name`
- `os_version`
- `notes`
### ObjectRelation
Relazione tra due oggetti.
Campi iniziali:
- `id`
- `source_object_id`
- `target_object_id`
- `relation_type` (`contains`, `hosts`, `connected_to`, `depends_on`, `managed_by`, `runs`)
- `confidence`
- `source_type` (`manual`, `nmap`, `snmp`, `lldp`, `arp`, `api`)
### NetworkInterface
Interfaccia di rete collegata a un oggetto.
Campi iniziali:
- `id`
- `object_id`
- `name`
- `mac_address`
- `mtu`
- `speed`
- `admin_state`
- `oper_state`
- `description`
### IPAddress
Indirizzo IP associato a un oggetto o a un'interfaccia.
Campi iniziali:
- `id`
- `address`
- `version`
- `prefix_length`
- `hostname`
- `dns_name`
- `status`
- `object_id`
- `interface_id`
- `is_primary`
- `source_type`
### DiscoveryJob
Esecuzione di un task di discovery.
Campi iniziali:
- `id`
- `job_type`
- `scope`
- `status`
- `started_at`
- `finished_at`
- `requested_by`
- `parameters_json`
- `result_summary`
### Evidence
Dato grezzo o semi-normalizzato raccolto da una sorgente.
Campi iniziali:
- `id`
- `source_type`
- `object_hint`
- `payload_json`
- `observed_at`
- `fingerprint`
## Nota di progettazione
Separare oggetti, relazioni e evidenze consente di distinguere ciò che il sistema ha osservato da ciò che il sistema ha consolidato nel modello finale.
+31
View File
@@ -0,0 +1,31 @@
# MVP Roadmap
## Fase 0 - Fondazioni
- Inizializzare monorepo.
- Definire modello dati iniziale.
- Preparare stack locale con Postgres e Redis.
## Fase 1 - Inventario manuale
- CRUD oggetti.
- CRUD IP e interfacce.
- Relazioni padre/figlio e connected_to.
## Fase 2 - Discovery base
- Scan subnet configurate.
- Host attivi, porte base, reverse DNS.
- Prima normalizzazione in inventario.
## Fase 3 - Discovery arricchita
- SNMP read-only.
- Neighbor LLDP/CDP.
- MAC table e inferenza link.
## Fase 4 - UI mappa
- Vista grafo iniziale.
- Contenitori annidati.
- Pannello dettagli per oggetto/IP.
## Fase 5 - Connettori homelab
- Proxmox.
- Docker/Podman.
- Eventuali import futuri da altri sistemi.
+19
View File
@@ -0,0 +1,19 @@
# Vision
NetMapper nasce per diventare il punto centrale di osservazione e documentazione di un homelab.
L'applicazione deve unire discovery automatico e modellazione manuale, perché la topologia reale non è sempre deducibile in modo completo dal solo scanning di rete. Il risultato atteso non è solo un inventario di IP, ma una mappa navigabile che rappresenti relazioni, contenimento, collegamenti e contesto operativo.
## Viste principali
- Vista fisica: switch, firewall, server, access point, modem, telecamere e collegamenti.
- Vista logica: subnet, VLAN, servizi esposti, flussi e dipendenze.
- Vista gerarchica: host fisico > VM/LXC > app/servizi.
- Vista inventario/IP: indirizzi, MAC, interfacce, metadati, note e sorgenti discovery.
## Principi
- Source of truth interna, ma alimentata da discovery.
- Ogni informazione deve avere origine, timestamp e livello di confidenza.
- Nessun lock-in sul runtime: deve girare bene sia in LXC sia in container.
- Plugin/connettori per estendere discovery e import dati.