diff options
Diffstat (limited to 'requirements.json')
| -rw-r--r-- | requirements.json | 82 |
1 files changed, 63 insertions, 19 deletions
diff --git a/requirements.json b/requirements.json index 6dd5f58..73cd98e 100644 --- a/requirements.json +++ b/requirements.json @@ -1,75 +1,119 @@ { - "project": "systemd-networkd simple Web UI", - "version": "0.2", - "goal": "Make a easy to use interface to configure router to teach network basics for high schoolers purposes", + "project": "Network Classroom - systemd-networkd Web UI", + "version": "0.3", + "goal": "Educational web interface for teaching network fundamentals through practical router configuration with systemd-networkd", + "target_audience": "High school students learning basic networking concepts", + "core_principles": [ + "Progressive disclosure - show simple concepts first, advanced options later", + "Visual learning - use diagrams and color coding", + "Safe experimentation - easy undo/redo and validation", + "Real-world relevance - connect concepts to actual network behavior" + ], "requirements": { "functional": [ { "id": "F-001", - "description": "The system shall provide a structured web-based control panel with application-style layout (navigation menu, panels, command buttons)." + "description": "The system shall provide an educational dashboard showing network topology with visual representation of interfaces (WAN, LAN, wireless) and their connections." }, { "id": "F-002", - "description": "The system shall parse `networkctl status --json=short` output and present each interface as a structured panel showing: name, MAC, state, addresses, routes, DNS." + "description": "The system shall parse `networkctl status --json=short` and present interfaces in an educational panel showing: name, type (WAN/LAN), MAC, state (color-coded), IP addresses, routes, DNS with tooltips explaining each concept." }, { "id": "F-003", - "description": "The system shall allow browsing of existing network configuration files under `/etc/systemd/network/`." + "description": "The system shall provide guided configuration wizards for common scenarios: Home Router, School Lab, Internet Cafe, with explanations of each setup choice." }, { "id": "F-004", - "description": "The system shall display each configuration file (`*.network`, `*.netdev`, `*.link`) as editable text with syntax highlighting and validation hooks." + "description": "The system shall allow browsing of configuration files with educational annotations explaining what each section does in simple terms." }, { "id": "F-005", - "description": "The system shall validate edited configuration against systemd-networkd rules before allowing save (e.g., reject unknown keys, missing sections)." + "description": "The system shall provide inline configuration editing with two modes: Simple (form-based with explanations) and Advanced (raw file editing with syntax highlighting)." }, { "id": "F-006", - "description": "The system shall provide versioned backups of configuration files, allowing rollback to earlier revisions." + "description": "The system shall include network simulation mode showing how configuration changes would affect packet flow before applying changes." }, { "id": "F-007", - "description": "The system shall provide controls to apply changes safely by restarting only `systemd-networkd` (not full reboot)." + "description": "The system shall maintain version history with educational notes about what each change accomplished (e.g., 'Added DHCP server for student devices')." }, { "id": "F-008", - "description": "The system shall provide a full device reboot option for recovery." + "description": "The system shall include built-in tutorials: IP addressing, subnetting, NAT, firewall basics, DNS configuration." + }, + { + "id": "F-009", + "description": "The system shall provide safe testing environment with pre-commit validation and the ability to quickly revert to known working configuration." + }, + { + "id": "F-010", + "description": "The system shall include network diagnostics tools with educational explanations: ping, traceroute, port testing with visual results." } ], "technical": [ { "id": "T-001", - "description": "The backend shall be implemented in Go, exposing HTTP endpoints for structured data (JSON) and file operations." + "description": "The backend shall be implemented in Go with RESTful API designed for educational use cases." }, { "id": "T-002", - "description": "The backend shall include a parser for systemd-networkd configuration files, mapping sections ([Match], [Link], [Network], etc.) into JSON objects." + "description": "The frontend shall use vanilla HTML/CSS/JS with custom educational-focused styling - avoid heavy frameworks for better learning and performance." }, { "id": "T-003", - "description": "The frontend shall render interface panels dynamically from backend JSON and allow in-place editing of configuration fields." + "description": "The system shall include configuration templates for educational scenarios with inline documentation." }, { "id": "T-004", - "description": "Configuration edits shall be validated by a backend hook that checks syntax with `systemd-analyze verify` before saving." + "description": "Configuration validation shall include both technical checks (`systemd-analyze verify`) and educational warnings (e.g., 'This will make the device unreachable from network - are you sure?')." }, { "id": "T-005", - "description": "All changes shall be written atomically to `/etc/systemd/network/`, with `.bak` backup created automatically." + "description": "The system shall implement atomic operations with automatic backups and easy rollback functionality." }, { "id": "T-006", - "description": "The backend shall implement privilege separation: file I/O restricted to `/etc/systemd/network/`, command execution restricted to `systemd-networkd` operations." + "description": "The frontend shall include interactive network diagrams that update based on configuration changes." }, { "id": "T-007", - "description": "The frontend shall provide syntax highlighting (via regex) for editing `.network` files." + "description": "The system shall provide REST API endpoints for educational workflows: template application, simulation mode, diagnostic tests." }, { "id": "T-008", - "description": "The system shall expose REST API endpoints for: (a) listing configs, (b) retrieving config, (c) validating config, (d) saving config, (e) restarting networkd, (f) rebooting device." + "description": "All operations shall be logged with educational context for review and learning." + } + ], + "educational": [ + { + "id": "E-001", + "description": "Each configuration option shall have beginner-friendly explanation with examples of when to use it." + }, + { + "id": "E-002", + "description": "The interface shall include learning progression from basic (IP addresses) to advanced (firewall rules, VLANs)." + }, + { + "id": "E-003", + "description": "The system shall provide immediate feedback showing how configuration changes affect network behavior." + }, + { + "id": "E-004", + "description": "Complex concepts shall be broken down with analogies (e.g., 'IP addresses are like street addresses for computers')." } ] + }, + "ui_recommendation": { + "styling_approach": "Use custom CSS with minimal, education-focused design", + "rationale": "Fluent UI is enterprise-focused and may be overwhelming for students. A simpler, custom design will be more approachable and educational.", + "design_principles": [ + "Clean, uncluttered interface with ample whitespace", + "Color coding for different interface types and states", + "Progressive disclosure - show advanced options only when needed", + "Consistent, predictable navigation", + "Mobile-responsive for tablet use in classrooms" + ] } } |
