import{d as r}from"./chunks/git.data.BcrWSzMU.js";import{M as s,q as l,Q as e,K as i,u as a,ag as o,p as n}from"./chunks/framework.Sr2_9k8k.js";const d=e("h1",{class:"p-name"},"My Personal Website",-1),h=["innerHTML"],p=o('
Referenced by:
The Small WebThis Knowledge HubA Personal Websites for myself, available at https://thepaperpilot.org
Tech Stack
I use Logseq to journal and collect my thoughts on various topics that interest me
- Seafile syncs my logseq files between my devices
- Git syncs my logseq files to a private repo on Incremental Social for purposes of version control and using as a submodule
- The seafile files and all repos on Incremental Social are independently backed up daily to backblaze
My logseq files are synced to a private git repo which is added as a submodule to my website repo
A Node.js script pre-processes my logseq files into markdown files in the /garden
path of the website
- Converts all links and block references
- Adds lists of tags and references to pages
- Adds
<h1 />
titles, word counts, update commits, etc. to each page - Moves the /now page to /now instead of /garden/now
- Copies some of the Guide to Incrementals pages to /guide-to-incrementals so as to not break links made before the current site iteration
- Generates /changelog and its RSS, Atom, and JSON feeds
- The outputs of the generation are NOT .gitignore'd, as I use the git log to determine which pages updated when - Commit information about when a file was last updated is added via a data loader because if it was added to the file directly, rebuilding the site would count as having updated every page, by updating each commit to the changes introduced last build
Vitepress builds a static site from the markdown files
- Includes a custom theme that makes the whole site paper-themed
- Includes some pages like the homepage and the about me page that require markup, thus don't make sense to maintain inside logseq
- The sidebar is generated from my favorited pages within Logseq
- Includes various static files, like copies of several of my games and a robots.txt (borrowed from Tracy Durnell's robots.txt) that blocks several crawlers specifically used for training AI models
Three.js is used to create the effect in the background
- Simplex noise gets used to adjust the opacity of a repeating SVG pattern
- Initially tried to use just SVG, which supports creating noise and using it as a mask, but it only does 2d noise and I need 2d slices of 3d noise
Microformats are used to markup the site for The IndieWeb
- The footer contains a minimal h-card with a link to my full profile
- Each garden page is an h-entry, and the changelog an h-feed
- All my socials are added as rel-me links, and the profiles then link back to me (as rel-me links, if allowed by the platform)
- Together this can verify the owner of this website and those socials are the same person
',15),k=JSON.parse('{"title":"My Personal Website","description":"","frontmatter":{"public":"true","slug":"my-personal-website","title":"My Personal Website","prev":false,"next":false},"headers":[],"relativePath":"garden/my-personal-website/index.md","filePath":"garden/my-personal-website/index.md"}'),c={name:"garden/my-personal-website/index.md"},_=Object.assign(c,{setup(g){const t=s();return(f,m)=>(n(),l("div",null,[d,e("p",null,[i("422 words, ~2 minute read. "),e("span",{innerHTML:a(r)[`site/${a(t).page.value.relativePath}`]},null,8,h)]),p]))}});export{k as __pageData,_ as default};