this repo has no description

blog index + rss feed

+3 -1
astro.config.mjs
··· 2 2 import { defineConfig } from 'astro/config'; 3 3 4 4 // https://astro.build/config 5 - export default defineConfig({}); 5 + export default defineConfig({ 6 + site: "https://skittr.lol" 7 + });
+7
bun.lock
··· 4 4 "": { 5 5 "name": "skittr-website", 6 6 "dependencies": { 7 + "@astrojs/rss": "^4.0.14", 7 8 "astro": "^5.16.0", 8 9 }, 9 10 }, ··· 16 17 "@astrojs/markdown-remark": ["@astrojs/markdown-remark@6.3.9", "", { "dependencies": { "@astrojs/internal-helpers": "0.7.5", "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.2.0", "js-yaml": "^4.1.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", "shiki": "^3.13.0", "smol-toml": "^1.4.2", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.2", "vfile": "^6.0.3" } }, "sha512-hX2cLC/KW74Io1zIbn92kI482j9J7LleBLGCVU9EP3BeH5MVrnFawOnqD0t/q6D1Z+ZNeQG2gNKMslCcO36wng=="], 17 18 18 19 "@astrojs/prism": ["@astrojs/prism@3.3.0", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ=="], 20 + 21 + "@astrojs/rss": ["@astrojs/rss@4.0.14", "", { "dependencies": { "fast-xml-parser": "^5.3.0", "piccolore": "^0.1.3" } }, "sha512-KCe1imDcADKOOuO/wtKOMDO/umsBD6DWF+94r5auna1jKl5fmlK9vzf+sjA3EyveXA/FoB3khtQ/u/tQgETmTw=="], 19 22 20 23 "@astrojs/telemetry": ["@astrojs/telemetry@3.3.0", "", { "dependencies": { "ci-info": "^4.2.0", "debug": "^4.4.0", "dlv": "^1.1.3", "dset": "^3.1.4", "is-docker": "^3.0.0", "is-wsl": "^3.1.0", "which-pm-runs": "^1.1.0" } }, "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ=="], 21 24 ··· 347 350 348 351 "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], 349 352 353 + "fast-xml-parser": ["fast-xml-parser@5.3.3", "", { "dependencies": { "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-2O3dkPAAC6JavuMm8+4+pgTk+5hoAs+CjZ+sWcQLkX9+/tHRuTkQh/Oaifr8qDmZ8iEHb771Ea6G8CdwkrgvYA=="], 354 + 350 355 "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], 351 356 352 357 "flattie": ["flattie@1.1.1", "", {}, "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ=="], ··· 616 621 "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], 617 622 618 623 "strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], 624 + 625 + "strnum": ["strnum@2.1.2", "", {}, "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ=="], 619 626 620 627 "svgo": ["svgo@4.0.0", "", { "dependencies": { "commander": "^11.1.0", "css-select": "^5.1.0", "css-tree": "^3.0.1", "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.1.1", "sax": "^1.4.1" }, "bin": "./bin/svgo.js" }, "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw=="], 621 628
+1
package.json
··· 9 9 "astro": "astro" 10 10 }, 11 11 "dependencies": { 12 + "@astrojs/rss": "^4.0.14", 12 13 "astro": "^5.16.0" 13 14 } 14 15 }
+1
src/layouts/Layout.astro
··· 16 16 <link rel="stylesheet" href="../styles.css" /> 17 17 <link rel="shortcut-icon" href="../favicon.ico" /> 18 18 <link rel="apple-touch-icon" href="../twitter_57.png" /> 19 + <link rel="alternate" type="application/rss+xml" title="Skittr Blog" href="../feed.rss" /> 19 20 <meta name="generator" content={Astro.generator} /> 20 21 </head> 21 22 <body>
+1
src/layouts/Post.astro
··· 16 16 <link rel="stylesheet" href="../../styles.css" /> 17 17 <link rel="shortcut-icon" href="../../favicon.ico" /> 18 18 <link rel="apple-touch-icon" href="../../twitter_57.png" /> 19 + <link rel="alternate" type="application/rss+xml" title="Skittr Blog" href="../../feed.rss" /> 19 20 <meta name="generator" content={Astro.generator} /> 20 21 </head> 21 22 <body>
+11
src/pages/feed.rss.js
··· 1 + import rss, { pagesGlobToRssItems } from "@astrojs/rss"; 2 + 3 + export async function GET(context) { 4 + return rss({ 5 + title: "Skittr Blog", 6 + description: "A nostalgic Bluesky client.", 7 + site: context.site, 8 + items: await pagesGlobToRssItems(import.meta.glob("./**/*.md")), 9 + customData: `<language>en-us</language>`, 10 + }); 11 + }
+5
src/pages/index.astro
··· 1 1 --- 2 2 import Layout from "../layouts/Layout.astro"; 3 + const allPosts = Object.values(import.meta.glob('./posts/*.md', { eager: true })); 3 4 --- 4 5 5 6 <Layout> ··· 10 11 <li><a href="installation">Installation</a></li> 11 12 <li><a href="appview">AppView</a></li> 12 13 <li><a href="skitpic">Skitpic</a></li> 14 + </ul> 15 + <h2>Blog</h2> 16 + <ul> 17 + {allPosts.map((post: any) => <li><time>{post.frontmatter.date.toString().slice(0,10)}</time> - <a href={post.url}>{post.frontmatter.title}</a></li>)} 13 18 </ul> 14 19 </Layout>
-1
src/pages/posts/hello-world.md
··· 4 4 date: 2026-01-03 5 5 author: "fizzylimesoda" 6 6 --- 7 - # Hello World! 8 7 We have decided to start a development log for Skittr because, well, we felt like it lol. 9 8 10 9 You can [follow us on Bluesky](https://bsky.app/profile/skittr.lol) for more updates!