WordPress-inspired CMS admin (NestJS + MySQL)
MERN Stack CMS
NestJS/TypeORM/MySQL + React CMS admin for posts, pages, menus, media, and comments—named “MERN,” implemented without Express/Mongo.

Background & Context
Many teams want a WordPress-like back office—posts, pages, menus, media, comments, roles—without committing to PHP or a hosted WP stack. The mern-cms monorepo delivers that admin experience: a NestJS REST API (server/) and a React CRA SPA (client/) with dual UI surfaces (standard CMS routes and an enhanced /admin/* panel when user.role === 'admin').
Despite the repository and portfolio name, this is not MongoDB/Express/React/Node in the classic MERN sense. Persistence is MySQL via TypeORM; the API is NestJS. There is no public blog frontend—unauthenticated visitors are redirected to /login. Seeded demo data, Swagger at /api/docs, and a health endpoint support portfolio/demo use.
Honesty matters on permissions and polish: roles exist as a field (admin, editor, author, subscriber), but several README/ADMIN_PANEL claims (password reset, tags, server-side RBAC guards, SMTP, backups, 2FA, admin settings persistence) are not implemented in source. Rich-text and dropzone packages are listed but unused (PostEditor uses <textarea>; media uses a plain file input).
The Challenge
Operators needed a documented CMS admin API and React dashboard for content entities—without overselling a full public site or aspirational security features that were never wired. Without a coherent wordpress-inspired cms admin (nestjs + mysql) foundation, MERN Stack CMS stakeholders faced fragmented tools, slow handoffs, and limited visibility—classic failure modes Tekvers designs against.
The Solution
MERN Stack CMS: NestJS/TypeORM/MySQL + React CMS admin for posts, pages, menus, media, and comments—named “MERN,” implemented without Express/Mongo. Workable WP-like admin learning/portfolio CMS on NestJS/MySQL. Tekvers delivered a maintainable wordpress-inspired cms admin (nestjs + mysql) system for MERN Stack CMS using NestJS, TypeORM, MySQL, React, with phased rollout, operator workflows, and documentation suited to long-term ownership.
Our Approach
Correct the stack story
Monorepo `server/` + `client/`; Nest modules and TypeORM entities for CMS domains; React routes for dashboard, posts, pages, media, comments, menus, and admin widgets.
Content model first
Posts (CRUD, search, slug, statuses, view counts, categories), pages (SEO fields, types, menu flag), hierarchical menus/menu items, media via Multer, comments with approve/spam/like and nested replies in schema.
Disclose boundaries
No public frontend; no broad server-side role guards; analytics % changes partially mocked; Quill/dropzone/sharp unused—portfolio copy stays code-verified.
What We Delivered
- NestJS REST API with TypeORM/MySQL and JWT login/register/profile
- React CRA CMS SPA + enhanced admin panel for admin role
- Posts, pages, categories, media, comments, menus/menu-items CRUD
- CMS dashboard stats and admin analytics page (some metrics mocked)
- User CRUD with role field; Swagger `/api/docs`; `/health`
- Dev database seeding (admin user + sample content)
- Documented non-features: public blog theme, password reset, tags, SMTP, 2FA, durable admin settings, server-side RBAC guards
Outcomes & Impact
- Workable WP-like admin learning/portfolio CMS on NestJS/MySQL
- Dual admin UX paths for day-to-day CMS vs enhanced admin widgets
- Accurate stack labeling for interviews (Nest + MySQL, not Express + Mongo)
Stakeholders get a real content back office to demo—without pretending the repo name equals the stack, and without claiming public SEO publishing or production-grade RBAC that source does not enforce.
Technology Stack
Services Delivered
Related Case Studies
Guides & articles from this niche
Planning a similar platform? Share your scope and we will map architecture, delivery phases, and a realistic timeline.