diff --git a/Caddyfile b/Caddyfile
index 772f55e..74d2937 100644
--- a/Caddyfile
+++ b/Caddyfile
@@ -39,3 +39,6 @@ http://{$FILES_DOMAIN}:8550 {
reverse_proxy http://lufi:8081
}
+http://{$HOMR_DOMAIN} {
+ respond "KFDJSLKFJSLKFJSLKFDJLKDS" 200
+}
diff --git a/docker-compose.yml b/docker-compose.yml
index cdae25c..79ace23 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -7,10 +7,12 @@ services:
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro,Z
- caddy-data:/data
+ - ./public:/var/www/share
environment:
- PASTE_DOMAIN=${PASTE_DOMAIN}
- FILES_DOMAIN=${FILES_DOMAIN}
- SHORT_DOMAIN=${SHORT_DOMAIN}
+ - HOME_DOMAIN=${HOME_DOMAIN}
- INITIAL_API_KEY=${INITIAL_API_KEY}
networks:
- proxy
diff --git a/public/app.js b/public/app.js
new file mode 100644
index 0000000..40589b0
--- /dev/null
+++ b/public/app.js
@@ -0,0 +1,17 @@
+import { privateNoteUrl, fileDropUrl, homeDomain } from "./links.js";
+
+const yearEl = document.querySelector("#year"),
+ homeDomainEl = document.querySelector("#home-domain"),
+ noteLink = document.querySelector('[data-link="note"]'),
+ dropLink = document.querySelector('[data-link="drop"]');
+
+// set the current year
+if (yearEl) { yearEl.textContent = String(new Date().getFullYear()); }
+
+// set home domain text
+if (homeDomainEl) { homeDomainEl.textContent = homeDomain; }
+
+// wire up links from config
+if (noteLink) { noteLink.setAttribute("href", privateNoteUrl); }
+if (dropLink) { dropLink.setAttribute("href", fileDropUrl); }
+
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..3753773
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,51 @@
+
+
+
+
+
+ ION606's sharing hub
+
+
+
+
+
+
+
+
+
+
+
+
+ quick links
+ pick a destination:
+
+ psst: bookmark this page at share.ion606.com for next time.
+
+
+
+ what are these?
+
+ - privatenote is an end-to-end encrypted pastebin for sharing text or code snippets securely.
+ - lufi lets you upload and share files; encryption happens before upload for extra privacy.
+
+
+
+
+
+
+
+
+
+
diff --git a/public/links.js b/public/links.js
new file mode 100644
index 0000000..4591947
--- /dev/null
+++ b/public/links.js
@@ -0,0 +1,4 @@
+export const privateNoteUrl = "https://bin.ion606.com",
+ fileDropUrl = "https://tfiles.ion606.com",
+ homeDomain = "share.ion606.com";
+
diff --git a/public/styles.css b/public/styles.css
new file mode 100644
index 0000000..4e68081
--- /dev/null
+++ b/public/styles.css
@@ -0,0 +1,91 @@
+:root {
+ --bg: #0b0f14;
+ --panel: #121821;
+ --text: #e6edf3;
+ --muted: #9fb0c0;
+ --accent: #7cc7ff;
+ --accent-2: #8ae3cf;
+ --btn-bg: #1a2330;
+ --btn-border: #2a374a;
+}
+
+* { box-sizing: border-box; }
+
+html, body {
+ margin: 0;
+ padding: 0;
+ background: radial-gradient(1000px 600px at 10% -10%, rgba(124,199,255,.12), transparent 60%),
+ radial-gradient(800px 500px at 110% 10%, rgba(138,227,207,.12), transparent 60%), var(--bg);
+ color: var(--text);
+ font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";
+ line-height: 1.6;
+}
+
+.container {
+ max-width: 880px;
+ margin: 0 auto;
+ padding: 1.25rem;
+}
+
+.site-header {
+ padding: 2.5rem 0 1rem;
+ text-align: center;
+}
+
+.brand {
+ margin: 0 0 .5rem;
+ font-size: clamp(1.6rem, 3vw, 2rem);
+ letter-spacing: .2px;
+}
+
+.tagline {
+ margin: 0;
+ color: var(--muted);
+}
+
+.card {
+ background: linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.02));
+ border: 1px solid rgba(255,255,255,.08);
+ border-radius: 16px;
+ padding: 1.25rem;
+ margin: 1rem 0;
+ box-shadow: 0 10px 30px rgba(0,0,0,.25);
+}
+
+.card.info { color: var(--muted); }
+
+.actions {
+ display: flex;
+ flex-wrap: wrap;
+ gap: .75rem;
+ margin: 1rem 0 0;
+}
+
+.btn {
+ display: inline-block;
+ padding: .9rem 1.1rem;
+ border-radius: 12px;
+ background: var(--btn-bg);
+ border: 1px solid var(--btn-border);
+ color: var(--text);
+ text-decoration: none;
+ font-weight: 600;
+ transition: transform .06s ease, background .2s ease, border-color .2s ease;
+}
+
+.btn:hover { transform: translateY(-1px); }
+.btn:active { transform: translateY(0); }
+
+.btn.secondary { background: #101723; }
+
+.hint { color: var(--muted); font-size: .95rem; }
+
+.bullets { padding-left: 1.1rem; }
+
+.site-footer {
+ text-align: center;
+ padding: 2rem 0 3rem;
+ color: var(--muted);
+ font-size: .95rem;
+}
+
diff --git a/setup.sh b/setup.sh
index bd41ca5..0d6d30a 100644
--- a/setup.sh
+++ b/setup.sh
@@ -4,6 +4,7 @@ ADMIN_EMAIL=ion606@protonmail.com
PASTE_DOMAIN=bin.ion606.com
FILES_DOMAIN=tfiles.ion606.com
SHORT_DOMAIN=s.ion606.com
+HOME_DOMAIN=share.ion606.com
INITIAL_API_KEY=$(openssl rand -hex 32)
LUFI_SECRET=$(openssl rand -hex 32)