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 +

+

+ Minnesota, + USA +

+
+

MeowcaTheoRange's links

+

where else is MeowcaTheoRange?

+ +
+ <%- 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

+
+

+ + +

+

+ + +

+

+ +

+

by clicking this button and successfully submitting a blurb, you agree that your input may be displayed on this site and stored on abtmtr.link servers.

+

you'll also need to verify your blurb by leaving a X/HTML snippet on your site. further instructions will be given to do this after you submit your blurb. thanks!

+
+

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 @@ 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) { %> + <%= button.alt %> + <% } else { %> + <%= button.name %> + <% } %> + <% }) %> +
+

following (<%= f.length %>)

+
+ <% f.forEach((button) => { %> + <% if (button.img != null) { %> + <%= button.alt %> + <% } else { %> + <%= button.name %> + <% } %> + <% }) %> +
+
+ <%- include("../components/footer.ejs") %> + + + \ No newline at end of file