Skip to content
back to the quest log
Ren Publications home page with a featured article and format archive
epic◆ productlive

Ren Publications

A publishing system I can own

A self-hosted reader and authoring workspace for papers, research, essays, notes, talks, and long-form writing.

role
Creator and full-stack engineer
org
Independent
when
2026

What it is

Ren Publications is both the archive at publications.ren and the software behind it. One Next.js application renders the public reader and private admin while Express serves a same-origin API from the same process.

The editor accepts a controlled MDX-style format with math, highlighted code, callouts, media, and documents. It intentionally parses a small allowlist instead of evaluating arbitrary JSX.

Production uses PostgreSQL and S3-compatible storage, while local development falls back to an atomic JSON store and local uploads. Railway infrastructure, migrations, health checks, RSS, sitemap, and scheduled publishing ship with the repository.

where the effort went

  • Editorial UX94
  • Security82
  • Discoverability88
  • Operations74

the numbers

Content formats
8
Theme pairs
24
History
504 commits
Runtime
1 process

reader, admin, and API

built with

  • Next.js
  • React
  • TypeScript
  • Express
  • PostgreSQL
  • S3
  • Zod
  • KaTeX
  • Railway

delivery record

What I made

I needed one durable home for formal research and unfinished thinking, with control over the reading experience, publishing schedule, analytics policy, and media storage.

  • 01

    Public archives for eight writing formats with direct custom URLs

  • 02

    Passphrase-gated author workspace with revocable sessions

  • 03

    Controlled MDX-style editor with live preview, math, code, and media blocks

  • 04

    Private media pipeline with local and S3-compatible storage modes

  • 05

    Scheduled publishing, recommendations, RSS, sitemap, and canonical metadata

  • 06

    First-party analytics with retention controls, Do Not Track, and no raw IP storage

  • 07

    Twenty-four paired light and dark reading themes

Hard problems

The constraints mattered as much as the finished interface.

01field note

Rich authoring without arbitrary code execution

problem
Evaluating user-authored JSX would make a convenient editor part of the application trust boundary.
response
I parse a controlled source format and permit only documented media and callout components alongside Markdown, GFM, math, and code.

Result: Authors keep expressive documents without turning publication content into executable server code.

02field note

One codebase across local and durable deployments

problem
Requiring PostgreSQL and object storage just to draft locally raises the cost of writing and testing.
response
Storage adapters fall back to an atomic JSON file and local uploads, while production switches to PostgreSQL and S3-compatible storage.

Screens

after shipping

What stayed with me

  • A publishing tool should make a draft cheap to start and a public archive hard to lose.

  • Privacy-aware analytics can answer editorial questions without retaining raw visitor addresses.