diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
new file mode 100644
index 0000000..74fd2be
--- /dev/null
+++ b/layouts/_default/baseof.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ {{ block "metaincludes" . }}
+ {{ partial "redirect.html" .Params }}
+ {{ end }}
+
+ {{ .Site.Title }}
+
+ {{ block "cssdependencyincludes" . }}
+
+
+ {{ end }}
+
+ {{ block "cssincludes" . }}
+ {{ $options := dict "targetPath" "default.css" "outputStyle" "compressed" "enableSourceMap" false -}}
+ {{ $style := resources.Get "/css/custom/nodes/default.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
+
+ {{ end }}
+
+ {{ $configData := dict "workerBaseURL" .Site.Params.workerBaseURL "scheduleURL" .Site.Params.scheduleURL "scheduleFetchInterval" .Site.Params.scheduleFetchInterval "twitterURL" .Site.Params.twitterURL "twitterFetchInterval" .Site.Params.twitterFetchInterval "mastodonURL" .Site.Params.mastodonURL "mastodonFetchInterval" .Site.Params.mastodonFetchInterval "musicURL" .Site.Params.musicURL "musicFetchInterval" .Site.Params.musicFetchInterval "cmsURL" .Site.Params.cmsURL "cmsFetchInterval" .Site.Params.cmsFetchInterval }}
+ {{ $configjs := resources.Get "/js/custom/core/config.js" | js.Build (dict "params" $configData) | resources.Fingerprint }}
+
+
+ {{ block "jsworkerincludes" . }}
+
+
+ {{ $fetchworkerjs := resources.Get "/js/custom/core/generic_fetch_worker.js" }}
+
+ {{ end }}
+
+
+ {{ block "main" . }}
+
+
+
+ {{ end }}
+
+ {{ block "jsdependencyincludes" . }}
+ {{ $luxon := resources.Get "/js/luxon/luxon.min.js" | resources.Fingerprint }}
+
+
+ {{ $preact := resources.Get "/js/preact/preact.min.js" | resources.Fingerprint }}
+
+
+ {{ $htm := resources.Get "/js/htm/htm.js" | resources.Fingerprint }}
+
+ {{ end }}
+
+ {{ block "jsincludes" . }}
+ {{ end }}
+
+
diff --git a/layouts/index.html b/layouts/index.html
new file mode 100644
index 0000000..425e05d
--- /dev/null
+++ b/layouts/index.html
@@ -0,0 +1,53 @@
+{{ define "main" }}
+
+
+
+
Static Information Endpoints:
+
+ {{ range .Pages }}
+ {{ if not .Params.redirect }}
+ -
+ {{ .Title }}:{{ .RelPermalink }}
+
+ {{ end }}
+ {{ end }}
+
+
+
Redirecting Information Endpoints:
+
+ {{ range .Pages }}
+ {{ if .Params.redirect }}
+ -
+
+
+ {{ .Title }}:{{ .RelPermalink }}
+ {{ with .Params.redirect }}
+
+
Configured redirect:
+
+
+ {{ end }}
+
+
+ {{ end }}
+ {{ end }}
+
+
+{{ end }}
+
+
+{{ define "cssincludes" }}
+{{ $options := dict "targetPath" "_index.css" "outputStyle" "compressed" "enableSourceMap" false -}}
+{{ $style := resources.Get "/css/custom/core/_index.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
+
+{{ end }}
+
+
+{{ define "jsworkerincludes" }}{{ end }}
+
+{{ define "jsdependencyincludes" }}{{ end }}
+
+{{ define "jsincludes" }}{{ end }}
diff --git a/layouts/partials/redirect.html b/layouts/partials/redirect.html
new file mode 100644
index 0000000..8786445
--- /dev/null
+++ b/layouts/partials/redirect.html
@@ -0,0 +1,3 @@
+{{ with .redirect }}
+
+{{ end }}
diff --git a/layouts/schedule-hall1/single.html b/layouts/schedule-hall1/single.html
new file mode 100644
index 0000000..074eae5
--- /dev/null
+++ b/layouts/schedule-hall1/single.html
@@ -0,0 +1,20 @@
+{{ define "cssincludes" }}
+{{ $options := dict "targetPath" "schedule-hall1.css" "outputStyle" "compressed" "enableSourceMap" false -}}
+{{ $style := resources.Get "/css/custom/nodes/schedule-hall1.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
+
+{{ end }}
+
+{{ define "jsincludes" }}
+{{ $externals := slice "htm" "preact" "luxon" }}
+{{ $buildOptions := dict "targetPath" "schedule-hall1.js" "externals" $externals }}
+{{ $nodejs := resources.Get "/js/custom/nodes/schedule-hall1.js" | js.Build $buildOptions | resources.Fingerprint }}
+
+{{ end }}
+
+{{ define "main" }}
+
+
+
+
+
+{{ end }}
diff --git a/layouts/schedule/single.html b/layouts/schedule/single.html
new file mode 100644
index 0000000..3a59820
--- /dev/null
+++ b/layouts/schedule/single.html
@@ -0,0 +1,20 @@
+{{ define "cssincludes" }}
+{{ $options := dict "targetPath" "schedule.css" "outputStyle" "compressed" "enableSourceMap" false -}}
+{{ $style := resources.Get "/css/custom/nodes/schedule.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
+
+{{ end }}
+
+{{ define "jsincludes" }}
+{{ $externals := slice "htm" "preact" "luxon" }}
+{{ $buildOptions := dict "targetPath" "schedule.js" "externals" $externals }}
+{{ $nodejs := resources.Get "/js/custom/nodes/schedule.js" | js.Build $buildOptions | resources.Fingerprint }}
+
+{{ end }}
+
+{{ define "main" }}
+
+
+
+
+
+{{ end }}
diff --git a/layouts/speaker-info-hall1/single.html b/layouts/speaker-info-hall1/single.html
new file mode 100644
index 0000000..10aea24
--- /dev/null
+++ b/layouts/speaker-info-hall1/single.html
@@ -0,0 +1,18 @@
+{{ define "cssincludes" }}
+{{ $options := dict "targetPath" "speaker-info-hall1.css" "outputStyle" "compressed" "enableSourceMap" false -}}
+{{ $style := resources.Get "/css/custom/nodes/speaker-info-hall1.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
+
+{{ end }}
+
+{{ define "jsincludes" }}
+{{ $externals := slice "htm" "preact" "luxon" }}
+{{ $buildOptions := dict "targetPath" "speaker-info-hall1.js" "externals" $externals }}
+{{ $nodejs := resources.Get "/js/custom/nodes/speaker-info-hall1.js" | js.Build $buildOptions | resources.Fingerprint }}
+
+{{ end }}
+
+{{ define "main" }}
+
+
+
+{{ end }}
diff --git a/layouts/talk-info-hall1/single.html b/layouts/talk-info-hall1/single.html
new file mode 100644
index 0000000..6d5a626
--- /dev/null
+++ b/layouts/talk-info-hall1/single.html
@@ -0,0 +1,18 @@
+{{ define "cssincludes" }}
+{{ $options := dict "targetPath" "talk-info-hall1.css" "outputStyle" "compressed" "enableSourceMap" false -}}
+{{ $style := resources.Get "/css/custom/nodes/talk-info-hall1.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
+
+{{ end }}
+
+{{ define "jsincludes" }}
+{{ $externals := slice "htm" "preact" "luxon" }}
+{{ $buildOptions := dict "targetPath" "talk-info-hall1.js" "externals" $externals }}
+{{ $nodejs := resources.Get "/js/custom/nodes/talk-info-hall1.js" | js.Build $buildOptions | resources.Fingerprint }}
+
+{{ end }}
+
+{{ define "main" }}
+
+
+
+{{ end }}
diff --git a/layouts/upcoming-talk-hall1/single.html b/layouts/upcoming-talk-hall1/single.html
new file mode 100644
index 0000000..664589b
--- /dev/null
+++ b/layouts/upcoming-talk-hall1/single.html
@@ -0,0 +1,19 @@
+{{ define "cssincludes" }}
+{{ $options := dict "targetPath" "upcoming-talk-hall1.css" "outputStyle" "compressed" "enableSourceMap" false -}}
+{{ $style := resources.Get "/css/custom/nodes/upcoming-talk-hall1.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
+
+{{ end }}
+
+{{ define "jsincludes" }}
+{{ $externals := slice "htm" "preact" "luxon" }}
+{{ $buildOptions := dict "targetPath" "upcoming-talk-hall1.js" "externals" $externals }}
+{{ $nodejs := resources.Get "/js/custom/nodes/upcoming-talk-hall1.js" | js.Build $buildOptions | resources.Fingerprint }}
+
+{{ end }}
+
+{{ define "main" }}
+
+
+
+
+{{ end }}
diff --git a/layouts/voc-schedule-hall1/single.html b/layouts/voc-schedule-hall1/single.html
new file mode 100644
index 0000000..ad7c13c
--- /dev/null
+++ b/layouts/voc-schedule-hall1/single.html
@@ -0,0 +1,12 @@
+{{ define "cssincludes" }}
+{{ $options := dict "targetPath" "default.css" "outputStyle" "compressed" "enableSourceMap" false -}}
+{{ $style := resources.Get "/css/custom/nodes/voc-schedule.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
+
+{{ end }}
+
+{{ define "jsincludes" }}
+{{ $externals := slice "htm" "preact" "luxon" }}
+{{ $buildOptions := dict "targetPath" "voc-schedule-hall1.js" "externals" $externals }}
+{{ $nodejs := resources.Get "/js/custom/nodes/voc-schedule-hall1.js" | js.Build $buildOptions | resources.Fingerprint }}
+
+{{ end }}
diff --git a/layouts/voc-schedule/single.html b/layouts/voc-schedule/single.html
new file mode 100644
index 0000000..db09b69
--- /dev/null
+++ b/layouts/voc-schedule/single.html
@@ -0,0 +1,12 @@
+{{ define "cssincludes" }}
+{{ $options := dict "targetPath" "default.css" "outputStyle" "compressed" "enableSourceMap" false -}}
+{{ $style := resources.Get "/css/custom/nodes/voc-schedule.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
+
+{{ end }}
+
+{{ define "jsincludes" }}
+{{ $externals := slice "htm" "preact" "luxon" }}
+{{ $buildOptions := dict "targetPath" "voc-schedule.js" "externals" $externals }}
+{{ $nodejs := resources.Get "/js/custom/nodes/voc-schedule.js" | js.Build $buildOptions | resources.Fingerprint }}
+
+{{ end }}
diff --git a/layouts/voc-speaker/single.html b/layouts/voc-speaker/single.html
new file mode 100644
index 0000000..e9e09da
--- /dev/null
+++ b/layouts/voc-speaker/single.html
@@ -0,0 +1,12 @@
+{{ define "cssincludes" }}
+{{ $options := dict "targetPath" "default.css" "outputStyle" "compressed" "enableSourceMap" false -}}
+{{ $style := resources.Get "/css/custom/nodes/voc-speaker.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
+
+{{ end }}
+
+{{ define "jsincludes" }}
+{{ $externals := slice "htm" "preact" "luxon" }}
+{{ $buildOptions := dict "targetPath" "voc-speaker.js" "externals" $externals }}
+{{ $nodejs := resources.Get "/js/custom/nodes/voc-speaker.js" | js.Build $buildOptions | resources.Fingerprint }}
+
+{{ end }}
diff --git a/layouts/voc-talks/single.html b/layouts/voc-talks/single.html
new file mode 100644
index 0000000..d640242
--- /dev/null
+++ b/layouts/voc-talks/single.html
@@ -0,0 +1,12 @@
+{{ define "cssincludes" }}
+{{ $options := dict "targetPath" "default.css" "outputStyle" "compressed" "enableSourceMap" false -}}
+{{ $style := resources.Get "/css/custom/nodes/voc-talks.scss" | resources.ToCSS $options | resources.Minify | resources.Fingerprint -}}
+
+{{ end }}
+
+{{ define "jsincludes" }}
+{{ $externals := slice "htm" "preact" "luxon" }}
+{{ $buildOptions := dict "targetPath" "voc-talks.js" "externals" $externals }}
+{{ $nodejs := resources.Get "/js/custom/nodes/voc-talks.js" | js.Build $buildOptions | resources.Fingerprint }}
+
+{{ end }}