Zenmora Blog by Ken IsiahoZenmora Blog by Ken Isiaho

Zenmora Blog

Ken Isiaho

Ken Isiaho

Zenmora Blog

An editorial home decor blog and ecommerce platform built from scratch. Full CMS with a rich post editor, newsletter subscriptions, reader engagement features, and an integrated shop, built on a custom Next.js 15 foundation.

What it is

Zenmora Co. is a content-driven home decor brand that needed a publishing platform purpose-built to its requirements rather than adapted from a generic CMS. The site combines an editorial blog with an integrated shop, giving the brand full control over content presentation, product curation, and reader engagement without relying on third-party platforms.
The admin is a password-protected dashboard that lets editors publish posts with rich media, manage shop items, moderate comments and messages, and customise homepage content, all within the same application. No external CMS is involved. Authentication is session-based, handled entirely within Next.js Server Actions, which also power every form submission on the site.

What was built

Blog & CMS

Editors publish posts through an inline-media editor backed by Supabase Storage. Posts support custom meta tags for SEO, category tagging, and markdown content with HTML sanitization to prevent XSS.

Shop

Product listings with manual sort ordering, a featured item flag for homepage placement, and independent management from the blog. Built to expand into a transactional flow without a structural rewrite.

Reader Engagement

Per-post comments and likes tracked in PostgreSQL. A contact form with an admin inbox for direct messages. All interactions handled through Server Actions, with no separate API routes required.

Newsletter

Subscription management with optional new-post notifications via Resend. Subscribers stored in the same Postgres database, managed through the admin dashboard alongside all other content.

How it is built

Next.js 15 App Router with React 19, with full Server Components and Server Actions throughout
Prisma ORM over PostgreSQL (Neon) with separate pooled and direct connection strings for serverless
Supabase Storage for media uploads, accessed directly from the admin editor
Session-based admin authentication with no external auth service
HTML sanitization on all user-generated content before persistence
SEO metadata generated per post with Open Graph and Twitter card support
Resend integration for transactional email (newsletter notifications)
GitHub Actions CI running ESLint, TypeScript checks, and Vitest on every push
Vitest test suite with coverage reporting
Deployed on Vercel with pre-commit hooks enforcing lint and type correctness

Tools involved

Next.js 15 (App Router)
React 19
TypeScript
Prisma ORM
PostgreSQL (Neon)
Supabase Storage
Resend
Vitest
GitHub Actions
Vercel
Like this project

Posted May 24, 2026

A custom home decor blog and ecommerce platform with full CMS features.