This is the source repository for my website. In summary, this project runs a simple HTTP server with statically-generated content.
templates/: HTML pages and components with$templatekeys.styles/: stylesheets separated by page type for convenience. Combined into one file during initialization.src/: library code for reading files and generating content.index.js: main server entrypoint.
updates/: website-related or general updates injected into the homepage and sorted by recency. Format:YYYY-MM-DD.htmlwith arbitrary HTML content.projects/: metadata files used to generate cards on the projects page. Each entry is an arbitrarily-named JSON file with the following keys:name,description,link, andthumbnail.blogposts/: blogpost files used to generate both blogpost pages and entries in the blog page. Format:YYYY-MM-DD_Post Title.htmlwith arbitrary HTML content.- JSON metadata can be included in a comment with the following keys:
summaryandthumbnail.
- JSON metadata can be included in a comment with the following keys:
tools.txt: newline-separated entries for the randomly-chosen 'Made with ...' text in the footer.
Private blogposts are located in the hidden private-blogposts/ directory using the same blogposts/ format described above. Private posts can only be accessed with a manually-generated one-time-use private key.
To generate a private key, run ./scripts/gen-private-key.js and provide the path to the private post. The key will be stored in the private-blogpost-keys.json file which is safely managed by the server process.