Shadowrun Quotesite

The Shadowrun Quotesite is a website dedicated to quotes from the tabletop RPG called Shadowrun. I host this on my server at my home. Due to the nature of the game (dystopian cyberpunk), be advised that some swearing and the occasional risqué quote will be on your screen if you view the site.

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.

  1. Easy templating (Jinja)
  2. Easy database modeling (flask-SQLAlchemy)
  3. Easier to organize (The PHP code was a mess)
  4. Easier for me to maintain (I prefer Python)
  5. 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.

  1. Upload the release from GitHub to the website
  2. Create a folder for that release
  3. Store the release for each platform (Linux, Mac, Windows) in a separate folder inside the release folder
  4. 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).

  1. Command history (remembers up to 50 commands)
  2. Tab completion
  3. Linux-style commands
  4. Linux-style command arguments and help text
  5. An output pane that can be used to browse command output
  6. It FEELS very much like a terminal. Enough so that users familiar with Linux mistakenly type Linux commands into it
  7. 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.

This site shows that I can do the following

  1. Python, PHP, Javascript, HTML, CSS, and SQL competence
  2. Linux administration competence
  3. Design a website
  4. Maintain a website (it's been running for over 5 years and rewritten three times)
  5. Choose tools that make my life easier
  6. Know how to use and make CRUD frontends
  7. Understand how to work with databases

Things I would improve or fix

  1. It would be nice to overhaul the look of the site. It's currently very plain.complete!
  2. (Complete 2023-11-30)
  3. Adding in a search feature for character mentions, most upvoted, and most downvoted