Initial commit: bootstrap monorepo NetMapper
This commit is contained in:
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user