Network Source of Truth (SOT) - A lightweight, markdown-native IPAM tool for CCNA students to practice network design with version control.
- Port-Level IP Management - Assign IPs per interface, not per device
- Editable Table Interface - Inline editing for all network parameters
- Automatic Validation - 8 validation rules with real-time feedback
- Cascading Changes (π₯ Killer Feature) - Change one IP, see all dependencies
- CLI Generator - One-click Cisco IOS config generation
- Markdown Native - All data stored as YAML frontmatter in
.mdfiles - Git-Ready - Perfect for GitHub collaboration and version control
- Network Topology Graph - Visual representation of your network
- Zero Dependencies - Offline-first, no database required
- Less Busywork - Auto-calculate subnets, masks, wildcards
- Better Learning - See network dependencies in real-time
- Git Workflow - Learn version control while building networks
- Portable - Take your lab anywhere (just GitHub repo)
- Free - Open-source, forever free
| Feature | NetBox | Ansible | Packet Tracer | GNS3 | Network SOT |
|---|---|---|---|---|---|
| Port-level IP management | β | β | β | β | β |
| Editable inline table | Partial | β | β | β | β |
| Cascading confirmation | β | β | β | β | β |
| CLI generator | β | β | β | β | β |
| Lightweight/Offline | β | β | β | β | β |
| Git-native format | β | β | β | β | β |
| Learning-focused | β | β | β | β | β |
| Free | β | β | Partial | β | β |
- π CCNA Students (200-301) learning IPv4 addressing
- π« Networking Classes (competitive advantage)
- πΌ Lab Documentation (instead of manual notes)
- π€ Peer Learning (GitHub collaboration)
- π’ Small Lab Environments (lightweight alternative to NetBox)
# Clone repo
git clone https://github.com/pakcli/Webapp-Learn-Network-Enginner.git
cd Webapp-Learn-Network-Enginner
# Install dependencies
npm install
# Start dev server
npm run dev
# β Opens http://localhost:5173- Open app
- Click "+ Add Device"
- Create devices:
R1(router),SW1(switch),PC1(client) - Edit table:
- R1.Gi0/0: 192.168.1.1/24
- SW1.Gi0/0: connected to R1.Gi0/0
- PC1.Gi0/0: 192.168.1.10/24 (gateway: 192.168.1.1)
- Click "Generate CLI" β Copy to Packet Tracer
- Click "Export Vault" β Commit to GitHub
.
βββ src/
β βββ types/ # TypeScript interfaces
β βββ components/ # React components
β βββ services/ # Business logic (engines)
β βββ hooks/ # Custom React hooks
β βββ utils/ # Utilities
β βββ constants/ # Constants
β βββ styles/ # Global CSS
β βββ App.tsx # Root component
β βββ index.tsx # Entry point
βββ docs/ # Documentation
βββ examples/ # Example vaults
βββ tests/ # Test files
βββ public/ # Static assets
Each device = one .md file with YAML frontmatter:
---
hostname: R1
role: router
ports:
Gi0/0:
ip: 192.168.1.1
cidr: 24
subnet: 192.168.1.0
wildcard: 0.0.0.255
connected_to: SW1.Fa0/1
ospf_area: 0
Gi0/1:
ip: 10.0.0.1
cidr: 30
connected_to: R2.Gi0/0
---
# Router Configuration
Core router for CCNA Lab 01- β Port-level IPs - Every interface gets its own IP
- β Same segment = same subnet - Connected ports must match
- β Gateway exists - Client gateways must be real devices
- β Router-to-router /30 - P2P links are point-to-point
- β No overlap - IPs must be unique
- β OSPF match - Wildcards must match CIDR
- β Cascading confirm - See dependencies before applying
- β CLI valid - Only generate if all rules pass
User changes: R1.Gi0/0: 192.168.1.1 β 192.168.2.1
System detects:
- PC1 gateway (192.168.1.1) no longer exists
- PC1 must move to 192.168.2.0/24
System asks:
"Update PC1 gateway to 192.168.2.1 and IP to 192.168.2.10? YES/NO"
User clicks YES β All 4 files updated
User clicks NO β Change reverted
- Frontend: React 18 + TypeScript
- State: Zustand
- Styling: CSS Modules
- Build: Vite
- Testing: Vitest + Testing Library
- Graph: Cytoscape.js
- Data: YAML + Markdown
- React + TypeScript setup
- Type definitions
- Markdown parser
- Device table component
- Validation engine
- CLI generator
- Cascading detector
- Graph visualization
- File upload/export
- Obsidian plugin wrapper
- GNS3 integration
- Packet Tracer export
- Multi-vault management
- Collaborative editing
Contributions welcome! See CONTRIBUTING.md for guidelines.
# Fork, create feature branch
git checkout -b feature/your-feature
commit changes
git push origin feature/your-feature
# Open PRMIT License - See LICENSE file
Specifically designed to help students like you:
- β Stop spending time on manual data entry
- β Focus on network design concepts
- β Learn Git workflow alongside networking
- β Build a portfolio on GitHub
- β Collaborate with peers
One Liner:
"Enter IP once, validate automatically, see dependencies, generate CLI β focus on learning the logic, not busywork." π―
- π¬ GitHub Discussions: Ask questions
- π GitHub Issues: Report bugs
- π§ Email: [your email]
Happy learning! π