Website Rebirth... Again

 •  •  ☕️ Reading Time

Why?

The previous version of this website annoyed me. Parts of it were done really well: it was made in React, it was a single page app that required no "active" server components, i.e it was just HTML + CSS + client side JS that could all be served through any web server like NGINX or Apache. It was simple, easy to customize and pretty fun to work with; however, there were quite a few annoyances around this model:

I could go on, but the point is I wanted to rewrite the website. So I did.

MERN Stack (Sort Of)

The MongoDB Express React NodeJS (MERN) stack is what I picked; however, there are a few deviations I made from the normal MERN mode. I chose Pug/Jade as the server-side engine for writing pages instead of react. With a simple MERN stack in place, I figured I could spice up this simple CRUD app a bit:

All in all I'm very happy with what I've built so far - although there are a few changes I want to make.

Some screenshots

Post Editor and Post Preview

The post editor uses a simple javascript markdown editor to edit posts, and the post editor can do any other administrative work you need to do (change tags, website path, title, etc). The post preview exists for unpublished posts, and just renders the post in a container only visible to authenticated users.

Media Manager and Post Manager

The media manager and post manager are both simple CRUD pages that allow an administrator to manage posts. Currently they are very basic, the backing database schema I designed has much more data that I would like to leverage here.

Improvements

Back to react... Although I hated the pure react site from before, I loved how the SPA webapp behaved, so I'm going to work on porting all my jade templates over to react or just use a transpiler plugin for babel.

Other things I'd like to improve revolve around metaprogramming the site a bit more. Currently a lot of what's happening behind the scenes is very strict, so it would be interesting to add in a dynamic page manager. It sounds like I'm building my own CMS to some extent... Although this is not as scalable as something like drupal.

In addition to the metaprogrammed side of things it would also be nice to have metaprogrammed CSS that can be updated from the administration interface, that would take a bit of work to implement. With that feature I would also spice up the post editor to make use of the custom CSS, with the ability to add HTML / CSS snippets for a variety of things.

Another thing worth adding would be a comments feature, I'm not sure if I would allow unauthorized comments or if I should make users sign up and verify their email to add a comment. The latter is more secure, but much more work.

Conclusion

Sources will be coming soon, I'm going to clean them up and build in more features before I release it to the public. Anybody should be able to stand up their own blog or website using this project once released.

Stay tuned for future updates 😃