Skip to content

Migrate from Pelican to Quarto static site generator - #56

Merged
danielpcox merged 4 commits into
devfrom
claude/computable-ai-repo-update-x9j1i7
Aug 17, 2026
Merged

Migrate from Pelican to Quarto static site generator#56
danielpcox merged 4 commits into
devfrom
claude/computable-ai-repo-update-x9j1i7

Conversation

@danielpcox

Copy link
Copy Markdown
Contributor

Summary

This PR migrates the Computable AI blog from Pelican (Python-based static site generator) to Quarto (R/Python-based publishing system). The migration involves removing all Pelican-specific configuration, themes, and plugins while establishing a new Quarto-based site structure.

Key Changes

  • Removed Pelican infrastructure: Deleted pelicanconf.py, publishconf.py, Makefile, tasks.py, and the entire themes/mg/ custom theme directory with all associated CSS, JavaScript, and HTML templates
  • Removed Pelican plugins: Deleted plugins/sitemap/ and plugins/representative_image/ directories along with their configurations
  • Added Quarto configuration: Created _quarto.yml with project settings, website metadata, and post-render hooks for legacy feed URL compatibility
  • Created Quarto theme files: Added theme-light.scss and theme-dark.scss for styling using Quarto's SCSS variable system, maintaining the original Computable AI brand colors
  • Updated content structure: Converted Jupyter notebooks in posts/ to use raw cell format for YAML frontmatter (changing from markdown cells to raw cells with format: text/plain)
  • Added Quarto pages: Created index.qmd (homepage with post listing), about.qmd, and 404.qmd to replace Pelican templates
  • Added build tooling: Created .github/workflows/publish.yml for automated site publishing and tools/legacy-feed.py to maintain backward compatibility with the old Pelican feed URL (/feeds/all.atom.xml)
  • Updated .gitignore: Replaced Pelican-specific patterns with Quarto patterns (/_site/, /.quarto/)
  • Added custom styling: Created styles.css for legacy image alignment conventions from the Pelican era
  • Updated README: Modified to reflect the new Quarto-based setup

Notable Implementation Details

  • The migration preserves the original brand identity by porting the green color scheme (#00967b, #0d544e) to Quarto's SCSS variable system
  • A post-render script maintains the legacy Atom feed URL for existing feed subscribers
  • Jupyter notebooks are updated to use raw cells for frontmatter, which is Quarto's standard approach
  • The site maintains aliases for old Pelican URLs (/categories.html, /archives.html) to preserve SEO and existing links

https://claude.ai/code/session_01GXdH68Zgh99MDTF5Cpkn7q

claude added 4 commits August 16, 2026 17:00
- Convert 17 posts to Quarto notebook posts under posts/<slug>/, with
  aliases preserving the old /articles/YYYY/Mon/DD/slug.html URLs
- Move posts by other authors (and old icebox drafts) to _icebox/,
  which Quarto excludes from the build
- Consolidate triplicated image directories into static/images/ and
  vendor the AI Dungeon hero image locally
- Replace Pelican machinery (theme, plugins, Pipenv, Makefile) with
  _quarto.yml, index.qmd listing, about.qmd, and styles.css
- Publish via GitHub Actions: render on push to dev, deploy to master
  with CNAME for computable.ai

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GXdH68Zgh99MDTF5Cpkn7q
The Pelican-to-Quarto migration dropped the custom mg theme and with it
the site's visual identity. Recover it:

- Brand SCSS layers for light and dark modes: teal-green palette
  (#00967b / #0d544e), white navbar with the signature 4px green top
  rule, green underlined listing titles, white article cards on a
  light-gray page, Optima/Segoe heading stack
- Restore logo images from git history into static/images/brand/ and
  put the green-disc logo back in the header
- Drop the redundant page-title block on the listing page

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GXdH68Zgh99MDTF5Cpkn7q
The old mg theme switched schemes via prefers-color-scheme; Quarto 1.6
only offered a manual toggle defaulting to light. Upgrade to Quarto
1.7 and enable respect-user-color-scheme so the site follows the OS
preference again (the toggle remains for manual override).

Retune the dark theme from darkly's neutral gray to the original
green-tinted near-black (hsl 158 hue): body at 5% lightness, cards at
7% with hairline keylines, and the light backing behind transparent
thumbnails.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GXdH68Zgh99MDTF5Cpkn7q
- Alias /pages/about.html, /categories.html, /archives.html to their
  new equivalents
- Post-render script copies the feed to the old Pelican feed path
  feeds/all.atom.xml, since feed readers don't follow HTML redirects
- Add a 404 page (GitHub Pages serves 404.html)
- Let CI render on the feature branch with the deploy step gated to
  dev, so the pipeline is validated before switching over

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GXdH68Zgh99MDTF5Cpkn7q
@review-notebook-app

Copy link
Copy Markdown

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

@danielpcox
danielpcox merged commit 7b11a2e into dev Aug 17, 2026
1 check passed
@danielpcox
danielpcox deleted the claude/computable-ai-repo-update-x9j1i7 branch August 17, 2026 02:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants