From fd8c2073f01cb9f008a1d315ed2666c45cc39c57 Mon Sep 17 00:00:00 2001
From: Gordon Pedersen
Date: Wed, 11 Oct 2023 16:25:14 +1100
Subject: [PATCH] pivot away from 11ty and instead store data in sqlite
The idea is going to be to build an 11ty frontend that pulls from this back-end
(or perhaps just the database, we'll see)
Also considering a mastodon-compatible api wrapper, or at the very least creating a separate wrapper and completely dropping the existing admin routes.
... ooh, I could do a micropub wrapper, too...
tl;dr: microservices. This is just the activitypub server now.
---
.eleventy.js | 95 ----
.gitignore | 1 +
_content/_data/_inbox/.gitkeep | 0
_content/_data/_outbox/.gitkeep | 0
_content/_data/disliked.json | 1 -
_content/_data/followers.json | 1 -
_content/_data/following.json | 1 -
_content/_data/layout.js | 1 -
_content/_data/liked.json | 1 -
_content/_data/shared.json | 1 -
_content/_includes/layout-default.njk | 13 -
_content/_includes/layout-feed.njk | 15 -
_content/_includes/layout-main.njk | 38 --
_content/_includes/macro-author.njk | 10 -
_content/_includes/macro-card-head.njk | 9 -
_content/_includes/macro-entry.njk | 14 -
_content/_includes/macro-summary.njk | 83 ----
_content/_includes/partial-pagination.njk | 15 -
_content/_includes/summary-article.njk | 6 -
_content/_includes/summary-reply.njk | 0
_content/atom.njk | 36 --
_content/index.html | 76 ---
_content/json.njk | 36 --
_content/posts/.gitkeep | 0
_content/posts/index.njk | 18 -
_content/rss.njk | 36 --
actor.ts | 4 +-
bun.lockb | Bin 80379 -> 2734 bytes
css/styles.css | 211 --------
img/Fediverse_logo_proposal.svg | 170 -------
img/Obsidian.svg | 6 -
img/avatar-tiny.png | Bin 1306 -> 0 bytes
img/avatar-tt-trans.svg | 37 --
img/avatar-tt.svg | 38 --
img/avatar-tt@800.png | Bin 14695 -> 0 bytes
img/banner-1500x500.jpg | Bin 77426 -> 0 bytes
js/button-input.js | 61 ---
js/follow.js | 35 --
js/relative-time.js | 6 -
package.json | 6 +-
src/activitypub.ts | 43 +-
src/admin.ts | 87 ++--
src/db.ts | 575 +++++++++++++++-------
src/env.ts | 3 +-
src/inbox.ts | 27 +-
src/index.ts | 44 +-
src/outbox.ts | 91 ++--
47 files changed, 536 insertions(+), 1415 deletions(-)
delete mode 100644 .eleventy.js
delete mode 100644 _content/_data/_inbox/.gitkeep
delete mode 100644 _content/_data/_outbox/.gitkeep
delete mode 100644 _content/_data/disliked.json
delete mode 100644 _content/_data/followers.json
delete mode 100644 _content/_data/following.json
delete mode 100644 _content/_data/layout.js
delete mode 100644 _content/_data/liked.json
delete mode 100644 _content/_data/shared.json
delete mode 100644 _content/_includes/layout-default.njk
delete mode 100644 _content/_includes/layout-feed.njk
delete mode 100644 _content/_includes/layout-main.njk
delete mode 100644 _content/_includes/macro-author.njk
delete mode 100644 _content/_includes/macro-card-head.njk
delete mode 100644 _content/_includes/macro-entry.njk
delete mode 100644 _content/_includes/macro-summary.njk
delete mode 100644 _content/_includes/partial-pagination.njk
delete mode 100644 _content/_includes/summary-article.njk
delete mode 100644 _content/_includes/summary-reply.njk
delete mode 100644 _content/atom.njk
delete mode 100644 _content/index.html
delete mode 100644 _content/json.njk
delete mode 100644 _content/posts/.gitkeep
delete mode 100644 _content/posts/index.njk
delete mode 100644 _content/rss.njk
delete mode 100644 css/styles.css
delete mode 100644 img/Fediverse_logo_proposal.svg
delete mode 100644 img/Obsidian.svg
delete mode 100644 img/avatar-tiny.png
delete mode 100644 img/avatar-tt-trans.svg
delete mode 100644 img/avatar-tt.svg
delete mode 100644 img/avatar-tt@800.png
delete mode 100644 img/banner-1500x500.jpg
delete mode 100644 js/button-input.js
delete mode 100644 js/follow.js
delete mode 100644 js/relative-time.js
diff --git a/.eleventy.js b/.eleventy.js
deleted file mode 100644
index 35e3615..0000000
--- a/.eleventy.js
+++ /dev/null
@@ -1,95 +0,0 @@
-const ACTOR = require("./actor").default
-
-module.exports = function(eleventyConfig) {
- // I'm .gitignoring my content for now, so 11ty should not ignore that
- eleventyConfig.setUseGitIgnore(false)
-
- // Filters are in a separate function to try and keep this config less cluttered
- addFilters(eleventyConfig)
- // same with shortcodes
- addShortcodes(eleventyConfig)
- // and collections
- addCollections(eleventyConfig)
-
- // add the actor data, accessible globally
- eleventyConfig.addGlobalData("ACTOR", ACTOR);
-
- // TODO: assets?
- // files to passthrough copy
- eleventyConfig.addPassthroughCopy({"img":"assets/img"})
- eleventyConfig.addPassthroughCopy({"js":"assets/js"})
- eleventyConfig.addPassthroughCopy("css")
- eleventyConfig.addPassthroughCopy("CNAME")
-
- // plugins
- eleventyConfig.addPlugin(require("@11ty/eleventy-plugin-rss"))
- const { EleventyHtmlBasePlugin } = require("@11ty/eleventy")
- eleventyConfig.addPlugin(EleventyHtmlBasePlugin)
-
- // Return your Object options:
- return {
- dir: {
- input: "_content",
- output: "_site"
- },
- htmlTemplateEngine: "njk",
- templateFormats: ["md","html","njk"]
- }
-}
-
-function addCollections(eleventyConfig) {
- eleventyConfig.addCollection("feed", function(collectionApi) {
- return collectionApi.getAllSorted().reverse().filter(item => {
- if(!item.data.published) return false
- return item.filePathStem.startsWith('/posts/')
- }).map(item => {
- item.data.author = ACTOR
- return item
- }).sort((a, b) => new Date(b.published).getTime() - new Date(a.published).getTime())
- })
-}
-
-function addShortcodes(eleventyConfig) {
- eleventyConfig.addNunjucksShortcode("getVar", function(varString){ return this.ctx[varString] })
- eleventyConfig.addShortcode('renderlayoutblock', function(name){ return (this.page.layoutblock || {})[name] || '' })
- eleventyConfig.addPairedShortcode('layoutblock', function(content, name) {
- if (!this.page.layoutblock) this.page.layoutblock = {}
- this.page.layoutblock[name] = content
- return ''
- })
-}
-
-function addFilters(eleventyConfig) {
- eleventyConfig.addFilter("formatDate", formatDateFilter)
- eleventyConfig.addFilter("dateISOString", dateISOStringFilter)
- eleventyConfig.addFilter("dateObj", (value) => new Date(value))
- eleventyConfig.addFilter("log", (value) => { console.log(`[11ty] 📄LOG: `, value); return value })
- eleventyConfig.addFilter("concat", (value, other) => value + '' + other)
- eleventyConfig.addNunjucksAsyncFilter("await", (promise) => promise.then(res => callback(null, res)).catch(err => callback(err)))
-}
-
-// default date formatting
-function formatDateFilter(value) {
- try{
- const date = new Date(value)
- if(date) return date.toISOString().replace('T', ' ').slice(0, -5)
- else throw 'Unrecognized data format'
- }
- catch(e) {
- console.error(`Could not convert "${value}"`, e)
- return value;
- }
-}
-
-// dates as iso string
-function dateISOStringFilter(value) {
- try{
- const date = new Date(value)
- if(date) return date.toISOString()
- else throw 'Unrecognized data format'
- }
- catch(e) {
- console.error(`Could not convert "${value}"`, e)
- return value;
- }
-}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 2d8c964..38aec2f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -173,3 +173,4 @@ _content/_data/_inbox
_content/_data/_outbox
_content/posts
_site
+db.sqlite*
diff --git a/_content/_data/_inbox/.gitkeep b/_content/_data/_inbox/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/_content/_data/_outbox/.gitkeep b/_content/_data/_outbox/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/_content/_data/disliked.json b/_content/_data/disliked.json
deleted file mode 100644
index 0637a08..0000000
--- a/_content/_data/disliked.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
\ No newline at end of file
diff --git a/_content/_data/followers.json b/_content/_data/followers.json
deleted file mode 100644
index 0637a08..0000000
--- a/_content/_data/followers.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
\ No newline at end of file
diff --git a/_content/_data/following.json b/_content/_data/following.json
deleted file mode 100644
index 0637a08..0000000
--- a/_content/_data/following.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
\ No newline at end of file
diff --git a/_content/_data/layout.js b/_content/_data/layout.js
deleted file mode 100644
index c98ebc5..0000000
--- a/_content/_data/layout.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = "layout-default.njk"
\ No newline at end of file
diff --git a/_content/_data/liked.json b/_content/_data/liked.json
deleted file mode 100644
index 0637a08..0000000
--- a/_content/_data/liked.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
\ No newline at end of file
diff --git a/_content/_data/shared.json b/_content/_data/shared.json
deleted file mode 100644
index 0637a08..0000000
--- a/_content/_data/shared.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
\ No newline at end of file
diff --git a/_content/_includes/layout-default.njk b/_content/_includes/layout-default.njk
deleted file mode 100644
index 07f180f..0000000
--- a/_content/_includes/layout-default.njk
+++ /dev/null
@@ -1,13 +0,0 @@
----js
-{
- layout: "layout-main.njk",
- ctx: function() { return this.ctx }
-}
----
-{% from "macro-entry.njk" import entryMacro %}
-
-{{ entryMacro(ctx(), author, url, content) }}
-
-{% layoutblock 'foot' %}
-
-{% endlayoutblock %}
diff --git a/_content/_includes/layout-feed.njk b/_content/_includes/layout-feed.njk
deleted file mode 100644
index 9977d86..0000000
--- a/_content/_includes/layout-feed.njk
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: Feed
-layout: layout-main.njk
-scripts_foot: ''
----
-
-
{{ title }}
- {{ content | safe }}
-
-
-{% include 'partial-pagination.njk' %}
-
-{% layoutblock 'foot' %}
-
-{% endlayoutblock %}
\ No newline at end of file
diff --git a/_content/_includes/layout-main.njk b/_content/_includes/layout-main.njk
deleted file mode 100644
index c0f0795..0000000
--- a/_content/_includes/layout-main.njk
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: Mon Repos (Death's Domain)
----
-
-
-
-
-
-
-
-
-
-
-
- {#
-
-
-
- #}
-
-
-
-
-
-
- {{ title }}
- {% renderlayoutblock 'head' %}
-
-
-
- {% renderlayoutblock 'header' %}
-
- {{ content | safe }}
-
-
-{% renderlayoutblock 'footer' %}
-{% renderlayoutblock 'foot' %}
-
diff --git a/_content/_includes/macro-author.njk b/_content/_includes/macro-author.njk
deleted file mode 100644
index 141d191..0000000
--- a/_content/_includes/macro-author.njk
+++ /dev/null
@@ -1,10 +0,0 @@
-{% macro authorMacro(author) %}
- {# {{ author | getAuthorData | log }} #}
-
-
-
- {{ author.name }}
- {{ author.preferredUsername }}
-
-
-{% endmacro %}
\ No newline at end of file
diff --git a/_content/_includes/macro-card-head.njk b/_content/_includes/macro-card-head.njk
deleted file mode 100644
index 0260e5b..0000000
--- a/_content/_includes/macro-card-head.njk
+++ /dev/null
@@ -1,9 +0,0 @@
-{% from "macro-author.njk" import authorMacro %}
-{% macro cardHeadMacro(author, date, url) %}
-
-{% endmacro %}
\ No newline at end of file
diff --git a/_content/_includes/macro-entry.njk b/_content/_includes/macro-entry.njk
deleted file mode 100644
index 623a5ce..0000000
--- a/_content/_includes/macro-entry.njk
+++ /dev/null
@@ -1,14 +0,0 @@
-{% from "macro-card-head.njk" import cardHeadMacro %}
-{% from "macro-summary.njk" import summaryMacro %}
-{% macro entryMacro(item, author, url, content, summaryOnly=false) %}
-
- {{ cardHeadMacro(author, item.published, url) }}
-
- {{ summaryMacro(item, url) }}
- {% if item.type == 'article' and summaryOnly %}
- {% elseif content %}
-
{{ content | safe }}
- {% endif %}
-
-
-{% endmacro %}
\ No newline at end of file
diff --git a/_content/_includes/macro-summary.njk b/_content/_includes/macro-summary.njk
deleted file mode 100644
index 6ad8083..0000000
--- a/_content/_includes/macro-summary.njk
+++ /dev/null
@@ -1,83 +0,0 @@
-{% macro summaryMacro(item, url) %}
-{% switch item.type %}
- {% case "article" %} {# article summary: #}
-
- {% if item.summary %}
- {{ item.summary | safe }}
- {% endif %}
-
- {% case "reply" %} {# reply summary: #}
- Reply to {{ item["in-reply-to"] }}
-
- {% case "like" %} {# like summary: #}
- Favourited {{ item['like-of'] }}
-
- {% case "boost" %} {# boost summary: #}
- Boosted {{ item["repost-of"] }}
-
- {% case "bookmark" %} {# bookmark summary: #}
- Bookmarked {{ item["bookmark-of"] }}
-
- {% case "read" %} {# read summary: #}
-
- {% if item["read-status"].toLowerCase() == "to-read" %}
- To Read:
-
- {% elseif item["read-status"].toLowerCase() == "reading" %}
- Currently Reading:
-
- {% elseif item["read-status"].toLowerCase() == "finished" %}
- Finished Reading:
-
- {% endif %}
-
- {% if item["read-of"].startsWith("http") %}
- {{ item["read-of"] }}
- {% else %}
- {{ item["read-of"] }}
- {% endif %}
-
-
- {% case "watch" %} {# watch summary: #}
-
- {% if item["watch-status"].toLowerCase() == "to-watch" %}
- To Watch:
- {% elseif item["watch-status"].toLowerCase() == "watching" %}
- Currently Watching:
- {% elseif item["watch-status"].toLowerCase() == "watched" or item["watch-status"].toLowerCase() == "finished" %}
- Finished watching:
- {% else %}
- Watched:
- {% endif %}
-
-
- {% if item["watch-of"].startsWith("http") %}
- {{ item["watch-of"] }}
- {% else %}
- {{ item["watch-of"] }}
- {% endif %}
-
-
- {% case "rsvp" %} {# rsvp summary: #}
-
-
- {% if item.rsvp.toLowerCase() == "yes" %}
-
- Will attend
- {% elseif item.rsvp.toLowerCase() == "maybe" %}
-
- Might attend
- {% elseif item.rsvp.toLowerCase() == "no" %}
-
- Won't attend
- {% elseif item.rsvp.toLowerCase() == "interested" %}
-
- Interested in
- {% endif %}
-
- {{ item["in-reply-to"] }}
-
- {% endswitch %}
-{% endmacro %}
\ No newline at end of file
diff --git a/_content/_includes/partial-pagination.njk b/_content/_includes/partial-pagination.njk
deleted file mode 100644
index 10f0194..0000000
--- a/_content/_includes/partial-pagination.njk
+++ /dev/null
@@ -1,15 +0,0 @@
-{% if pagination %}
-
-{% endif %}
\ No newline at end of file
diff --git a/_content/_includes/summary-article.njk b/_content/_includes/summary-article.njk
deleted file mode 100644
index edb3ccb..0000000
--- a/_content/_includes/summary-article.njk
+++ /dev/null
@@ -1,6 +0,0 @@
-
-{% if item.summary %}
- {{ item.summary | safe }}
-{% endif %}
\ No newline at end of file
diff --git a/_content/_includes/summary-reply.njk b/_content/_includes/summary-reply.njk
deleted file mode 100644
index e69de29..0000000
diff --git a/_content/atom.njk b/_content/atom.njk
deleted file mode 100644
index e053b60..0000000
--- a/_content/atom.njk
+++ /dev/null
@@ -1,36 +0,0 @@
----json
-{
- "layout": null,
- "permalink": "atom.xml",
- "eleventyExcludeFromCollections": true,
- "metadata": {
- "subtitle": "A feed of all my posts on the fediverse",
- "language": "en"
- }
-}
----
-
-{% from "macro-summary.njk" import summaryMacro %}
-
- {{ ACTOR.name }}'s feed
- {{ metadata.subtitle }}
-
- {{ collections.feed[0].date | dateToRfc3339 }}
- {{ ACTOR.id | absoluteUrl(ACTOR.url) }}
-
- {{ ACTOR.name }}
-
- {%- for post in collections.feed %}
- {%- set absolutePostUrl = post.url | absoluteUrl(ACTOR.url) %}
-
- {{ post.data.title }}
-
- {{ post.data.published | dateObj | dateToRfc3339 }}
- {{ absolutePostUrl }}
-
- {{ summaryMacro(post.data, post.url) | htmlToAbsoluteUrls(absolutePostUrl) }}
- {{ post.templateContent | htmlToAbsoluteUrls(absolutePostUrl) }}
-
-
- {%- endfor %}
-
\ No newline at end of file
diff --git a/_content/index.html b/_content/index.html
deleted file mode 100644
index b663fd1..0000000
--- a/_content/index.html
+++ /dev/null
@@ -1,76 +0,0 @@
----
-layout: layout-main.njk
-eleventyExcludeFromCollections: true
----
-
-
-
-
-
- I'm {{ ACTOR.name }}
- {% if ACTOR.name != ACTOR.preferredUsername %}
- (a.k.a {{ ACTOR.preferredUsername }})
- {% endif %}
-
-
- {% if ACTOR.summary %}
- {{ ACTOR.summary }}
- {% else %}
- ...and I am a human on the Internet.
- {% endif %}
-
-
- Go check out some stuff I wrote
- Or stay up-to-date by following me
-
-
-
- ...or elsewhere on the Internet:
-
-
-
-
-{% layoutblock 'foot' %}
-
-
-
-{% endlayoutblock %}
diff --git a/_content/json.njk b/_content/json.njk
deleted file mode 100644
index 623d805..0000000
--- a/_content/json.njk
+++ /dev/null
@@ -1,36 +0,0 @@
----json
-{
- "layout": null,
- "permalink": "feed.json",
- "eleventyExcludeFromCollections": true,
- "metadata": {
- "subtitle": "A feed of all my posts on the fediverse",
- "language": "en"
- }
-}
----
-{ {% from "macro-summary.njk" import summaryMacro %}
- "version": "https://jsonfeed.org/version/1.1",
- "title": "{{ ACTOR.name }}'s feed",
- "language": "{{ metadata.language }}",
- "home_page_url": "{{ ACTOR.url }}/",
- "feed_url": "{{ permalink | absoluteUrl(ACTOR.url) }}",
- "description": "{{ metadata.subtitle }}",
- "author": {
- "name": "{{ ACTOR.name }}",
- "url": "{{ ACTOR.url }}/"
- },
- "items": [
- {%- for post in collections.feed %}
- {%- set absolutePostUrl = post.url | absoluteUrl(ACTOR.url) %}
- {
- "id": "{{ absolutePostUrl }}",
- "url": "{{ absolutePostUrl }}",
- "title": "{{ post.data.title }}",
- "content_html": {{ summaryMacro(post.data, post.url) | concat(post.templateContent) | htmlToAbsoluteUrls(absolutePostUrl) | dump | safe }},
- "date_published": "{{ post.data.published | dateObj | dateToRfc3339 }}"
- }
- {% if not loop.last %},{% endif %}
- {%- endfor %}
- ]
-}
\ No newline at end of file
diff --git a/_content/posts/.gitkeep b/_content/posts/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/_content/posts/index.njk b/_content/posts/index.njk
deleted file mode 100644
index bbd4c63..0000000
--- a/_content/posts/index.njk
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: My Feed
-layout: layout-feed.njk
-pagination:
- data: collections.feed
- size: 20
-eleventyExcludeFromCollections: true
----
-{% from "macro-entry.njk" import entryMacro %}
-
-
-{% for item in pagination.items %}
- -
- {{ entryMacro(item.data, item.data.author, item.url, item.templateContent, true) }}
-
-{% endfor %}
-
-
diff --git a/_content/rss.njk b/_content/rss.njk
deleted file mode 100644
index 115fc47..0000000
--- a/_content/rss.njk
+++ /dev/null
@@ -1,36 +0,0 @@
----js
-{
- "layout": null,
- "permalink": "rss.xml",
- "eleventyExcludeFromCollections": true,
- "metadata": {
- "subtitle": "A feed of all my posts on the fediverse",
- "language": "en"
- }
-}
----
-
-{% from "macro-summary.njk" import summaryMacro %}
-
-
- {{ ACTOR.name }}'s feed
- {{ ACTOR.url }}
-
- {{ metadata.subtitle }}
- {{ metadata.language }}
- {%- for post in collections.feed | reverse %}
- {%- set absolutePostUrl = post.url | absoluteUrl(ACTOR.url) %}
- -
- {{ post.data.title }}
- {{ absolutePostUrl }}
-
- {{ summaryMacro(post.data, post.url) | htmlToAbsoluteUrls(absolutePostUrl) }}
- {{ post.templateContent | htmlToAbsoluteUrls(absolutePostUrl) }}
-
- {{ post.data.published | dateObj | dateToRfc822 }}
- {{ ACTOR.name }}
- {{ absolutePostUrl }}
-
- {%- endfor %}
-
-
diff --git a/actor.ts b/actor.ts
index 04bfb4e..29a7a5f 100644
--- a/actor.ts
+++ b/actor.ts
@@ -8,8 +8,8 @@ export const summary = ""
// avatar image
const icon:{ type:"Image", mediaType:string, url:string, name:string } = {
type: "Image",
- mediaType: "image/svg+xml",
- url: BASE_URL + "/assets/img/avatar-tt.svg",
+ mediaType: "image/png",
+ url: "https://s.gravatar.com/avatar/bc0f8c2d2ecc533cb236ce1f858365a25dbbc80ce42df49b9a95e88f07f91720?s=800",
name: "My profile photo — a pixelated version of me"
}
diff --git a/bun.lockb b/bun.lockb
index 941a179f4201e03bdcab96a40afd5b5bca95c2f2..e22d87338c6ebddbd26b348bb1f3ab35bd3781be 100755
GIT binary patch
delta 666
zcmezUnPr{m1U=3Fp^~kV?0pFWPiH
zUvMd5d9a9+NWGNRb8CIYi2!jARJ$Zq-h#EcxAUUAp7}yvl-wG^ts1clZ{tZ*A
z&-N#-dlk=L5OwP}Vf8q2s_d8y+co7$9+oRED(sN_c%)!)j_7ik)2*jIT$z;pwrkqT
zo8`L93>$o{C-(+PO!f`(W@MgRIXir^M=OE!sIz?zj1AV2I>*E$^Wm}Nd5Z{0U*^NH-3Ohv#?J-c3VjfdM0{C(>Jm(%1>VP&u05R3r1T;0M{O}9smFU
literal 80379
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