Ignacio Ballesteros 511b003da8 Add Elixir markdown pipeline with org-citar citation resolution
Introduces scripts/pipeline/, a Mix project that runs as a post-export
transformation pass over content/*.md before Quartz builds the site.

Pipeline (scripts/export.exs phase 3):
- Compiles and loads the Mix project at export time (cached after first run)
- Applies a list of Transform modules sequentially over all .md files
- Only rewrites files that were actually changed

Citations transform (Pipeline.Transforms.Citations):
- Resolves [cite:@key] and bare cite:key syntax produced by ox-hugo/citar
- Resolution chain: Zotero BBT JSON-RPC → BibTeX file → DOI/bare-key fallback
- Zotero probe uses a no-op JSON-RPC call (cayw endpoint blocks indefinitely)
- Zotero resolver fetches PDF attachments via item.attachments, producing
  zotero://open-pdf/... links; falls back to zotero://select/library/items/...
- BibTeX resolver parses .bib files with a simple regex parser (no deps)
- DOI resolver is the always-succeeding last resort

Configuration via env vars:
  BIBTEX_FILE   — path to .bib file for fallback resolution
  ZOTERO_URL    — Zotero base URL (default: http://localhost:23119)
  CITATION_MODE — silent | warn (default) | strict

Adding future transforms requires only implementing Pipeline.Transform
behaviour and appending the module to the transforms list in export.exs.
2026-02-20 10:00:11 +01:00
2023-12-11 15:34:21 -08:00
2026-01-08 09:04:56 +08:00
2023-08-02 20:59:56 -07:00
2025-05-28 16:20:59 -07:00
2023-08-20 08:57:56 -07:00
2023-08-07 23:57:24 -07:00
2023-07-22 17:27:41 -07:00
2025-04-17 19:45:17 -07:00
2021-07-18 09:35:42 -04:00
2025-04-17 19:45:17 -07:00

Quartz v4 — org-roam edition

"[One] who works with the door open gets all kinds of interruptions, but [they] also occasionally gets clues as to what the world is and what might be important." — Richard Hamming

Quartz is a set of tools that helps you publish your digital garden and notes as a website for free.

This fork adds first-class support for org-roam notes via ox-hugo.

🔗 Upstream documentation: https://quartz.jzhao.xyz/

Join the Discord Community

Quick Start

Prerequisites

This project uses Nix. Enter the development shell, which provides Node.js 22, Elixir, and Emacs with ox-hugo:

nix develop

All commands below must be run inside this shell.

npm install

Building from org-roam notes

Your org-roam notes live in a separate directory. Point NOTES_DIR at it:

# Export notes to content/ and build the site
NOTES_DIR=/path/to/notes npm run build:notes

# Export, build, and serve with hot reload
NOTES_DIR=/path/to/notes npm run serve:notes

# Export only (wipes content/ and re-exports all .org files)
NOTES_DIR=/path/to/notes npm run export

The export script mirrors the subdirectory structure of your notes into content/ and generates a fallback index.md if your notes don't include one.

Building without org-roam notes

If you manage content/ directly with Markdown files:

# Build the site
npx quartz build

# Build and serve with hot reload
npx quartz build --serve

The site is generated in public/. When serving, visit http://localhost:8080.

Development

npm run check    # type check + format check
npm run format   # auto-format with Prettier
npm run test     # run tests

Sponsors

Description
🌱 a fast, batteries-included static-site generator that transforms Markdown content into fully functional websites [Fork] Adapting built-in tool to org-roam style + additional tweaks: - Zotero integration for citations - Nextcloud for references files
Readme 2.7 GiB
Languages
TypeScript 85.1%
SCSS 8.3%
JavaScript 4.7%
CSS 1.8%