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

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!