- Role
- Sole developer
- Content
- 1,239 MDX pages
- Commits
- 740+
- Stack
- Astro, Svelte, AWS
Migrating from WordPress
The old site was built on the Flynt theme, so every
page was a stack of Flynt modules stored in the
WordPress database. I wrote a converter that read the
WordPress export and turned each page, news post,
event, person and program into an MDX file in an
Astro content collection.
-
Frontmatter kept what the site needs to route and
sort: title, type, date, status, permalink and the
original post ID.
-
Flynt modules became Astro components that the MDX
imports: Spotlight, Image, FacultyCards, Accordion,
DocumentLink, ImageText, DataTable, Slideshow,
Video and PromotedCallout.
-
The first import landed as one commit: 1,212 files
and about 98,000 lines.
The remaining work was cleanup and consolidation:
resolving content that broke the build, defining a typed
schema for each collection, moving uploads from
/wp-content/uploads/ to media.king.edu,
importing WP Engine’s redirects, and re-syncing from the
live site twice while editors continued their work. In
May 2026 I also brought in the program pages from the
separate online.king.edu site.
Features
Program finder
A Svelte filter over 70+ programs, with grid and
list views that persist between visits, sort
groups, and a modal per program with its own
apply link.
Search
Site-wide Pagefind search with tuned ranking,
navigation kept out of the index, and recent
searches and quick links when the box is empty.
Forms
Form definitions live in DynamoDB. A Svelte form
renders them, Turnstile stops spam, and a Lambda
stores each submission and emails it out through
SES.
Live webcasts
Chapel services stream on YouTube. A Lambda
reports when the channel is live, which drives the
live badge, the schedule and past broadcasts.
Navigation
Menus are defined in TypeScript, and one
unit-tested matcher places each page in them for
the breadcrumb, section nav and sidebar.
People, news and events
A filterable directory of 220+ faculty and staff,
and news and events with sorting, filters and
featured slots.
Smaller tools include filterable, paginated data
tables, an interactive study abroad map, a scholarship
finder, statistics calculators, a Virtual Calm Room,
and a design system page that presents every component
side by side.
Infrastructure
- The static build is served from S3 behind CloudFront.
-
GitHub Actions deploys
main to king.edu
and stage to a password-protected staging
site defined in CloudFormation. Deploys assume IAM
roles through OIDC, so no AWS keys are stored.
-
CloudFront routes
/api/* to API Gateway
and Lambda for forms and webcast status.
-
Redirects run at the edge in a CloudFront Function
backed by a KeyValueStore, so adding one needs no
deploy.
Quality checks
One command, npm run verify, type checks,
checks formatting, runs the Vitest suite, builds the
site, and fails on any internal link or asset that
doesn’t resolve. CI runs it on every pull request and a
pre-push hook runs it locally. The site has stayed
current with Astro from version 5 through 7.
Timeline
-
Sep 2025
Started the Astro project
-
Oct 2025
Imported the converted content and set up deploys to
S3 and CloudFront
-
Jan 2026
Brought over WP Engine’s redirects and made the
navigation accessible
-
Apr 2026
Re-synced content and moved media to media.king.edu
-
May 2026
Merged in online.king.edu’s programs and consolidated
the forms
-
Summer 2026
Added data tables, scholarships, YouTube webcasts and
the study abroad map
-
Oct 2026
Redesigned the home page, header and navigation, and
moved deploys to OIDC
Ongoing content updates, including staff changes,
events, news and policy revisions, also go through
git. A scaffolding script creates each new entry with
its ID and slug.