New Website Plans (Again)

For about the last year or so my website consisted of a bunch of static pages, generated with the static site generator Hugo. While there is nothing really wrong with my site as it right now, it was made when I was frustrated with how bloated many websites had become (and still are). It’s all pure html/css with not a single line of JavaScript. The look and feel of this site are also very plaintext-ish. Since then the pendulum has swung back a bit for me and I find myself wishing for some extra features.

Existing CMS vs. Custom CMS

I would be lying if I said I had not considered just grabbing an off the shelf CMS (Content Management System) and be done with it, but I’ve decided to challenge myself a bit more. That is why I’m going to develop my own CMS. There are a few reasons why I have made this choice.

Firstly, almost my entire last year consisted of web-based or web-related projects. Because of this I have gotten considerably more experienced with web-development and I want to continue this trend. To do this I want to explore several new techniques and technologies while also deepening my knowledge of the tech I’m familiar with (Python & Flask). I also discovered I actually like web-development a lot.

Second, this web-application will serve as a portfolio piece for showing off my web-development skills. Next to the website and the CMS itself (which will be open-source), I will be documenting my process of creating it.

Finally, I want to build a website with a lot of custom functionality. For example, next to the normal website, I want to automatically generate a text/html only version of the entire site (with reduced functionality for obvious reasons). Also I want to make the entire site accessible through a REST-api, to make the site very web-scraper friendly and to learn more about building REST interfaces. Some other features I’m considering are a WYSIWYG (What You See Is What You Get) editor and custom spam filter for comments (again, not because I think this is the most effective solution, but because I want to improve my web-development skills).

Features

The features I want to include:

  • Pages and Posts
  • Text/html (static) only version
  • REST-api to read/scrape site
  • Markdown based (WYSIWYG) post and page editor
  • Text and PDF export of posts (and site)
  • Comments (with custom spam filter)
  • File downloads
  • Tags
  • Search
  • Formula and code (with highlighting)
  • Toggle light/dark mode
  • Responsive design
  • Analytics

Some deployment focused features:

  • Custom Docker image
  • Caching
  • Separate static content serving

Time-frame

As you might or might not know, I’m currently working four days a week while also working towards getting my masters degree in Software Engineering and working on another open-source project. This means progress on this new site might be slow. Until I have a version with basic functionality working, I will keep using my current website.