After weeks of testing, revising and rewriting the entire app we've made it here: The official release of version 0.
If you're reading this, that means you're reading a post about something I've been dreaming about for a long time. For years I've thought about creating my own content management system to run a blog on, and over the past few weeks I decided to dive into just that and create what I'm currently calling Base CMS.
This content management system is built on a few core pieces of technology: Supabase (handling the auth, media storage and database, as well as some functionality within there), Next.js and some other dependencies thrown into the mix.
Over the next few weeks I'll tell the story in greater detail, but for now I'll tell you a bit about myself and what I've got cooking up.
Hi! My name is Brett.
I started my career as a journalist before diving deep into the world of technology. For the past five years I've worked on a large content management system, bring new technology products to local news outlets around the world.
It's been a really exciting way to connect my two passions of journalism and technology together to strengthen communities and usher in a new era of news creation.
While I've been developing my skills as a technologist, I've also been itching to build my own content management system as a way to explore some experiments that I've always wanted to explore. Local news is a passion of mine, for sure, but there's also a world of journalism outside of the local environment that I'm equally passionate about.
So that's why I'm building this product. I want to experiment with a product that caters to other areas of the news ecosystem and continue the cycle of learning that I've been so deeply connected with for the past five years.
Base CMS is pretty young. I started working on it about six weeks ago as a Vite project. As I continued to work on it, I realized Vite was a bit limiting for what I was trying to accomplish—specifically around authentication and security.
React is great for user interactivity, but when you're trying to secure things it can be a bit more complicated.
That's where Next.js became the perfect fit for this project. Its ability to easily switch between client-side and server-side rendering makes it easy to lock down specific elements of the CMS while making other areas nice and interactive.
Combining Next.js with Supabase also made sense from a security standpoint. Row Level Security is a really powerful tool, so I've made it an important thing to learn through this process—something I'll probably talk about on and off as this project continues.
Switching to Next.js also pushed me to learn TypeScript, so after deciding to make the switch I made an even bigger decision to move from JS/JSX to TS/TSX, which was quite the undertaking!
Overall, it's been really rewarding to experiment in this space and over the next few weeks I have a number of tasks I want to complete to take this from 0.1 to 0.2 and beyond.
Right now the CMS is fairly limited in how capable it is. I currently support publish status (published or unpublished), feature image uploading/selection, headline, intro and a wysiwyg editor. The wysiwyg editor is a custom-built editor using Slate.js, and right now it only has about five or six formatting options.
The key areas of focus for me right now are the following:
Better editor formatting options
The editor only supports bold/italic/underline and a few paragraph types (headings, paragraphs and "quotes"). I'd like to add more paragraph types and links. It's also important to me to include links with outbound click tracking, as well as embeds from various social media platforms.
Improved taxonomy
Another big improvement would be better taxonomy for content creation. Things like tags, sections and SEO are areas I want to improve. This will also make it easier to adapt the home page to be more visually appealing in the future.
Improved navigation
With limited content comes limited navigation, but as this project grows and more content is created, it's going to be important to put some focus on navigation.
Analytics and other improvements
Analytics is another space where I need to improve things. The current plan is to integrate with PostHog before the 0.2.0 release. Outside of that, it would be great to give the product a more unique design language.
If you've made it this far, thanks for reading! I'm going to continue to use this space to talk about the project, and as it develops into a larger thing I'll likely use it for some other blogging endeavours!