Introducing the Jellie Frontier 3.0 _
2025-11-20
by renegadespork
news | website

(Image by Kyvane)
For reasons I'll get into, the main site (jelliefrontier.net) is now running on a completely new web app that I wrote from the ground up in Rust.
⏩ TL;DR If you don't care about the "why", go ahead and skip to New Features.
Table of Contents
Why? 🤔
I. Ghost is Kinda a Pain to Self-Host 👻
⚠️ Warning: A bit of a rant incoming...
Previously, jelliefrontier.net was running on a blogging platform called Ghost. This was a really nice upgrade from the web 1.0 method of just serving HTML and CSS files with Nginx. It provided a good framework for blogs posts and news updates while still allowing me to create custom web pages in their editor.
During configuration, it became apparent that Ghost is designed to work with Mailgun, a service for reliably distributing newsletters via email without getting flagged as a spam source. I don't use Mailgun, but I also had no interest in distributing email newsletters, so I figured it was fine that feature wouldn't work.
However, Ghost does use email for account verification, so when I tried to set up my custom mail server for SMTP the same way I would any other app that has SMTP, I found out it's completely broken on Ghost. Their documentation has basically zero information on configuring a custom SMTP that's not a big SAAS provider, and diving into forums yielded results that just don't work with my mail server for some reason, despite every other SMTP implementation working just fine. After diving deeper, I found the answer lied in undocumented environment variables that people just... stumbled upon, I guess?
"No big deal," I thought. I don't really need users logging into my site other that the admin account which was already verified as it got created at installation. You can problably see where this is going.
Ghost released an update to their sign-in system that forces admin accounts to use 2FA with SMTP (no other methods?!). Since I never got SMTP working, I was locked out of my admin account.
I did eventually figure out a way around this, as I'm not the only one who encountered this, but at this point, I was kind of fed up with the platform. Each subsequent update becomes more difficult to self host as they push people toward their hosting service. This is the exact kind of thing I'm trying to avoid with self hosting, and it didn't feel like I really owned my own website.
II. Learning 🎓
I mentioned briefly in this post about the personal project I've been building. I haven't talked much about it publicly as the project is very slow and steady, but I'm ultimately working on a project called Planetary Server Manager. This project involves writing both full stack web server and distributed agents communicating via a REST API.
While I'm mostly comfortable with designing and writing the REST API, the web frontend has been a challenge. Since I was struggling with that project, I decided to get some practice making a simpler static site to get some practice using the framework before I dive back into a full-stack application. jelliefrontier.net was the perfect candidate.
So far, I think this was the right call. While this site is a bit of a mess code-wise, it's been the perfect low-stakes and small scope project to get comfortable building in the Actix web framework.
III. The Fun of the Old Web 🌐
I liked the idea of making a site that felt like the "old web", where everything was distributed across custom websites of varying quality. While modern platforms have their conveniences, there was so much more uniqueness and creativity back then. Writing my own custom application has allowed me to create something truly unique, written exactly to my needs, and utilizing the features of the modern web I love, while omitting the stuff I don't.
Okay, but why Rust? ⚙️
I just like it, okay? It's my favorite programming language... also it's the only one I learned... >_<
New Features ✨
Wow, there are so many, where do I begin?
- Everything is still here. - All content that was on the old site is also here. No pages, posts, or easter-eggs were lost.
- SSR - All content is rendered server-side and sent as static HTML & CSS. This site has no javascript. I didn't strictly need to do this, I just thought it would be a fun challenge.
- Fancy effects - You may have noticed the "Fancy Effects" buttons. These are all CSS animations, though I noticed in testing that they are fairly CPU intensive. For accessibility and to save compute, feel free to toggle them off. Everything else should still work fine.
🍪 Note: This site uses cookies to save and read your FX preference, so you will need to allow those to tell the site not to render them.
- CRT: This makes the content window appear to be displayed on an old CRT screen. I think it looks neat, but you can turn it off to make text easier to read.
- Stars: Each star you see in the background is a randomly generated object rendered at page load. Go ahead, refresh the page and see them change.
- Status Page - Instead of simply embedding an Uptime Kuma page in an iframe, the web server now queries the status api when you load the page and renders the results.
- More easter eggs. - This is another benefit of writing your own app. I'm a sucker for fun easter eggs, and this site is full of them. Even the error codes. Play around. I'll probably add more over time.
There are more subtle little things that mostly make it easier for me to maintain the site, but feel free to poke around!
Planned Improvements 🛠️
I do have some ideas for some improvements to this site, but I've already spent too much time on this project for now and I wanted to get it production ready. Over time I'll slowly roll out more features. Here's what I have planned in no particular order:
- RSS feed - I haven't implemented an RSS feed for the posts, but I would really like to have one. When I get some extra time, I'll work this out.
- Status page improvements - It's a bit simplistic right now, and I have some ideas for how to make it better.
- Fediverse integration - At some point, I'd like new blog posts to trigger a post to the fediverse, and maybe have the site read content from it too. This may just end up being a CI/CD thing.
- Some more fun API stuff - I'm weird and love writing REST APIs. This site does have one in infancy (just one method to set FX preferences). I think it'd be really neat to use the main site to integrate more stuff.
That's all for now!