I promised I would make this post and dang it I'm going to make it before this site goes read only. Previously I talked about my old site and how it's staying there for the sake of history but I have moved on to my new project, and with the release of 0.12.0 happening by the time this post is out, it is now much more secure and feature packed and worthy of showing to the general public. Let me show you around.
Before I get into this. Yes, this is a project that is open sourced and you can use. The project link is here: https://github.com/firecakes/cakelandish. It is meant for self hosting as a fully functional personal blogging site with automatic RSS integration for your published posts and a built in RSS reader. For most people, I would just recommend making a Neocities account (did you know there's comments you can leave for the sites hosted there?), due to not needing to host yourself and rent a server and it doesn't require experience manipulating HTML and CSS. But, if you're someone who is willing to mess with web primitives and want a server that manages tedious work for you such as feed integration, common layout files across all your posts, remote file editing and exporting/importing of data, give this program a shot. The GitHub wiki has a lot of documentation on how you use the web interface.
What's Different?
So, what have I learned and improved upon from the previous website? Well, the most important thing is: everything must be editable through the webpages! This means no more sending project files from host to the linux machine, no more deploying on change, everything from posting to following feeds to editing static contents are all done through administrative web pages, and it's completely dynamic! The server does not go down at all when new content is created.
This also means no build processes and no webpack or bundling tools. The server stays operational on all changes and is built to be extremely simple to understand and modify. The database has been replaced with a pure JSON file instead of a SQL-like one. The only libraries on the frontend are Axios and Vue 3, and the Vue framework entirely uses the Options API instead of Composition API. There are no SASS/SCSS files, just a global CSS file and some extra styling in each HTML page (it's kind of the weakest part of the project, design wise...). There are no dependencies a user needs to install if they are using the executable provided in the releases, it's just download the project files (executables do not come bundled with the HTML/CSS/JS files), download the executable into the project, run the executable. The server takes in its own SSL certificate, so no need for a reverse proxy or load balancer that performs SSL termination. It uses Deno instead of Node on the server side, so it comes with better tooling by default such as auto formatting and creating executables and a simple way to import libraries. It's currently a little unstable since I'm using the Node library Koa (long story...) so the release also comes with a keepalive program you run that then manages the Cakelandish process for you. Overall, it's leagues better than the old project could ever hope to be.
Okay, I'll admit, it looks more boring than the old site, for someone who is unauthenticated. This is something that can be edited and I will probably make my site more personal so it looks charming like my old site's main page is. But for now, this is what you get, a list of posts categorized by date which then links to the content. I added the web button and webring stuff on my own site, but for you this page will probably be blank if you haven't made a post yet.
The Post Editor
I should probably show the part where you make your posts first. I'll get back to the authenticated main page later. It's uhhhh pretty simple, but looks scary at first. The left side is where you put in your HTML, and on the right is how the page will look once it's posted. You may notice all you do is post the body of the HTML file on the left, so you do not need to worry about making head or html tags. This is because Cakelandish has a default layout file that embeds your posts in its body, and inputs extra stuff such as the link to your ATOM feed and some CSS that makes the background color that blueish color.
You put in a title, add some tags to your post, upload some media files, and you can choose to put in what you want the RSS version of your post to contain, or let it match what you've already written. At the bottom right you can check what an RSS reader will probably parse your post as, which you'll want to see as a reference since readers restrict what stylings and HTML tags are allowed to be rendered.
The Main Page
So that other image showing the list of posts is only shown for non-authenticated users, if you have authentication enabled. What you, the owner of the site, would actually see, is this page. On the left you will have links to all the other parts of the site you may want to access, a list of RSS/ATOM feeds you have collected, and a search function at the bottom where you can do all sorts of filters to the feed items on the right. The right side of the page has all the feed items rendered and includes some metadata such as post date and tags. Each feed item also includes a link to that server's post location where the feed content came from. Remember that feeds have their HTML content sanitized before showing to you, so sometimes you will want to visit the actual page for seeing things like embedded videos and interactive content like games.
One of the interesting things the server can do is the reply function. It's not like an actual reply where the person you're replying to will be notified, but it allows you to "respond" to a post published in another feed, and the parent post you're replying to will be recorded in the feed and also rendered on the feed list. It's a bit of an experimental feature.
The Layout File
So, if you want to know how each of these posts have all this extra stuff injected into it, you want to look at the layout file. This is the encompassing file that will show up on every post's page on your server, and where you see %%%content%%% shows where each of your posts end up being injected. There are other substitutions you can add in the layout than what you can see here, which are detailed in the GitHub Wiki pages. But yeah, you can change the return to main page button, colors, and other stuff here.
Custom Pages and Files
If you have media you want to upload that doesn't belong to a specific post, you can put it here. This place basically shows all of the stuff under the accessible static folder that you can add to and edit. You can create new files, edit HTML, CSS, JS, TXT files, upload any filetypes you want here, and even slot them into directories. If you click on the dangerous looking button with red text, you can even see the important files that Cakelandish ships with. It's mostly all editable! You can change the main index.html file here to style it how you want, for example.
Admin Page
And lastly, this is the admin page. This is where you go to export your data, all bundled into a tar to keep on your file system in case you need to load Cakelandish back to a previous state, or to perform a backup in case of loss of data on the server. The import data button lets you upload an exported tar to load the backed up contents into Cakelandish. In the rare case you need to change domains, a sort of hacky domain change field is there to help make it easier to migrate your post contents to use the new domain name. And lastly, if you enable traffic logs, you will receive data regarding most frequent visits by IP, by page, and overall traffic over time.
Oh, and I forgot to mention that this site has like, 99% mobile support. It has a dynamically responsive layout so you can set the browser to almost any resolution or use all different sorts of phones and the site should still be usable. Granted, you probably don't want to be posting using raw HTML on a phone keyboard, but reading your feeds is probably the most important thing. This project has been a work in progress for a long time, and it has come a long way, and yet it still could use more quality of life stuff. I will probably be taking a break on it for a while, but it is pretty stable at the moment, provided you are running it with the keepalive script. If you do decide to use this, I hope it is a powerful tool to assist in your blogging purposes.




