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
- Social buttons
- RSS feed
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.