diff --git a/archetypes/hardware.md b/archetypes/hardware.md
new file mode 100644
index 0000000..4ba84c3
--- /dev/null
+++ b/archetypes/hardware.md
@@ -0,0 +1,50 @@
+---
+title: "{{ replace .Name "-" " " | title }}"
+date: {{ .Date }}
+hardware:
+ manufacturer: MFG
+ model: Model
+ chip: SoC
+ recommended: true
+ cores: 2
+ threads: 4
+ clock: 1000
+ ram: 262144
+ flash: 262144
+ serial:
+ - ttl
+ - usb
+ - rj45
+ interface:
+ - dev: eth0
+ type: rj45
+ speed: 1000
+ features: [ 24V, dsa, PD ]
+ roleL3: wan
+ roleNode: wan
+ - dev: eth1
+ type: rj45
+ speed: 1000
+ features: [ 802.3af, dsa ]
+ roleL3: client
+ roleNode: client
+ - dev: eth4
+ type: sfp
+ speed: 1000
+ features: [ ]
+ roleL3: client
+ roleNode: batman
+ - dev: wifi2
+ type: 2ghz
+ speed: 150
+ features: [ "n", 1T, 1R ]
+ - dev: wifi5
+ type: 5ghz
+ speed: 866
+ features: [ ac, 2T, 2R ]
+ benchmark:
+ benchmark1: measurement
+---
+
+## Spezifikation
+{{< detailsofhardware >}}
diff --git a/content/hardware/_index.md b/content/hardware/_index.md
index f111383..4484e83 100644
--- a/content/hardware/_index.md
+++ b/content/hardware/_index.md
@@ -4,4 +4,4 @@ bookCollapseSection: true
date: 2022-12-01T17:25:00+01:00
---
-{{< section >}}
+{{< tableofhardware >}}
diff --git a/layouts/shortcodes/detailsofhardware.html b/layouts/shortcodes/detailsofhardware.html
new file mode 100644
index 0000000..34a55a7
--- /dev/null
+++ b/layouts/shortcodes/detailsofhardware.html
@@ -0,0 +1,147 @@
+{{ $hw := .Page.Params.hardware }}
+
Datenblatt
+{{ with $hw }}
+
+
+ Bezeichnung |
+ {{ .manufacturer }} {{ .model }} |
+
+
+ Empfohlen |
+ {{ cond .recommended (emojify ":heavy_check_mark:") (emojify ":x:") }} |
+
+
+ SoC |
+ {{ .chip }} |
+
+
+ CPU |
+ {{ .cores }} Core {{ .threads }} Threads @ {{ .clock }} MHz |
+
+
+ RAM |
+ {{ div .ram 1024 }}MiB |
+
+
+ Flash |
+ {{ div .flash 1024 }}MiB |
+
+ {{ with .serial }}
+
+ Serielle Schnittstelle |
+ {{ delimit . ", " }} |
+
+ {{ end }}
+
+{{ end }}
+{{ with $hw.interface }}
+ Schnittstellen
+ {{ $wired := where . "type" "in" (slice "rj45" "sfp") }}
+ {{ with $wired }}
+ Kabelgebunden
+
+
+ |
+ {{ range . -}}
+ {{ .dev }} |
+ {{ end }}
+
+
+ Typ |
+ {{ range . -}}
+ {{ .speed }}Mbps {{ .type | upper }} |
+ {{ end }}
+
+ {{ if where . ".features" "intersect" (slice "24V" "802.3af" "802.3at" "PD") }}
+
+ PoE |
+ {{ range . -}}
+ {{ delimit (intersect .features (slice "24V" "802.3af" "802.3at" "PD")) ", " }} |
+ {{ end }}
+
+ {{ end }}
+ {{ if where . ".features" "intersect" (slice "dsa") }}
+
+ DSA Port |
+ {{ range . -}}
+ {{ cond (in .features "dsa") (emojify ":heavy_check_mark:") "" }} |
+ {{ end }}
+
+ {{ end }}
+ {{ if where . "roleL3" "!=" nil }}
+
+ Belegung L3 |
+ {{ range . -}}
+ {{ echoParam . "roleL3" }} |
+ {{ end }}
+
+ {{ end }}
+ {{ if where . "roleNode" "!=" nil }}
+
+ Belegung Node |
+ {{ range . -}}
+ {{ echoParam . "roleNode" }} |
+ {{ end }}
+
+ {{ end }}
+
+ {{ end }}
+
+ {{ $wireless := where $hw.interface "type" "in" (slice "2ghz" "5ghz") }}
+ {{ with $wireless }}
+ Wireless
+
+
+ |
+ {{ range . -}}
+ {{ .dev }} |
+ {{ end }}
+
+ {{ if where . ".features" "intersect" (slice "bg" "n" "ac" "ax") }}
+
+ Standard |
+ {{ range . -}}
+ {{ delimit (intersect .features (slice "bg" "n" "ac" "ax")) ", " }} |
+ {{ end }}
+
+ {{ end }}
+ {{ if where . ".speed" "!=" nil }}
+
+ Datenrate |
+ {{ range . -}}
+ {{ echoParam . "speed" }} Mbit/s |
+ {{ end }}
+
+ {{ end }}
+
+ {{ end }}
+{{ end }}
+{{ with $hw.benchmark }}
+ Benchmarks
+
+
+ Benchmark |
+ Messung |
+
+ {{ range $b, $m := . }}
+
+ {{ $b }} |
+ {{ $m }} |
+
+ {{ end }}
+
+{{ end }}
+
+
+debug :)
+{{ template "treeview" .Page.Params.hardware }}
+{{ define "treeview" }}
+
+ {{ range $k, $v := . }}
+ - {{ $k }}
+ {{ if (or (reflect.IsMap $v) (reflect.IsSlice $v)) }}{{ template "treeview" $v }}{{ else }}{{ $v }}{{end}}
+
+ {{ end }}
+
+{{ end }}
+{{ highlight (jsonify (dict "indent" "\t") .Page.Params.hardware) "json" }}
diff --git a/layouts/shortcodes/tableofhardware.html b/layouts/shortcodes/tableofhardware.html
new file mode 100644
index 0000000..5d0423b
--- /dev/null
+++ b/layouts/shortcodes/tableofhardware.html
@@ -0,0 +1,26 @@
+
+
+ Hersteller |
+ Modell |
+ DSA Ports |
+ Radios |
+ Schnittstellen |
+ Empfohlen |
+
+ {{ range $device := where .Page.Pages "Params.hardware" "!=" nil }}
+ {{ $hw := $device.Params.hardware }}
+
+ {{ $hw.manufacturer }} |
+ {{ $hw.model }} |
+ {{ where $hw.interface "features" "intersect" (slice "dsa") | len }} |
+ {{ where $hw.interface "type" "in" (slice "2ghz" "5ghz") | len }} |
+
+ {{ range $type := slice "sfp" "rj45" "2ghz" "5ghz" }}
+ {{ $n := (where $hw.interface "type" "in" (slice $type) | len) }}
+ {{ if gt $n 0 }}{{ $n }}x{{ $type }} {{ end }}
+ {{ end }}
+ |
+ {{ cond $hw.recommended (emojify ":heavy_check_mark:") (emojify ":x:") }} |
+
+ {{ end }}
+