diff --git a/assets/elements.css b/assets/elements.css
index 32fe414..a32fb03 100644
--- a/assets/elements.css
+++ b/assets/elements.css
@@ -1,4 +1,4 @@
-h1, h2, h3, h4, h5, h6, p, br {
+h1, h2, h3, h4, h5, h6, p, li, br {
font-weight: normal;
margin: 0;
/* text-shadow: 1px 1px 0 var(--color-text-shadow); */
@@ -27,6 +27,11 @@ h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
p {
margin-inline-start: 1rem;
+ margin-block: 1.5rem;
+}
+
+p.nomargin {
+ margin-block: unset;
}
ul {
@@ -39,7 +44,51 @@ ul li {
margin-block: 1.5rem;
}
+div {
+ margin-block: 1.5em;
+ margin-inline-start: 1em;
+}
+
+img {
+ vertical-align: middle;
+}
+
a {
color: var(--color-accent);
text-decoration: underline solid currentColor 1px;
+}
+
+code {
+ display: inline-block;
+ font: inherit;
+ background-color: var(--color-code);
+ padding-inline: 0.5rem;
+ color: var(--color-code-text);
+ user-select: all;
+}
+
+button, input {
+ border: none;
+ background: transparent;
+ color: inherit;
+ font: inherit;
+ padding: 0;
+ outline: none;
+}
+
+input[type=text], input[type=url] {
+ padding-inline: 0.5rem;
+ border-inline: 0.5em solid var(--color-accent);
+}
+
+button, input[type=submit] {
+ padding-inline: 0.5rem;
+ background-color: var(--color-accent);
+ color: var(--color-bg);
+ cursor: pointer;
+}
+
+button:active, input[type=submit]:active {
+ background-color: transparent;
+ color: var(--color-accent);
}
\ No newline at end of file
diff --git a/assets/fonts/jbm/jbm.ttf b/assets/fonts/jbm/jbm.ttf
deleted file mode 100644
index b60e77f..0000000
Binary files a/assets/fonts/jbm/jbm.ttf and /dev/null differ
diff --git a/assets/fonts/m3x6/m3x6.ttf b/assets/fonts/m3x6/m3x6.ttf
deleted file mode 100644
index e0a9664..0000000
Binary files a/assets/fonts/m3x6/m3x6.ttf and /dev/null differ
diff --git a/assets/fonts/style.css b/assets/fonts/style.css
index 211c8c7..faf09d9 100644
--- a/assets/fonts/style.css
+++ b/assets/fonts/style.css
@@ -1,15 +1,6 @@
-@font-face {
- font-family: "m3x6";
- src: url("./m3x6/m3x6.ttf");
-}
-
-@font-face {
- font-family: "jbm";
- src: url("./jbm/jbm.ttf");
-}
-
@font-face {
font-family: "dos";
+ font-weight: regular;
src: url("./dos/dos.woff");
}
diff --git a/assets/style.css b/assets/style.css
index 59de4ad..5b418d1 100644
--- a/assets/style.css
+++ b/assets/style.css
@@ -4,8 +4,10 @@
:root {
--color-bg-scrim: #111;
--color-bg: #222;
+ --color-code: #000;
+ --color-code-text: #888;
--color-text: #ccc;
- --color-accent: #aca;
+ --color-accent: #bac;
font-size: 12px;
font-smooth: never;
@@ -21,6 +23,7 @@ html {
body {
margin: 0;
padding: 0.1px 1rem;
+ padding-block-end: 1.5rem;
min-height: 100%;
box-sizing: border-box;
width: 100%;
diff --git a/index.js b/index.js
index debd30b..f241d19 100644
--- a/index.js
+++ b/index.js
@@ -1,11 +1,13 @@
import express from "express";
-import { config } from "dotenv";
+import { config as dotenvConfig } from "dotenv";
import path from "path";
import SQLite from 'better-sqlite3';
import { Kysely, SqliteDialect } from 'kysely';
import { nanoid } from "nanoid";
import { JSDOM } from "jsdom";
+dotenvConfig();
+
const __dirname = import.meta.dirname;
const rawDB = new SQLite('abtmtr.db');
@@ -24,31 +26,19 @@ app.set('view engine', 'ejs');
app.use('/assets', express.static('assets'));
app.set('views', path.join(__dirname, "views", "pages"));
-app.locals = {
- visibility: [
- "Backend",
- "Personal",
- "Friends-only",
- "Login-only",
- "Public"
- ]
-}
-
-config();
-
-app.use(async (req, res, next) => {
- const buttonsJson = await fetch("https://cdn.abtmtr.link/site_content/buttons.json")
- .catch(() => res.status(500).send())
- .then((res) => res.json())
- .catch(() => res.status(500).send());
- const followingJson = await fetch("https://cdn.abtmtr.link/site_content/following.json")
- .catch(() => res.status(500).send())
- .then((res) => res.json())
- .catch(() => res.status(500).send());
- app.locals.buttons = buttonsJson;
- app.locals.following = followingJson;
- next();
-})
+// app.use(async (req, res, next) => {
+// const buttonsJson = await fetch("https://cdn.abtmtr.link/site_content/buttons.json")
+// .catch(() => res.status(500).send())
+// .then((res) => res.json())
+// .catch(() => res.status(500).send());
+// const followingJson = await fetch("https://cdn.abtmtr.link/site_content/following.json")
+// .catch(() => res.status(500).send())
+// .then((res) => res.json())
+// .catch(() => res.status(500).send());
+// app.locals.buttons = buttonsJson;
+// app.locals.following = followingJson;
+// next();
+// })
app.get('/', async (req, res) => {
const statusesJson = await fetch("https://cdn.abtmtr.link/site_content/v13/statuses.json")
@@ -60,38 +50,50 @@ app.get('/', async (req, res) => {
});
})
-app.get('/services', async (req, res) => {
+app.get('/servers', async (req, res) => {
const servicesJson = await fetch("https://cdn.abtmtr.link/site_content/v13/services.json")
.catch(() => res.status(500).send())
.then((res) => res.json());
-
- res.render('services/index', { services: servicesJson });
-});
-
-app.get('/computers', async (req, res) => {
const computersJson = await fetch("https://cdn.abtmtr.link/site_content/v13/computers.json")
.catch(() => res.status(500).send())
.then((res) => res.json());
- res.render('computers/index', { computers: computersJson });
+ res.render('servers', {
+ services: servicesJson,
+ computers: computersJson,
+ visibility: [
+ "for domain performance",
+ "for personal use",
+ "for use by friends of abtmtr.link's webmaster(s)",
+ "for restricted public use",
+ "for public use"
+ ]
+ });
});
-app.get('/links', async (req, res) => {
+app.get('/about', async (req, res) => {
const linksJson = await fetch("https://cdn.abtmtr.link/site_content/v13/links.json")
.catch(() => res.status(500).send())
.then((res) => res.json());
- res.render('links/index', {
+ res.render('about', {
links: linksJson
});
});
-app.get('/matkap', (req, res) => {
- res.render('matkap/index');
-});
+app.get('/sites', async (req, res) => {
+ const buttonsJson = await fetch("https://cdn.abtmtr.link/site_content/buttons.json")
+ .catch(() => res.status(500).send())
+ .then((res) => res.json())
+ .catch(() => res.status(500).send());
+ const followingJson = await fetch("https://cdn.abtmtr.link/site_content/following.json")
+ .catch(() => res.status(500).send())
+ .then((res) => res.json())
+ .catch(() => res.status(500).send());
-app.get('/about', (req, res) => {
- res.render('about/index');
+ res.render('sites', {
+ b: buttonsJson, f: followingJson
+ });
});
app.get('/blurbs', async (req, res) => {
@@ -101,7 +103,7 @@ app.get('/blurbs', async (req, res) => {
.where('verified', '=', 1)
.orderBy('time', "desc")
.execute();
- res.render('blurbs/index', { data });
+ res.render('blurbs', { data });
});
// brbrleibbghbelsbbsbuuebbuubsubss
@@ -114,6 +116,11 @@ async function cleanupBlurbles() {
.execute()
}
+app.get('/blurbs/testsend', async (req, res) => {
+
+ res.render('blurbsent', { id: "THISISATESTLOL" });
+});
+
app.get('/blurbs/send', async (req, res) => {
const body = req.query;
const errors = [];
@@ -153,7 +160,7 @@ app.get('/blurbs/send', async (req, res) => {
cleanupBlurbles();
- res.render('blurbs/sent', { id: postId });
+ res.render('blurbsent', { id: postId });
});
app.get('/blurbs/check', async (req, res) => {
diff --git a/views/components/footer.ejs b/views/components/footer.ejs
index 6355ef6..d1591ab 100644
--- a/views/components/footer.ejs
+++ b/views/components/footer.ejs
@@ -1,6 +1,6 @@
\ No newline at end of file
diff --git a/views/pages/about.ejs b/views/pages/about.ejs
new file mode 100644
index 0000000..3117225
--- /dev/null
+++ b/views/pages/about.ejs
@@ -0,0 +1,44 @@
+
+
+ <%- include("../components/page-head.ejs") %>
+
+
+ about
+ hey, i'm MeowcaTheoRange. i run abtmtr.link, for the most part.
+ MeowcaTheoRange's h-card
+
+
Theo Range
+ (MeowcaTheoRange )
+
(Mx.
+ Theo
+ Range )
+
+ Non-binary ,
+ they/them
+
+
+
+ website ,
+ email
+
+
+ born 2007-08-07
+
+
+ Minnesota ,
+ USA
+
+
+ MeowcaTheoRange's links
+ where else is MeowcaTheoRange?
+
+ <% links.forEach((link) => { %>
+
+ <%= link.subtitle %>
+
+ <% }) %>
+
+
+ <%- include("../components/footer.ejs") %>
+
+
\ No newline at end of file
diff --git a/views/pages/blurbs.ejs b/views/pages/blurbs.ejs
new file mode 100644
index 0000000..23c0513
--- /dev/null
+++ b/views/pages/blurbs.ejs
@@ -0,0 +1,42 @@
+
+
+ <%- include("../components/page-head.ejs") %>
+
+
+ blurbs
+ what are other sites saying about abtmtr.link?
+ submit a blurb
+
+ current blurbs
+
+
+ <%- include("../components/footer.ejs") %>
+
+
+
\ No newline at end of file
diff --git a/views/pages/blurbsent.ejs b/views/pages/blurbsent.ejs
new file mode 100644
index 0000000..71a8e6e
--- /dev/null
+++ b/views/pages/blurbsent.ejs
@@ -0,0 +1,34 @@
+
+
+ <%- include("../components/page-head.ejs") %>
+
+
+ blurb sent
+ congrations! you done it!
+ what now?
+ you have to add one of these code snippets to your site in order for the blurb to actually pop up.
+ invisible: <link rel="me" href="https://abtmtr.link/blurbs/#<%= id %>">
+ visible: <a rel="me" href="https://abtmtr.link/blurbs/#<%= id %>"></a>
+ 88x31: <a rel="me" href="https://abtmtr.link/blurbs/#<%= id %>" target="_blank"><img src="https://cdn.abtmtr.link/site_content/88x31/abtmtr_link.png"></a>
+ if you want to remove your blurb from abtmtr.link, remove the snippet from your site and then click "remove" on the blurb.
+ do not leave this site until you have added the snippet! you can bookmark this page if you need to:
+ https://abtmtr.link/blurbs/check/?id=<%= id %>
+ once you've done that, click this button below, and your blurb should appear if everything was done correctly. make sure your page has updated in your browser!
+
+ can't/don't want to add the snippet? contact me .
+
+ <%- include("../components/footer.ejs") %>
+
+
+
\ No newline at end of file
diff --git a/views/pages/index.ejs b/views/pages/index.ejs
index 3759fa8..7231bff 100644
--- a/views/pages/index.ejs
+++ b/views/pages/index.ejs
@@ -9,15 +9,19 @@
- what are other sites saying about abtmtr.link?
+ what are other sites saying about abtmtr.link?
- about the services on abtmtr.link and the machines that serve them.
+ about the services on abtmtr.link and the machines that serve them.
+
+
+
+ a collection of other sites in the form of 88x31s.
- who runs abtmtr.link?
+ who runs abtmtr.link?
diff --git a/views/pages/servers.ejs b/views/pages/servers.ejs
new file mode 100644
index 0000000..4c6d3a0
--- /dev/null
+++ b/views/pages/servers.ejs
@@ -0,0 +1,32 @@
+
+
+ <%- include("../components/page-head.ejs") %>
+
+
+ servers
+ about the services on abtmtr.link and the machines that serve them.
+ services
+ stuff that's hosted on abtmtr.link.
+
+ machines
+ stuff that hosts on abtmtr.link.
+
+
+ <%- include("../components/footer.ejs") %>
+
+
\ No newline at end of file
diff --git a/views/pages/sites.ejs b/views/pages/sites.ejs
new file mode 100644
index 0000000..616b90a
--- /dev/null
+++ b/views/pages/sites.ejs
@@ -0,0 +1,121 @@
+
+
+ <%- include("../components/page-head.ejs") %>
+
+
+ sites
+ a large collection of 88x31s.
+ friends (<%= b.length %>)
+
+ <% b.forEach((button) => { %>
+ <% if (button.img != null) { %>
+
+ <% } else { %>
+
<%= button.name %>
+ <% } %>
+ <% }) %>
+
+ following (<%= f.length %>)
+
+ <% f.forEach((button) => { %>
+ <% if (button.img != null) { %>
+
+ <% } else { %>
+
<%= button.name %>
+ <% } %>
+ <% }) %>
+
+
+ <%- include("../components/footer.ejs") %>
+
+
+
\ No newline at end of file