Overview
The quotesite originally began as a PHP site in December of 2018. In 2020 after learning some Flask, I started rewriting the website in Flask due to how easy it is to develop and maintain a website with Flask. I found the following features to be most useful.
- Easy templating (Jinja)
- Easy database modeling (flask-SQLAlchemy)
- Easier to organize (The PHP code was a mess)
- Easier for me to maintain (I prefer Python)
- Development is simple (build in development webserver)
After getting the Flask site to a usable state, the site went live in August of 2020. Soon after, thanks to how easy Flask makes templating, I had added in an admin area, a simple CRUD interface for users and quotes, reworked the user password change process, added in page view statistics, and more.
In January of 2021, I began work on a Shadowrun character creation and management tool. Since I want to keep the code private until I've finished the initial v1.0 release, I needed a way to host the releases of the software where others could access it. This led to me learning GitHub webhooks and implementing a webhook to automatically do the following every time a version was released.
- Upload the release from GitHub to the website
- Create a folder for that release
- Store the release for each platform (Linux, Mac, Windows) in a separate folder inside the release folder
- Update the symbolic link that points to the latest release
In August of 2021, I decided it was time to add a place to get in-universe news about the games I was the Game Master for (ie: A place for players to get news about the world as through they were reading news from the world). Based on several sources, I decided to make it a page that had a "hacker" feeling to it and based it on a Linux bash terminal. After a flurry of activity over a weekend, I had the terminal working, some sample articles loading. After another few weeks, I had the articles stored in a database, an API setup to search for keywords, a CRUD system for articles, and the terminal was feeling real nice to use.
Because the terminal was a project in itself, here are some tricky parts I had to implement (excluding making it look like a terminal with CSS).
- Command history (remembers up to 50 commands)
- Tab completion
- Linux-style commands
- Linux-style command arguments and help text
- An output pane that can be used to browse command output
- It FEELS very much like a terminal. Enough so that users familiar with Linux mistakenly type Linux commands into it
- Some easter eggs (based on Linux commands)
In October of 2020, I decided I wanted to have a voting system in place for the quotes. After designing a simple JavaScript system that allows public voting, visitors to the site could vote a quote up or down if they wished.
When I returned to the site to make some changes on the admin side in November, 2023, I became frrustrated with how terribly I had designed the Admin side of the site. This was, originally, by design because I wanted the admin side to solve my immediate needs when I wrote it. I always intended to come back and make the admin side better, but I never really got around to it. This meant I never completed any work on making it look nice, be fully functional, or even have a way to return you to the non-admin side of the site.
I decided it was time to give the site a facelift, and I rewrote the admin side of the site to use my my CSS framework. Along the way, I stumbled into a really nice look and feel for the admin site, so once I completed the admin side, I went ahead and updated the public side of the site as well. This fixed several things that were long-running issues on my site, gave the site a mobile-friendly layout and breakpoints, and finally made the site look good.