From d4e8eb7dd8713a7f5d23f4df32595210cfef02cb Mon Sep 17 00:00:00 2001 From: Bad Manners Date: Tue, 5 Nov 2024 19:25:43 -0300 Subject: [PATCH] Improved a11y and SEO --- astro.config.mjs | 353 ++++++++++++++++--------------- src/components/NavHeader.astro | 4 +- src/layouts/BaseLayout.astro | 2 +- src/pages/404.astro | 5 +- src/pages/about.astro | 13 +- src/pages/index.astro | 13 +- src/pages/robots.txt.ts | 8 +- src/pages/sam_brendan.astro | 35 +-- src/pages/terms_of_service.astro | 12 +- src/pages/work.astro | 7 +- 10 files changed, 237 insertions(+), 215 deletions(-) diff --git a/astro.config.mjs b/astro.config.mjs index 4618b4b..4a4613a 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,185 +1,188 @@ import { defineConfig, envField } from "astro/config"; import tailwindIntegration from "@astrojs/tailwind"; +import alpinejsIntegration from "@astrojs/alpinejs"; import htaccessIntegration from "astro-htaccess"; import { AI_BOTS } from "./src/data/ai_bots"; -import alpinejs from "@astrojs/alpinejs"; - // https://astro.build/config export default defineConfig({ site: "https://badmanners.xyz", - integrations: [tailwindIntegration({ - applyBaseStyles: false, - }), htaccessIntegration({ - generateHtaccessFile: import.meta.env.APACHE_CONFIG === "true", - customRules: [ - // Block AI bots - "", - " RewriteEngine on", - " RewriteBase /", - ` RewriteCond %{HTTP_USER_AGENT} ${AI_BOTS.map((bot) => `^${bot}$`).join("|")} [NC]`, - " RewriteRule ^ – [F]", - "", - ], - redirects: [ - { - match: /^\/@\/(aryion|ekas?(portal)?)\b/, - url: "https://aryion.com/g4/user/BadManners", - }, - { - match: /^\/@\/blog\b/, - url: "https://gallery.badmanners.xyz/blog", - }, - { - match: /^\/@\/(blue[_-]?sky|bsky)\b/, - url: "https://bsky.app/profile/badmanners.xyz", - }, - { - match: /^\/@\/(buymeacoffee|buy_me_a_coffee|buy-me-a-coffee|bmac)\b/, - url: "https://www.buymeacoffee.com/BadMannersXYZ", - }, - { - match: /^\/@\/carrd\b/, - url: "https://badmanners.carrd.co", - }, - { - match: /^\/@\/code[_-]?berg\b/, - url: "https://codeberg.org/BadManners", - }, - { - match: /^\/@\/discord\b/, - url: "/#discord", - }, - { - match: /^\/@\/e[_-]?mail\b/, - url: "/#e-mail", - }, - { - match: /^\/@\/(fur[_-]?affinity|fa)\b/, - url: "https://www.furaffinity.net/user/badmanners", - }, - { - match: /^\/@\/(gallery|stor(y|ies)|games?)\b/, - url: "https://gallery.badmanners.xyz", - }, - { - match: /^\/@\/(git[_-]?hub|gh)\b/, - url: "https://github.com/BadMannersXYZ", - }, - { - match: /^\/@\/git[_-]?lab\b/, - url: "https://gitlab.com/Bad_Manners", - }, - { - match: /^\/@\/(git[_-]?gud|sapp?hire)\b/, - url: "https://gitgud.io/BadMannersXYZ", - }, - { - match: /^\/@\/(google|g[_-]?mail)\b/, - url: "/#gmail", - }, - { - match: /^\/@\/(gpg|pgp)\b/, - url: "/gpg.pub", - }, - { - match: /^\/@\/gum[_-]?road\b/, - url: "https://badmanners.gumroad.com", - }, - { - match: /^\/@\/(ink[_-]?bunny|ib)\b/, - url: "https://inkbunny.net/BadManners", - }, - { - match: /^\/@\/itaku\b/, - url: "https://itaku.ee/profile/badmanners", - }, - { - match: /^\/@\/itch\b/, - url: "https://bad-manners.itch.io", - }, - { - match: /^\/@\/keybase\b/, - url: "https://keybase.io/badmanners", - }, - { - match: /^\/@\/keyoxide\b/, - url: "https://keyoxide.org/aspe:keyoxide.org:UWYBVFCBFXTVUF2U6FS6AYJHLU", - }, - { - match: /^\/@\/ko[._-]?fi\b/, - url: "https://ko-fi.com/badmanners", - }, - { - match: /^\/@\/(mastodon|meow[._-]?social|gulp[._-]?cafe)\b/, - url: "https://meow.social/@BadManners", - }, - { - match: /^\/@\/neo[_-]?cities\b/, - url: "https://badmanners.neocities.org", - }, - { - match: /^\/@\/picarto\b/, - url: "https://www.picarto.tv/BadManners", - }, - { - match: /^\/@\/pillow[_-]?fort\b/, - url: "https://www.pillowfort.social/BadManners", - }, - { - match: /^\/@\/pronouns?\b/, - url: "https://pronouns.cc/@BadManners", - }, - { - match: /^\/@\/redd\.?it\b/, - url: "https://www.reddit.com/user/BadManners_", - }, - { - match: /^\/@\/resetera\b/, - url: "https://www.resetera.com/members/bad-manners.181209/", - }, - { - match: /^\/@\/signal\b/, - url: "https://signal.me/#eu/ytt_rk0fFmAB2JAW-x2PbUiJyc_H3kYmfL_Pq4QNh5QIDsiFtjdFHaqFRs1D36tB", - }, - { - match: /^\/@\/(so[_-]?furry|sf)\b/, - url: "https://bad-manners.sofurry.com", - }, - { - match: /^\/@\/ssh\b/, - url: "/ssh.pub", - }, - { - match: /^\/@\/steam(community|powered)?\b/, - url: "https://steamcommunity.com/id/badmanners_", - }, - { - match: /^\/@\/subscribe[_-]?star\b/, - url: "https://subscribestar.adult/bad-manners", - }, - { - match: /^\/@\/(telegram|t\.me)\b/, - url: "https://t.me/bad_manners", - }, - { - match: /^\/@\/tumblr\b/, - url: "https://www.tumblr.com/badmannersxyz", - }, - { - match: /^\/@\/twitch\b/, - url: "https://www.twitch.tv/bad__manners", - }, - { - match: /^\/@\/weasyl\b/, - url: "https://www.weasyl.com/~badmanners", - }, - { - match: /^\/@\/(you[_-]?tube|youtu\.be|yt)\b/, - url: "https://www.youtube.com/@BadMannersXYZ", - }, - ], - }), alpinejs()], + integrations: [ + tailwindIntegration({ + applyBaseStyles: false, + }), + alpinejsIntegration(), + htaccessIntegration({ + generateHtaccessFile: import.meta.env.APACHE_CONFIG === "true", + customRules: [ + // Block AI bots + "", + " RewriteEngine on", + " RewriteBase /", + ` RewriteCond %{HTTP_USER_AGENT} ${AI_BOTS.map((bot) => `^${bot}$`).join("|")} [NC]`, + " RewriteRule ^ – [F]", + "", + ], + redirects: [ + { + match: /^\/@\/(aryion|ekas?(portal)?)\b/, + url: "https://aryion.com/g4/user/BadManners", + }, + { + match: /^\/@\/blog\b/, + url: "https://gallery.badmanners.xyz/blog", + }, + { + match: /^\/@\/(blue[_-]?sky|bsky)\b/, + url: "https://bsky.app/profile/badmanners.xyz", + }, + { + match: /^\/@\/(buymeacoffee|buy_me_a_coffee|buy-me-a-coffee|bmac)\b/, + url: "https://www.buymeacoffee.com/BadMannersXYZ", + }, + { + match: /^\/@\/carrd\b/, + url: "https://badmanners.carrd.co", + }, + { + match: /^\/@\/code[_-]?berg\b/, + url: "https://codeberg.org/BadManners", + }, + { + match: /^\/@\/discord\b/, + url: "/#discord", + }, + { + match: /^\/@\/e[_-]?mail\b/, + url: "/#e-mail", + }, + { + match: /^\/@\/(fur[_-]?affinity|fa)\b/, + url: "https://www.furaffinity.net/user/badmanners", + }, + { + match: /^\/@\/(gallery|stor(y|ies)|games?)\b/, + url: "https://gallery.badmanners.xyz", + }, + { + match: /^\/@\/(git[_-]?hub|gh)\b/, + url: "https://github.com/BadMannersXYZ", + }, + { + match: /^\/@\/git[_-]?lab\b/, + url: "https://gitlab.com/Bad_Manners", + }, + { + match: /^\/@\/(git[_-]?gud|sapp?hire)\b/, + url: "https://gitgud.io/BadMannersXYZ", + }, + { + match: /^\/@\/(google|g[_-]?mail)\b/, + url: "/#google", + }, + { + match: /^\/@\/(gpg|pgp)\b/, + url: "/gpg.pub", + }, + { + match: /^\/@\/gum[_-]?road\b/, + url: "https://badmanners.gumroad.com", + }, + { + match: /^\/@\/(ink[_-]?bunny|ib)\b/, + url: "https://inkbunny.net/BadManners", + }, + { + match: /^\/@\/itaku\b/, + url: "https://itaku.ee/profile/badmanners", + }, + { + match: /^\/@\/itch\b/, + url: "https://bad-manners.itch.io", + }, + { + match: /^\/@\/keybase\b/, + url: "https://keybase.io/badmanners", + }, + { + match: /^\/@\/keyoxide\b/, + url: "https://keyoxide.org/aspe:keyoxide.org:UWYBVFCBFXTVUF2U6FS6AYJHLU", + }, + { + match: /^\/@\/ko[._-]?fi\b/, + url: "https://ko-fi.com/badmanners", + }, + { + match: /^\/@\/(mastodon|meow[._-]?social|gulp[._-]?cafe)\b/, + url: "https://meow.social/@BadManners", + }, + { + match: /^\/@\/neo[_-]?cities\b/, + url: "https://badmanners.neocities.org", + }, + { + match: /^\/@\/picarto\b/, + url: "https://www.picarto.tv/BadManners", + }, + { + match: /^\/@\/pillow[_-]?fort\b/, + url: "https://www.pillowfort.social/BadManners", + }, + { + match: /^\/@\/pronouns?\b/, + url: "https://pronouns.cc/@BadManners", + }, + { + match: /^\/@\/redd\.?it\b/, + url: "https://www.reddit.com/user/BadManners_", + }, + { + match: /^\/@\/resetera\b/, + url: "https://www.resetera.com/members/bad-manners.181209/", + }, + { + match: /^\/@\/signal\b/, + url: "https://signal.me/#eu/ytt_rk0fFmAB2JAW-x2PbUiJyc_H3kYmfL_Pq4QNh5QIDsiFtjdFHaqFRs1D36tB", + }, + { + match: /^\/@\/(so[_-]?furry|sf)\b/, + url: "https://bad-manners.sofurry.com", + }, + { + match: /^\/@\/ssh\b/, + url: "/ssh.pub", + }, + { + match: /^\/@\/steam(community|powered)?\b/, + url: "https://steamcommunity.com/id/badmanners_", + }, + { + match: /^\/@\/subscribe[_-]?star\b/, + url: "https://subscribestar.adult/bad-manners", + }, + { + match: /^\/@\/(telegram|t\.me)\b/, + url: "https://t.me/bad_manners", + }, + { + match: /^\/@\/tumblr\b/, + url: "https://www.tumblr.com/badmannersxyz", + }, + { + match: /^\/@\/twitch\b/, + url: "https://www.twitch.tv/bad__manners", + }, + { + match: /^\/@\/weasyl\b/, + url: "https://www.weasyl.com/~badmanners", + }, + { + match: /^\/@\/(you[_-]?tube|youtu\.be|yt)\b/, + url: "https://www.youtube.com/@BadMannersXYZ", + }, + ], + }), + ], build: { assets: "assets", }, @@ -195,4 +198,4 @@ export default defineConfig({ }, }, }, -}); \ No newline at end of file +}); diff --git a/src/components/NavHeader.astro b/src/components/NavHeader.astro index 73dd137..29be179 100644 --- a/src/components/NavHeader.astro +++ b/src/components/NavHeader.astro @@ -21,8 +21,8 @@ const isCurrentRoute = ({ path }: NavRoute) => class:list={[ "rounded border px-6 py-2 uppercase transition-colors hover:underline focus:underline motion-reduce:transition-none sm:px-8 sm:py-3", isCurrentRoute(route) - ? "border-bm-500 text-bm-500 dark:border-bm-400 dark:text-bm-400" - : "border-stone-600 text-stone-600 hover:border-bm-500 hover:text-bm-500 focus:border-bm-500 focus:text-bm-500 dark:border-zinc-300 dark:text-zinc-300 dark:hover:border-bm-400 dark:hover:text-bm-400 dark:focus:border-bm-400 dark:focus:text-bm-400", + ? "border-bm-600 text-green-700 dark:border-bm-400 dark:text-bm-400" + : "border-stone-600 text-stone-600 hover:border-green-700 hover:text-green-700 focus:border-green-700 focus:text-green-700 dark:border-zinc-300 dark:text-zinc-300 dark:hover:border-bm-400 dark:hover:text-bm-400 dark:focus:border-bm-400 dark:focus:text-bm-400", ]} aria-current={isCurrentRoute(route) ? "page" : undefined} > diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro index e3054db..2550491 100644 --- a/src/layouts/BaseLayout.astro +++ b/src/layouts/BaseLayout.astro @@ -55,7 +55,7 @@ const title = pageTitle ? `${pageTitle} | Bad Manners` : "Bad Manners";