Skip to content

Port website over to Astro - #44

Open
meenbeese wants to merge 1 commit into
jython:masterfrom
meenbeese:astro
Open

meenbeese wants to merge 1 commit into
jython:masterfrom
meenbeese:astro

Conversation

@meenbeese

Copy link
Copy Markdown

Summary

Rewrites the Jython website from Jekyll (Ruby) to Astro, using the official create astro scaffold. The generated site is functionally identical — same pages, same URLs, same look — but the toolchain is more modern, faster, and much easier to work with.

Why

  • More modern: Astro is an actively developed, TypeScript-first static site generator with a huge ecosystem. Jekyll is Ruby-based and its GitHub Pages toolchain pinned us to Ruby 3.1 (the current gems crash on newer Ruby).
  • Easier to use: A single bun install && bun run dev gets a contributor up and running — no Ruby, no Bundler, no gem version pinning. The old setup required matching a specific Ruby version just to build locally.
  • Faster builds: a full build now runs in well under a second.
  • Familiar authoring: content stays in plain Markdown with frontmatter, so writing pages is unchanged.
  • Better defaults: built-in syntax highlighting, component-based layouts, and hot reload.

Before / After

Before (Jekyll) After (Astro)
Before After

What changed

  • Replaced the Jekyll project with an Astro project:
    • src/pages/*.md — the 11 content pages (Markdown + layout frontmatter)
    • src/layouts/BaseLayout.astro — header, nav, footer, and SEO meta (ported from _layouts/default.html)
    • src/components/Navbar.astro + src/data/navbar.ts — dropdown navigation (ported from _includes/navigation.html + _data/navbar.yml)
  • Moved static assets into public/ (CNAME, .well-known/atproto-did, images, and the existing slate theme CSS).
  • Added astro.config.mjs (site: https://www.jython.org, build.format: 'file' to preserve existing .html URLs, github-light code highlighting).
  • Added .github/workflows/deploy.yml using the official withastro/action to build and publish to GitHub Pages on master.
  • Committed bun.lock so deployments are reproducible.
  • Removed the Jekyll files: _config.yml, _data/, _includes/, _layouts/, Gemfile, Gemfile.lock, _site/, assets/, and the root-level .md files now living in src/pages/.
  • Updated README.md with the new build/dev instructions.

Notes

  • index.md and jyspecific.md previously used Liquid data lookups (site.data.book, site.data.pydoc); these were resolved to their literal URLs to avoid adding the MDX integration.
  • No change to the published URL structure (/download, /news, etc. all still resolve).

How to test

bun install
bun run dev      # preview at http://localhost:4321
bun run build    # outputs to dist/

@meenbeese
meenbeese force-pushed the astro branch 2 times, most recently from adee098 to 120fbb9 Compare September 17, 2026 03:47
@jeff5

jeff5 commented Sep 22, 2026 •

Copy link
Copy Markdown
Member

TBH we don't do very much with the website apart from edit a coulple of pages at release time. I'll look at how this might benefit us.

@jeff5

jeff5 commented Oct 2, 2026

Copy link
Copy Markdown
Member

I've looked through this carefully. The framework part (e.g. description of menus) doesn't seem simpler than the current one. The content is the same (markdown), just moved. The existing site works and has been no trouble, while change brings at least the risk of work.

The CI failure is irrelevant as it is all false alarms from bun.lock.

So I don't see a compelling case to change, sorry. I hope this wasn't a lot of work to convert. (Thanks for thinking of us.)

@meenbeese

Copy link
Copy Markdown
Author

Thanks for looking through it carefully, and it was a fun exercise regardless.

The one thing I'd push back on is "the existing site works and has been no trouble." I think that's true by default rather than by choice, and that's the whole case. It isn't really an Astro argument.

master has no deploy workflow, so it relies on Pages' built-in Jekyll build from the github-pages gem. That gem's last release was 2024-08-06, it pins Jekyll 3.10 and never moved to Jekyll 4, and GitHub shut down the legacy pagesworker on 2024-06-30 — the Jekyll build runs through Actions now even for branch deploys. GitHub's own docs picked up a callout saying "Jekyll is no longer being updated, and Actions is better for most use-cases" (docs#39148, after the Pages team signed off).

I can also make a preview URL to test the changes, but there really shouldn't be any regressions.

I will also rebase on the latest changes from master.

This branch has not been deployed

No deployments
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