Learn networking visually by building, configuring, and validating network topologies in your browser.
Learning networking concepts (IP addressing, subnets, routing, connectivity) is hard because:
- Most tools like Cisco Packet Tracer are heavyweight and not beginner-friendly
- Learners struggle to visualize how nodes connect and communicate
- Platforms like TryHackMe give challenges but no visual builder to experiment freely
๐ There is a gap for a lightweight, browser-based, visual networking lab focused on practice and feedback.
Build a web-based interactive networking lab where users can:
- Visually construct network topologies
- Configure nodes (IP, subnet, routing)
- Attempt guided challenges
- Get real-time validation feedback
- Beginner networking learners
- Frontend/backend developers exploring networking basics
- Bug bounty / security beginners
- Students preparing for CCNA basics
The product is challenge-first.
Users will:
- Pick a challenge
- Build the network visually
- Configure nodes
- Click Validate
- See pass/fail + hints
Goal: Connect 2 PCs in the same subnet and enable communication.
Requirements:
- PC A and PC B connected via switch or direct link
- Both must have IPs in same subnet
- Subnet mask must match
Goal: Allow communication between two different subnets via a router.
Requirements:
- Two PCs in different subnets
- Router in between
- Correct interface IP configuration
- Default gateway setup
Goal: Given a pre-built network, fix incorrect configuration.
Requirements:
- Detect wrong IP/subnet
- Correct routing issue
- Built using React Flow
- Drag-and-drop network nodes
- Connect nodes using edges (cables)
| Node Type | Description | Configurable |
|---|---|---|
| PC | End device | IP, subnet, gateway |
| Router | Routing device | Interfaces + IP |
| Switch | Layer 2 device | (no config in MVP) |
On selecting a node:
- IP Address
- Subnet Mask
- Default Gateway
- Interface list (eth0, eth1โฆ)
- IP address per interface
- User connects nodes via edges
- Each edge represents a cable
- Direction is not important (undirected graph)
User clicks Validate โ system runs checks:
- โ All nodes are connected (no isolated nodes)
- โ IP format is valid
- โ Devices in same subnet can communicate
- โ Devices in different subnets require router
- โ Gateway is correctly configured
- โ Router interfaces belong to correct subnet
Each challenge contains:
- Title
- Description
- Initial state (optional)
- Validation function
type Challenge = {
id: string;
title: string;
description: string;
initialGraph?: Graph;
validate: (graph: Graph) => ValidationResult;
};- Save graph state in localStorage
- Resume last session
type NodeType = "pc" | "router" | "switch";
type IPConfig = {
ip: string;
subnetMask: string;
gateway?: string;
};
type RouterInterface = {
name: string;
ip: string;
subnetMask: string;
};
type NetworkNode = {
id: string;
type: NodeType;
config: IPConfig | RouterInterface[];
};
type NetworkEdge = {
id: string;
source: string;
target: string;
};
type Graph = {
nodes: NetworkNode[];
edges: NetworkEdge[];
};-
Convert graph to adjacency list
-
Use BFS/DFS to:
- Check connectivity
- Find path between nodes
-
Compare:
- subnet(ip1) === subnet(ip2)
-
If different subnet:
- ensure router exists in path
-
Validate gateway routing
-----------------------------------------
| Sidebar | Canvas (ReactFlow) |
| Nodes | |
|---------|------------------------------|
| Challenges Panel | Config Panel |
-----------------------------------------
FlowCanvasSidebarNodesNodeConfigPanelChallengeListValidationResultPanel
| Layer | Technology |
|---|---|
| Framework | React + TypeScript |
| Styling | Tailwind CSS |
| Graph UI | React Flow |
| State | Zustand |
| Storage | localStorage |
-
User can complete at least 3 challenges
-
Validation system correctly detects:
- wrong subnet
- missing router
- bad gateway
-
UI remains responsive with 20+ nodes
- Canvas + nodes + connections
- Basic node config panel
- Validation engine
- Subnet logic
- Routing logic
- Challenge system
- UI polish
- persistence
- bug fixes
- Ping simulation animation
- Packet flow visualization
- Firewall rules
- VLAN support
- Multi-user collaboration
- Shareable challenge links
This project demonstrates:
- Complex frontend architecture
- Graph-based UI systems
- Domain modeling (networking)
- Validation engines
- Product thinking
Built by a Frontend Engineer passionate about:
- Visual systems
- Networking
- Security learning tools
๐ Goal: Make networking learning as intuitive as drawing a flowchart.