paulserban.eu

Portfolio Edition

Paul Serban

AI & full-stack engineer · agentic platforms · distributed systems

← Back to portfolio

Featured

Content Pipeline SSG Platform

One content source, four static surfaces

Role: Architect & lead implementer

  • #astro
  • #drizzle orm
  • #sqlite
  • #typescript

Problem

Content lived in multiple places that drifted apart - blog, portfolio, news digest, and quiz all needed the same source of truth.

Approach

Build-time pipeline with SQLite as single artifact; Drizzle schema + dedicated ingest/export tools + Astro SSG.

Outcome

Publishing collapsed to one command; new content types are a migration + ingest mapping.

surfaces
4
deploy_time
single command
View code Live demo

Problem

Content lived in multiple places that drifted apart: a portfolio, a blog, a news digest, and a quiz app all needed the same material. Every edit meant copying prose between repos, and "publish" was a manual, error-prone ritual.

Approach

I designed a build-time pipeline as a pnpm monorepo. A sync step clones the private content repo; dedicated ingest tools (mdx-ingest, json-ingest, news-ingest) parse MDX frontmatter and JSON into a SQLite database via Drizzle; the Astro sites query that database at build time and emit static HTML. The same database is exported to static JSON for the quiz PWA via quiz-export, so there is exactly one source of truth.

Key decisions:

Outcome

Publishing collapsed to a single command. Adding a new content type is a schema migration plus an ingest mapping - no bespoke glue per surface.

Part of prj--personal-portfolio--v3

This pipeline is the content backbone of prj--personal-portfolio--v3, a TypeScript pnpm monorepo that ships four frontends from one SQLite artifact. The rest of the platform includes: