When I was first developing interested in web-technologies (almost exactly a year ago now) I wanted to build some things to test my skills. I've always believed that book learning will only get you so far, you discover so much more about a system by building something tangible with it. I decided as a first project to make a blog for myself. I looked at things like Jekyll and Wordpress, but I initially had trouble customizing Jekyll (though I'm sure I could manage it now). I didn't think I'd learn what I wanted to from building with Wordpress, so I decided to go with a custom solution.
I fiddled around and made a few handlers in a Python Google App Engine site, adding a bit of logic to convert Markdown files into HTML and insert them into jinja templates. This worked pretty well so I cleaned it up, added a few functions to parse metadata about each post, using it to build a table of contents and a site structure. Pretty soon I had a working blog framework that I knew from front to back and it was simple enough to extend in any way I could imagine.
The result is an adaptable and intuitive framework that for some unknown reason I've decided to call "BoxKite". Check out the Source (and installation instructions) here: BoxKite
So why should you try out BoxKite? Well, it depends on what you want to use it for; but here are some things that I like about it:
- ALL data related to a post is stored plain-as-day in the post's markdown file. (I can't stress how nice this is for organizational purposes)
- No managing images or content through clunky CMS systems, just put it in the right folder and reference it in your post or template.
- Need to change a post or it's tags/categories/image? Just edit the text file and everything dependent on it will be updated when you deploy.
- Want to add something unique to your site? Just edit the jinja template (or CSS), everything is available to you.
- The entire site can be exported statically if you have a vendetta against using web-servers (or performance concerns, see the README).
- It's responsive and scales to the viewport size. It also reflows content properly for a good mobile experience.
- Did I mention that comments and social media connectivity are a breeze? They're configured by default. You just need to input your Disqus name.
Who shouldn't use BoxKite?
- People who aren't interested in learning anything about websites
- Companies with hundreds and hundreds of posts.
- Blogs with many authors, this set-up is great for personal blogs, but breaks down with more than a few people posting.
In conclusion, I'd highly recommend building something like this from scratch in whatever web framework you like to use (node, rails, appengine, etc.). It's a great way to learn, and you'll understand the whole framework better (and web tech as a whole) as a result. This is actually my first try at open-source and any sort of distributable project, so take it with a grain of salt, but take a look at it, mess around with it, and let me know what you think! Cheers!
Hopefully you learned something 🤞! If you did, please consider checking out my book: It teaches the principles of using optics in Haskell and other functional programming languages and takes you all the way from an beginner to wizard in all types of optics! You can get it here. Every sale helps me justify more time writing blog posts like this one and helps me to continue writing educational functional programming content. Cheers!