#A Tour of BeanCMS
BeanCMS is a minimalist content management system. I built it as a personal replacement for the great rwtxt. The motivation to build BeanCMS was:
I wanted to self-host rwtxt, but had some changes I wanted to make to the core application.
I wanted an excuse to build something using redbean.dev and fullmoon while demonstrating that Redbean and Lua are viable options for building web applications
As a result of using redbean, BeanCMS is deployed as a single >7MB file that runs natively on Windows/MacOS/Linux -- all without cross-compilation! Take a look at the repo for installation instructions.
#Getting up and running
In short, download beancms.com
from the releases page. On Linux/MacOS, chmod +x beancms.com
. Then, on Windows/Linux/MacOS, simply run the file while using the current directory to store persisted data:
./beancms.com -D ./
Right away, you'll notice a data
directory created next to your executable. This is where all persisted data for BeanCMS is stored. BeanCMS uses SQLite as supported by Redbean, which means to back up your site data, all you have to do is copy the data
folder.
Upon opening the site at localhost:8080
, you'll see the welcome page. From here, new users can register, or existing users can log in.
#User Page
Upon logging in, users are able to customize their profile pages by modifying their personal title, filling in an intro section, selecting from multiple free/open-source themes, or adding their own custom CSS that will apply to their profile page as well as their writings.
#Writing posts
Posts slugs are generated automatically by parsing the first line of the post content.
Drafts are saved automatically on users' local machines.
BeanCMS supports syntax highlighting for codeblocks.
BeanCMS supports other features you'd want in a blog or note taking app, such as image upload, hotkeys, and table of contents support.
You can grab the raw Markdown of a post by appending /raw
to any post url.
Lastly, Atom feeds are enabled for all user blogs by appending /feed
to a user's profile url!
#Admin Panel
BeanCMS comes with an included admin panel only accessible to a list of specified IP Addresses. By default, only 127.0.0.1
is allowed to access the admin panel, which provides information such as registered users, active sessions, uploaded images, and storage usage.
#Try it out!
BeanCMS was intended as a hyper minimal blogging/note-taking app that I can self-host for myself and friends. Thanks to redbean, deployment is fast, tiny, and dead simple. A huge thanks to Redbean and Cosmopolitan Libc maintainers for building such a brilliant tool. And an enormous thanks to Paul Kulchenko for providing clarity and creating Fullmoon, a minimal but batteries-included web framework for Redbean.