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.
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.
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.
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.
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 😃