created 2023/06/01 modified 2024/03/15 category info
as much as i would love to have this place be a complete resource, it is far from it. there are so many untold stories, and so many more that will stay like that forever
about this website and how it is constructed
🚀 view gemini version
📦 source code
💿 bellard quickjs
🌌 the gemini protocol
🧮 viewcounter
🍑 actually simple syndication
refresh - 2024
archiving - 2024
refresh - 2023
archiving
lazy browsing mode
rewrite - 2022
begin wiki - 2021
rewrite
archiving
redesign - 2020
this website is generated every time it is updated by a static site generator. basically, all the files in the source like articles and layout templates get built into a final 'output' which can then be simply copied to a static file server. the advantages over the web app paradigm which i used before are numerous, but the most important come down to being simple, and being able to be crawled/indexed & archived no problem
zvavnet itself is runs on the cheapest vps known to man, the 23$/yr lowest-tier vps from racknerd.com, equivalent specs to a raspberry pi zero but the single vcore on the vps is faster. it is running caddy (for http/https), agate (for gemini), and frps (for the rest of the zvavnet)
caddy
agate
frp (fast reverse proxy)
there is also my ethical view counting api (and potentially other services now or later) that can be access through the zvava.org domain via ssl with the rest of the website thanks to the use of caddy's wonderful reverse proxy functionality
TODO: rewrite wiki utility script in wren
there is a wiki.js file which contains several tools for wiki contributors, it has documentation built into the command but it is also available here
wiki.js usage instructions
TODO: rewrite generator script in wren
the generator script (make.js) is located at the root directory and requires a unix system to run as quickjs does not support executing arbitrary commands on windows. this script crunches all the data, formats everything nicely, and outputs static files that can be served all in few hundred lines of vanilla javascript (463 as of 24/03/15)
main entry point
→ create or clean output directory
fetchTemplates
→ read and cache all templates
fetchWiki
→ read and cache all wiki pages
→ parses and caches metadata for each page too
generateTemplates
→ fills out dynamic templates, and saves to cache
generateGemini
→ generate all final gemtext
generateHTML
→ translate all gemtext into final html
generateAss
→ generate an .ass feed of non-stub articles