Skip to content

pakcli/Webapp-Learn-Network-Enginner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌐 Network SOT - Obsidian Network IPAM

Network Source of Truth (SOT) - A lightweight, markdown-native IPAM tool for CCNA students to practice network design with version control.

✨ Features

🎯 Core Features

  • 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 .md files
  • Git-Ready - Perfect for GitHub collaboration and version control
  • Network Topology Graph - Visual representation of your network
  • Zero Dependencies - Offline-first, no database required

πŸš€ Student Benefits

  1. Less Busywork - Auto-calculate subnets, masks, wildcards
  2. Better Learning - See network dependencies in real-time
  3. Git Workflow - Learn version control while building networks
  4. Portable - Take your lab anywhere (just GitHub repo)
  5. Free - Open-source, forever free

πŸ“Š Competitive Advantage

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 βœ… βœ…

πŸŽ“ Perfect For

  • πŸ“š 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)

πŸš€ Quick Start

Installation

# 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

First Lab (5 minutes)

  1. Open app
  2. Click "+ Add Device"
  3. Create devices: R1 (router), SW1 (switch), PC1 (client)
  4. 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)
  5. Click "Generate CLI" β†’ Copy to Packet Tracer
  6. Click "Export Vault" β†’ Commit to GitHub

πŸ“ Project Structure

.
β”œβ”€β”€ 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

🧠 How It Works

The Data Model

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

The Validation Rules (8 Rules)

  1. βœ… Port-level IPs - Every interface gets its own IP
  2. βœ… Same segment = same subnet - Connected ports must match
  3. βœ… Gateway exists - Client gateways must be real devices
  4. βœ… Router-to-router /30 - P2P links are point-to-point
  5. βœ… No overlap - IPs must be unique
  6. βœ… OSPF match - Wildcards must match CIDR
  7. βœ… Cascading confirm - See dependencies before applying
  8. βœ… CLI valid - Only generate if all rules pass

The Killer Feature: Cascading Changes

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

πŸ“š Documentation


πŸ”§ Tech Stack

  • Frontend: React 18 + TypeScript
  • State: Zustand
  • Styling: CSS Modules
  • Build: Vite
  • Testing: Vitest + Testing Library
  • Graph: Cytoscape.js
  • Data: YAML + Markdown

🎯 Roadmap

Phase 1 (MVP) βœ…

  • React + TypeScript setup
  • Type definitions
  • Markdown parser
  • Device table component
  • Validation engine
  • CLI generator

Phase 2

  • Cascading detector
  • Graph visualization
  • File upload/export
  • Obsidian plugin wrapper

Phase 3

  • GNS3 integration
  • Packet Tracer export
  • Multi-vault management
  • Collaborative editing

🀝 Contributing

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 PR

πŸ“ License

MIT License - See LICENSE file


πŸŽ“ Made for CCNA Students

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." 🎯


πŸ“ž Support

  • πŸ’¬ GitHub Discussions: Ask questions
  • πŸ› GitHub Issues: Report bugs
  • πŸ“§ Email: [your email]

Happy learning! πŸš€

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors