This project initially served as a repository for documenting the progress and lessons learned of my ongoing projects and . Over time, it evolved into a blog so I can share my experiences and insights with others. The blog is a work in progress as where I am fixing and adding features when I run into something I want.

To streamline the process of adding or updating posts without the need for constant page creation and deployment, I developed a straightforward content management system (CMS). This CMS enables me to effortlessly create, update, and delete posts. This was a bit overkill, I could have just used a headless CMS but I wanted to expiriment with a .NET Core API application. Therefore the backend is a .NET Core API application with a Postgres database hosted on Azure while the frontend is a Vue3.

For authentication purposes, I've implemented Clerk, a provider known for its user-friendly interface and robust security features. Clerk takes care of all authentication and authorization tasks, leaving me with the simple responsibility of ensuring that users are logged in before accessing the CMS. I plan to implemented my own authentication in the future.

Users have the flexibility to create, edit, and delete posts, with the option to designate them as either public or private. Public posts are accessible to all, whereas private posts remain exclusive to the user who authored them. This makes drafting and previewing posts easy.

When crafting a post, users select from prebuilt components and input the corresponding data. These components, along with their associated properties, are stored as a JSON object in the database. Upon requesting a post, the JSON object is parsed, and the components are dynamically rendered.


  • Vue3
  • Typescript
  • Tailwind
  • Clerk


  • .Net Core
  • Postgres
  • Dapper
  • Open API