diff --git a/desu.local/frontend/Dockerfile b/desu.local/frontend/Dockerfile
index 6131e17..2583d61 100644
--- a/desu.local/frontend/Dockerfile
+++ b/desu.local/frontend/Dockerfile
@@ -1,4 +1,6 @@
FROM httpd:latest
COPY httpd.conf /usr/local/apache2/conf/httpd.conf
COPY vhost.conf /usr/local/apache2/conf/vhost.conf
+CMD rm /usr/local/apache2/htdocs/index.html
+COPY src/* /usr/local/apache2/htdocs
EXPOSE 80
diff --git a/desu.local/frontend/src/index.php b/desu.local/frontend/src/index.php
new file mode 100644
index 0000000..79a425e
--- /dev/null
+++ b/desu.local/frontend/src/index.php
@@ -0,0 +1,39 @@
+
+
+
+
+
+ desu.local
+
+
+
+
+
+
+
diff --git a/desu.local/frontend/src/src/common-footer.php b/desu.local/frontend/src/src/common-footer.php
new file mode 100644
index 0000000..5523499
--- /dev/null
+++ b/desu.local/frontend/src/src/common-footer.php
@@ -0,0 +1,4 @@
+
diff --git a/desu.local/frontend/src/src/common-header.php b/desu.local/frontend/src/src/common-header.php
new file mode 100644
index 0000000..c3009ec
--- /dev/null
+++ b/desu.local/frontend/src/src/common-header.php
@@ -0,0 +1,8 @@
+
diff --git a/desu.local/frontend/src/src/common-meta.php b/desu.local/frontend/src/src/common-meta.php
new file mode 100644
index 0000000..e821a7e
--- /dev/null
+++ b/desu.local/frontend/src/src/common-meta.php
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/desu.local/frontend/src/styles/buttons.css b/desu.local/frontend/src/styles/buttons.css
new file mode 100644
index 0000000..f6e017c
--- /dev/null
+++ b/desu.local/frontend/src/styles/buttons.css
@@ -0,0 +1,37 @@
+/*
+ * buttons.css
+ * Copyright (C) 2020 Vintage Salt
+ *
+ * Distributed under terms of the MIT license.
+ */
+
+/* BIG ICON BUTTONS
+ * Used on the index for services */
+div.iconbuttoncontainer {
+ display: grid;
+ grid-gap: 1em;
+ grid-template-columns: 1fr 1fr 1fr;
+}
+a.iconbutton {
+ background: var(--background-bright);
+ border-radius: 8px;
+ box-shadow: 5px 5px var(--shadow);
+ display: block;
+ padding: 1em;
+ text-align: center;
+}
+a.iconbutton:hover {
+ background: var(--link-hover);
+ color: var(--background);
+}
+a.iconbutton i {
+ font-size: 400%
+}
+
+/* MOBILE */
+@media only screen and (max-width: 600px) {
+ div.iconbuttoncontainer {
+ grid-template-columns: 1fr;
+ }
+}
+
diff --git a/desu.local/frontend/src/styles/styles.css b/desu.local/frontend/src/styles/styles.css
new file mode 100644
index 0000000..1caa8ee
--- /dev/null
+++ b/desu.local/frontend/src/styles/styles.css
@@ -0,0 +1,181 @@
+/*
+ * styles.css
+ * Copyright (C) 2020 Vintage Salt
+ *
+ * Distributed under terms of the MIT license.
+ */
+
+/* GLOBALS */
+
+:root {
+ --background-bright: #fdfcfa;
+ --background: #ecebe9;
+ --line: rgba(0,0,0,0.1);
+ --greenlink: #327117;
+ --greenlink-hover: #47b625;
+ --link: #286a9d;
+ --link-hover: #3ea5f3;
+ --shadow: 8px -5px rgba(0,0,0,0.1);
+ --text: #414040;
+ --text-code: #a7674e;
+}
+html {
+ overflow-y: scroll;
+}
+body {
+ background: var(--background);
+ color: var(--text);
+ font-family: "Roboto", sans-serif;
+ margin: 0;
+}
+
+/* TYPES */
+/* a */
+a {
+ color: var(--link);
+ text-decoration: none;
+ transition: .04s ease-in;
+}
+a:hover {
+ color: var(--link-hover);
+}
+code {
+ color: var(--text-code);
+ display: inline-block;
+ font-size: 12pt;
+ padding: 2px 4px;
+}
+dl {
+ list-style-type: none;
+ margin: 0;
+}
+dl dt {
+ font-weight: bold;
+ margin: 1em 0 0 0;
+}
+dl dd {
+ margin: 0;
+}
+
+/* CUSTOM DIVS AND SPANS */
+a.quickbutton {
+ background: var(--background-bright);
+ border-radius: 8px;
+ box-shadow: 5px 5px var(--shadow);
+ display: block;
+ font-size: 150%;
+ margin: 0.5em 0;
+ padding: 1em;
+ text-align: center;
+}
+a.quickbutton:hover {
+ background: var(--link-hover);
+ color: var(--background);
+}
+div.break {
+ width: 4em;
+ margin: 2em auto;
+ border-bottom: 3px double var(--line);
+}
+div.quote {
+ border-left: 4px solid var(--line);
+ margin: 1em 4em;
+ padding: 1em;
+}
+i.badge {
+ font-size: 200%;
+ float: right;
+}
+img.bigimg {
+ border-radius: 8px;
+ box-shadow: 5px 5px var(--shadow);
+ display: block;
+ margin: 1em auto;
+}
+
+/* HIERARCHICAL CLASSES */
+/* HEADER */
+.header {
+ background: var(--background-bright);
+ box-shadow: 0 5px var(--shadow);
+ text-align: center;
+}
+.logocontainer {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ padding: 1em 0;
+}
+.logo {
+ border-radius: 50%;
+ height: 64px;
+ vertical-align: middle;
+ margin: 0 1em;
+ max-width: 64px;
+}
+.header h1 {
+ display: inline;
+ margin: 0;
+}
+.header p {
+ margin: 0;
+}
+.header nav ul {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+ text-align: center;
+}
+.header nav ul li {
+ display: inline-block;
+ padding: 0.8em;
+}
+.header nav ul li:hover {
+ background: var(--link-hover);
+ color: var(--background);
+ transition: .04s ease-in;
+}
+
+/* CONTENT */
+.content {
+ max-width: 48em;
+ margin: 2em auto;
+ padding: 1em;
+}
+.subcontainer {
+ background: var(--background-bright);
+ border-radius: 8px;
+ box-shadow: 5px 5px var(--shadow);
+ margin: 1em 0;
+ padding: 1em;
+}
+.subcontainer h2 {
+ margin: 0;
+}
+.toc {
+ background: var(--background-bright);
+ border-radius: 4px;
+ box-shadow: 5px 5px var(--shadow);
+ display: inline-block;
+ margin: 0 1em 1em 1em;
+ padding: 0 1em;
+ width: auto;
+}
+
+/* FOOTER */
+.footer {
+ font-size: 11px;
+ line-height: 1.3;
+ margin: 0 0 4em 0;
+ text-align: center;
+}
+.footer p {
+ margin: 0;
+}
+
+/* MOBILE */
+@media only screen and (max-width: 600px) {
+ .nomobile {
+ display: none;
+ }
+}
diff --git a/desu.local/frontend/vhost.conf b/desu.local/frontend/vhost.conf
index bf3efbf..ca2e79f 100644
--- a/desu.local/frontend/vhost.conf
+++ b/desu.local/frontend/vhost.conf
@@ -1,4 +1,7 @@
# vim:set ft=apache:
+
+ ServerName desu.local
+
ServerName jellyfin.desu.local
ProxyPreserveHost On