This note describes my personal note-taking/journaling infrastructure that I'm currently experimenting with.
- Stores notes as flat Markdown files in a private repository.
- While most notes are private, a subset of them can be published to notes.dt.in.th(opens new window).
- Notes can contain custom CSS and arbitrary HTML for layout flexibility. (examples: [1], [2])
- Notes can contain interactive footnotes, which look like this: [1]. Powered by littlefoot.
- Notes can be interactive and can use Vue's Composition API right inside Markdown.
- The infrastructure(opens new window) and web site(opens new window) (powered by Nuxt and Vercel) are open source.
- On desktop, notes are authored in a tailored VS Code workspace.
I use the VS Code Power Tools(opens new window) extension to add custom code to provide functionalities without having to create a new extension. For example, the search functionality is implemented as a Power Tools command(opens new window).
However, a custom extension has also been created to make VS Code show backlinks, outgoing links, and similar notes as a sidebar. This too is open source and lives in the vsce folder in the notes-infrastructure repository.(opens new window)
Convenient scripts for creating new entries and synchronizing with GitHub are currently implemented as "npm scripts" that can be conveniently run from the explorer sidebar.
A share image for the notes are automatically generated using my personal puppeteer-based screenshot service.
I also made a convenient command to insert web links based on Bing search results, so that I don't have to manually copy the URL when I want to reference another web site.
I use footnotes for tangential but related stuff, so that I can say what I want without interrupting the main flow of the note. ↩︎