It's hard to find time to work on your own site.
Portfolio site, blogging platform and more importantly the first proof of concept using MANAGED CMS.
To build a site to showcase skills, previous work and content that I think will be useful to clients, other developers and myself.
In the pursuit of simplicity I decided to spend more than 2 years developing a new CMS (yes, I realise the irony here). This site is the first PoC for the new in-house content management system: MANAGED.
There's no SQL database. Content is simply stored as JSON directly on the file system.
Clearly I've nothing against databases but sometimes it's nice to have everything required to run a site in a single web directory. If the site grows, I may port it over to use SQL Server but due to the way MANAGED is built this would be a simple task.
Storing content as simple JSON files is great but without SQL how do you perform a search?
All queries are against an ASPNET Core compatible index
Originally I wanted to use Lucene.NET, the popular index used by Umbraco et al, sadly it's not ready for running on ASP.NET Core yet.
I found a great alternative called h00t which is part of RaptorDB written by Mehdi Gholam. I've tweaked it to run on ASP.NET Core and also to index key/value pairs in order to search against individual document properties.
A custom build of bootstrap including only the grid system was used to help keep the site responsive, which is bundled into the main css file to reduce the number of render blocking HTTP requests.
The site is already fast but I'm working on refining it further, mainly as a learning exercise.
You can't get much more performant than raw HTML files sitting on the server
Apart from the search functionality all other pages are static in the sense that they don't change after a content item is published. I'm in the process of writing a MANAGED plugin that renders the HTML and writes it straight to disk when a piece of content is published.