All projects

NeoChyrp

A rebuild of the classic Chyrp blogging engine with modular post types, threaded comments and Webmentions.

Kind
Blogging engine
Year
2025
Built with
  • Next.js
  • TypeScript
  • Prisma
  • PostgreSQL
  • Supabase

The question

What would a blogging engine look like if every kind of post were a plug-in?

NeoChyrp keeps Chyrp’s idea of typed posts and rebuilds it around a contract that each type must satisfy.

Why it exists

A rebuild of Chyrp, a classic blogging engine, with typed posts called feathers, a module system on an event bus, and a modern stack.

How it works

From a draft to a rendered post

  1. 1

    Write

    An author chooses a feather and fills in its form, in Markdown for text.

  2. 2

    Validate

    The post is checked against the feather’s schema, and HTML is sanitised.

  3. 3

    Publish

    The post is stored and a publish event goes out on the bus.

  4. 4

    React

    Modules listen and respond: cache invalidation, Webmentions, search and so on.

Decisions

  • A feather is a contract

    Each post type exports a schema, form fields, a renderer and an excerpt function, so a new type plugs in without touching the core.

  • Handlers cannot block each other

    The event bus runs every handler and keeps the ones that fail from stopping the rest.

  • Sanitise on both sides

    HTML is cleaned when the post is created and again in the browser before it is shown.

Details

  • 7 feather types
  • 18 modules
  • More than 30 data models

Built with

Languages

  • TypeScript

Frameworks and libraries

  • Next.js15
  • Prisma

Data and storage

  • PostgreSQL
  • Supabase