I built this project using the following components:
- Personal public repository with notes in Obsidian style (Zettelkasten)
- Branch of script to manage consistency of notes, notes relations, tags, etc. (Quartz4)
- Telegram channel for sharing updates
- Telegram Bot to post updates in the channel
- Quartz4 for static site generation
- GitHub Actions for bot auto-deploy
- GitHub Actions for static site generation on push to the note repository
- GitHub Actions for posting to the Telegram channel on push to the note repository
The design schema is provided below:
sequenceDiagram
Actor me as Me
participant rep as Note repository
participant send_note as Send Note Action
participant bot as Telegram Bot
participant tg as Telegram
participant deploy as Deploy Site Action
participant pages as GitHub Pages
me ->>+ rep: Update notes
rep -->>+ send_note: on push
loop for each note
send_note ->>+ send_note: Resolve markdown links
send_note ->>+ bot: POST /git/webhook
bot ->>+ bot: Compose message
bot ->>+ tg: /sendMessage
tg ->>- bot: ok
bot ->>- send_note: ok
end
rep -->>+ deploy: on push
deploy ->>+ deploy: Clone Quartz repository<br>Clone content repository<br>Clear Quartz content directory
deploy ->>+ deploy: npx quartz build
deploy ->>+ pages: Deploy
pages ->>- deploy: ok