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
Write
An author chooses a feather and fills in its form, in Markdown for text.
- 2
Validate
The post is checked against the feather’s schema, and HTML is sanitised.
- 3
Publish
The post is stored and a publish event goes out on the bus.
- 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