diff --git a/app/static/browserconfig.xml b/app/static/browserconfig.xml
new file mode 100644
index 0000000..adc1b7a
--- /dev/null
+++ b/app/static/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ #1c1c1c
+
+
+
diff --git a/app/static/icons/android-chrome-192x192.png b/app/static/icons/android-chrome-192x192.png
new file mode 100644
index 0000000..3bfc79e
Binary files /dev/null and b/app/static/icons/android-chrome-192x192.png differ
diff --git a/app/static/icons/android-chrome-256x256.png b/app/static/icons/android-chrome-256x256.png
new file mode 100644
index 0000000..b7edfff
Binary files /dev/null and b/app/static/icons/android-chrome-256x256.png differ
diff --git a/app/static/icons/apple-touch-icon.png b/app/static/icons/apple-touch-icon.png
new file mode 100644
index 0000000..6fe2039
Binary files /dev/null and b/app/static/icons/apple-touch-icon.png differ
diff --git a/app/static/icons/favicon-16x16.png b/app/static/icons/favicon-16x16.png
new file mode 100644
index 0000000..93c2159
Binary files /dev/null and b/app/static/icons/favicon-16x16.png differ
diff --git a/app/static/icons/favicon-32x32.png b/app/static/icons/favicon-32x32.png
new file mode 100644
index 0000000..29c62be
Binary files /dev/null and b/app/static/icons/favicon-32x32.png differ
diff --git a/app/static/icons/favicon.ico b/app/static/icons/favicon.ico
new file mode 100644
index 0000000..12646e5
Binary files /dev/null and b/app/static/icons/favicon.ico differ
diff --git a/app/static/icons/mstile-150x150.png b/app/static/icons/mstile-150x150.png
new file mode 100644
index 0000000..78c6e1e
Binary files /dev/null and b/app/static/icons/mstile-150x150.png differ
diff --git a/app/static/icons/safari-pinned-tab.svg b/app/static/icons/safari-pinned-tab.svg
new file mode 100644
index 0000000..ccb92a2
--- /dev/null
+++ b/app/static/icons/safari-pinned-tab.svg
@@ -0,0 +1,32 @@
+
+
+
diff --git a/app/static/js/pwa.js b/app/static/js/pwa.js
new file mode 100644
index 0000000..54ad55d
--- /dev/null
+++ b/app/static/js/pwa.js
@@ -0,0 +1,23 @@
+/**
+ * PWA (progressive web app) support
+ */
+function ready() {
+ // Make sure the browser supports service workers
+ if ("serviceWorker" in navigator) {
+ // Register a new service worker.
+ navigator.serviceWorker
+ .register("/static/js/sw.js")
+ .then((registration) => {
+ console.log(
+ "[PWA] Service worker registered with scope: ",
+ registration.scope
+ );
+ })
+ .catch((error) => {
+ console.error("[PWA] Service worker registration failed: ", error);
+ });
+ }
+}
+
+// Load on document load
+document.addEventListener("DOMContentLoaded", ready);
diff --git a/app/static/js/sw.js b/app/static/js/sw.js
new file mode 100644
index 0000000..9a4fdab
--- /dev/null
+++ b/app/static/js/sw.js
@@ -0,0 +1,13 @@
+// Service worker for PWA support
+
+// Install Hook
+// Triggered when the PWA is installed by the browser.
+self.addEventListener("install", () => {
+ console.log("[Service Worker] Installed");
+});
+
+// Activate Hook
+// Triggered when the PWA is activated by the browser.
+self.addEventListener("activate", () => {
+ console.log("[Service Worker] Activated");
+});
diff --git a/app/static/manifest.json b/app/static/manifest.json
new file mode 100644
index 0000000..3343e3c
--- /dev/null
+++ b/app/static/manifest.json
@@ -0,0 +1,22 @@
+{
+ "name": "Haldis",
+ "short_name": "Haldis",
+ "description": "Zeus WPI's drink ordering system",
+ "theme_color": "#ff6600",
+ "background_color": "#1c1c1c",
+ "display": "standalone",
+ "scope": "/",
+ "start_url": "/",
+ "icons": [
+ {
+ "src": "/static/icons/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/static/icons/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ]
+}
diff --git a/app/templates/layout.html b/app/templates/layout.html
index 392963d..72b85b7 100644
--- a/app/templates/layout.html
+++ b/app/templates/layout.html
@@ -9,13 +9,15 @@
('general_bp.about', 'About'),
('stats_blueprint.stats', 'Stats'),
] -%}
+
{% if current_user.is_admin() -%}
{% set navbar = navbar + [('admin.index', 'Admin')] -%}
{% endif -%}
+
{% set active_page = active_page|default('index') -%}
{% block title %}
-Haldis - {{ active_page|capitalize }}
+ Haldis - {{ active_page|capitalize }}
{% if title %}
- {{ title }}
{% endif %}
@@ -33,6 +35,26 @@ Haldis - {{ active_page|capitalize }}
+
+{% endblock %}
+
+{% block head %}
+ {{ super() }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{% endblock %}
{% block navbar %}