Slides #
All of my talks, built with Slidev and published together.
talks/<slug>/ one talk each: slides.md, style.css, img/, components/, …
template/ copied by `pnpm new`
scripts/ new / dev / build / export
Usage #
pnpm installpnpm new my-talk "My talk title"— scaffoldtalks/my-talkfromtemplate/pnpm dev my-talk— present/edit at http://localhost:3030pnpm build— build every talk todist/<slug>/plus an index page atdist/index.htmlpnpm build my-talk— rebuild just onepnpm export my-talk— PDF toexports/my-talk.pdf(needsplaywright-chromium)
Extra flags are passed through to Slidev, e.g. pnpm dev my-talk --port 3031.
Dependencies live in the root package.json and are shared by every talk. The
index page lists talks by the title and date in each slides.md headmatter,
newest first. Once a talk's recording is up, add video: <url> to its headmatter
and the index links to it next to the deck.
Deploy #
Hosted on Coolify at https://slides.tyler.fun. A push to main runs .tangled/workflows/deploy.yml, which
just pokes Coolify's deploy API; Coolify clones the repo, builds the
Dockerfile (pnpm build, then nginx serving dist/), and only swaps the
container if that succeeds. nginx.conf gives every /<slug>/ its own SPA
fallback, so new talks need no config.