summaryrefslogtreecommitdiffstats
path: root/requirements.json
blob: 73cd98eaa11c68593b768e615c39f205aeb8bb06 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
{
    "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 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` 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 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 allow browsing of configuration files with educational annotations explaining what each section does in simple terms."
            },
            {
                "id": "F-005",
                "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 include network simulation mode showing how configuration changes would affect packet flow before applying changes."
            },
            {
                "id": "F-007",
                "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 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 with RESTful API designed for educational use cases."
            },
            {
                "id": "T-002",
                "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 system shall include configuration templates for educational scenarios with inline documentation."
            },
            {
                "id": "T-004",
                "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": "The system shall implement atomic operations with automatic backups and easy rollback functionality."
            },
            {
                "id": "T-006",
                "description": "The frontend shall include interactive network diagrams that update based on configuration changes."
            },
            {
                "id": "T-007",
                "description": "The system shall provide REST API endpoints for educational workflows: template application, simulation mode, diagnostic tests."
            },
            {
                "id": "T-008",
                "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"
        ]
    }
}