How iqbalthehitchhiker/netwatch works
NetWatch is a browser-based network-incident learning simulator with student quiz and instructor teaching/management modes. Learners select a lesson, observe a simulated incident through network and telemetry views, then answer a diagnosis; quiz results and attempt data are handled by an Express/SQLite backend. The graph preserves the lesson, simulation, explanation, self-check, authentication, results, and instructor-management capabilities. Source excerpts show the frontend controller’s renderer calls and backend route wiring; the README is empty, and the excerpts do not establish the browser API’s HTTP connections to the backend.
Main entry points: app.js Application controller · server.js Express server · db.js SQLite records · results.js Results routes
Components 23
Learning content
- Lessons and incidents
src/lessons.js - Explanation content
src/explain-content.js - Explanation bridge
src/explain-content-bridge.js - Quiz scoring
src/scoring.js
Simulation experience
- Simulation engine
src/engine.js - Self-check mode
src/self-check.js - Overview renderer
src/renderers/overview.js - Topology renderer
src/renderers/topology.js - Alerts renderer
src/renderers/alerts.js - Charts renderer
src/renderers/charts.js - Packet renderer
src/renderers/packets.js - Logs renderer
src/renderers/logs.js
Frontend coordination
- Application controller
src/app.js - Session state
src/auth.js - Frontend API
src/api.js
Accounts and records
- Express server
backend/server.js - Login route
backend/routes/auth.js - Attempt routes
backend/routes/attempts.js - Results routes
backend/routes/results.js - Instructor routes
backend/routes/admin.js - JWT authorization
backend/middleware/auth.js - SQLite records
backend/db.js
Other components
- Learner / instructor
Connections 26
- Learner / instructor → Application controller: uses
- Application controller → Lessons and incidents: loads lesson data
src/app.js - Application controller → Explanation content: uses explanations
src/app.js - Explanation bridge → Explanation content: accesses content
src/explain-content-bridge.js - Application controller → Quiz scoring: uses scoring
src/app.js - Application controller → Simulation engine: controls simulation
src/app.js - Simulation engine → Lessons and incidents: loads configuration
src/engine.js - Application controller → Self-check mode: controls self-check
src/app.js - Application controller → Overview renderer: renders overview
src/app.js - Application controller → Topology renderer: renders topology
src/app.js - Application controller → Alerts renderer: renders alerts
src/app.js - Application controller → Charts renderer: updates charts
src/app.js - Application controller → Packet renderer: renders packets
src/app.js - Application controller → Logs renderer: renders logs
src/app.js - Application controller → Session state: reads and clears session
src/app.js - Application controller → Frontend API: uses API
src/app.js - Express server → Login route: routes requests
backend/server.js - Express server → Attempt routes: routes requests
backend/server.js - Express server → Results routes: routes requests
backend/server.js - Express server → Instructor routes: routes requests
backend/server.js - Login route → SQLite records: looks up accounts
backend/routes/auth.js - Attempt routes → SQLite records: reads and updates attempts
backend/routes/attempts.js - Results routes → JWT authorization: checks role
backend/routes/results.js - Results routes → SQLite records: records and reads results
backend/routes/results.js - Instructor routes → JWT authorization: checks instructor role
backend/routes/admin.js - Instructor routes → SQLite records: manages student records
backend/routes/admin.js