Blogger: a custom CMS backbone for all my websites

A custom-built GraphQL CMS API with a secure dashboard to manage blog posts, portfolio items, and newsletter subscribers across all my websites. Built with Node.js, GraphQL, MongoDB, and Next.js.

Kayleigh Page · 05 May 2025

Clean, tech-styled mockup of a custom-built CMS dashboard featuring GraphQL, Next.js, and MongoDB logos with a blog post management interface

As someone who juggles multiple blogs and platforms, I needed a single, efficient place to manage everything: blog posts, portfolio items, newsletter subscribers, and even SEO metadata. So I built it.

What I built

Blogger is a custom backend-and-dashboard system I designed for my own workflow. It serves as the central API for all my websites and blogs. I use it to create and update content, manage SEO data, host image uploads, and maintain a subscriber list; all from one secure interface.

The backend is a custom GraphQL API written in Node.js and Express, using MongoDB Atlas for cloud data storage. The frontend is a fast, mobile-friendly Next.js PWA that allows me to edit content on the go.

Focus on security

Security is baked in from the ground up:

  • Two-factor authentication (TOTP)
  • Login monitoring with IP blocking to prevent brute force attacks
  • JWT-based auth, hashed passwords with bcrypt, cors, and hardened headers with helmet
  • NginX secure config, WAF & intrusion detection on my server once deployed

Tech stack

Back-end:

  • Node.js, Express.js, GraphQL, MongoDB Atlas
  • Mongoose, JWT, bcryptjs, multer, express-rate-limit, helmet, speakeasy

Front-end:

  • Next.js with next-pwa for mobile progressive web app support
  • GraphQL data fetching
  • Quill.js for rich text editing stored as HTML

Final thoughts

I might extend this app with email-campaign support or a React-Native mobile app in the future.

👉 If you're building something similar and/or want to collaborate, feel free to reach out!