From Spreadsheets to Visual Backlog: Introducing a Personal Project
On creating a visual backlog application.

Why did I create this program?
I had just finished the 100 Days of Code Python Bootcamp and while doing some of the portfolio project suggestions I realized I would be more interested in working on a larger project. Two ideas rose to the top: an app for random drawing prompts, and a graphical overview of the games I’ve bought but never played. Both tie into core interests, but a backlog manager was obviously the more ambitious project and would allow me to reinforce several of the techniques covered in the Bootcamp.
I knew that there were some APIs1 for game information, and my interest in avoiding logins meant I could explore alternate authentication schemes - both of which felt like good practice. The first big decision was between a web-based or local program. If it was local, then what GUI2 framework to use. In some ways I think that a web-based solution would have been easier, and would be a closer match to existing options. But I’ve been interested in learning Qt for a while since I use it for my Linux desktop; and it seemed to be feature-rich and robust at matching other system styles (ie. Windows, Mac).
Then the game information would need to be saved somewhere which brought to mind several approaches: a database, text files, or some sort of custom setup. It quickly became clear that going with a database would be the safer option and would give me more practice creating and manipulating relational databases.
I also wanted to prioritize security and privacy as much as possible. To me that starts with storing data locally with options to export it into standardized text formats (JSON, CSV)3, avoiding the Internet when possible, and not requiring any sensitive information. This led to some complications and interesting challenges related to getting information from Internet sources, which we’ll come back to in the future.
As I planned out the backlog program I did some research to see what other solutions were out there. There are several websites which do roughly the same thing, but they require registration and have social aspects added. Leaving an opening for a privacy-oriented, local application, especially with a focus on helping users understanding their game library and preferences.
Why a game backlog manager specifically?
I’ve been interested in video game creation since college, with the goal of entering the video game industry a main factor in pursuing an Art degree. While I didn’t end up going in that direction, my interest in game design and art has persisted, resulting in me purchasing many games over the years.
But the amount of time I spend playing games has dropped dramatically, with a year or more going by without removing a single game from my backlog. Since I still value the art of game creation, I needed a new approach to stay engaged and deepen my experience playing. Up to this point I had been using a spreadsheet to track what I owned, but I really wanted something that was visual and more comprehensive, and ideally prompting more reflection on what was effective or not in a game experience.
One main inspiration was the website “Letterboxd”, which has a nice balance of visual pop with a card-based interface, expansive but not overwhelming information on the film and staff, and its review and rating structure allows deeper reflection. A program with similar appeal but without needing another log-in, and with more of a focus on understanding your particular taste in games felt right.
Lastly, I’ve started working on actually creating a game of my own as a hobby. To achieve that goal it would be useful to analyze the games I play, and incorporate what I learn into future creations. Having a tool that let me better choose what to spend my limited time on would pay dividends, and could lead to novel influences I might not have had otherwise.
Initial plans
Before putting in significant work on something it’s usually best to consider what you want to accomplish and how you can achieve that goal. For this project I made a page in my note-taking app where I listed the over-arching outcomes I wanted to achieve, quoted here:
What do I want this program to do?
- help you understand what you have in your backlog
- help you prioritize and finish the games you want to play
- help you better understand what you like about the games you’ve completed so you can enjoy them better, and find others that match
Followed by a section on how to reach those goals, things like: reporting on the backlog, randomly choosing an entry for you, prioritization features, encouragement to complete unfinished games, etc. Just as important as knowing your end-goal is knowing what you don’t want - so I made a brief list of things that were out of scope, like connecting the library to a users Steam library.
That was enough to get started, but as things progressed I made a rough project plan going from an initial database setup through creating the interface and adding extras like animations. Followed by more detailed checklists for handling API use and the interface, with bugs or other issues tracked separately when I got further along.
After a while I moved most of my tracking to Jira, and their Kanban board view. At this point all of the core functions I wanted are there, though ideas for improvements never stop.
What can the program do now?
- Has a cache of the ~10,000 most popular games on IGDB, created using a custom popularity ranking
- (Re)make your own cache, optionally with your own popularity ranking (uses your API key)
- Search IGDB or the cache by name to add new games - displays some information for each result including its cover image
- Asks to automatically download any related games information to your library
- Add complete listings from scratch, without going to the cache or the Internet, with provided generic cover art
- Card interface for games in the users backlog - focused on cover, title and user interest rating with additional details in a tool-tip overlay
- Display detailed information for each game, with user ratings/notes editable at any time
- Edit or delete any existing game
- Track your: game status, time played, interest and expected difficulty, plus notes for yourself per game
- Search by almost any field, and sort displayed entries
- Navigate directly from an “Expansion” to the “Parent” game or vice versa from the details view
- Picks a random game (if you can’t choose)
- Graphs a range of information in the backlog, like: genre breakdown, times across games, your rating vs public ratings, etc.
I still have a few issues I want to tackle
Make an executable: so someone with very low/no Python knowledge can download and run the program, on all of the main platforms. This is somewhat difficult for Python programs in general, especially ones which bundle extra files like the cache or placeholder cover images.
Visual flair: I want to add themes and animations to make it more visually appealing, with optional background images and such.
Expand reporting: most of the data is text, I need explore ways to distill that into visual reports beyond just word-clouds.
What’s next?
In the next post I’ll cover the APIs I looked at, and what sort of information I decided to track.
-
API stands for Application Programming Interface - this is a way for different programs or different computers to communicate with each other. You can think of it like if one program/computer tells the other that it can only speak Language X, then it’s up to you so talk to it in a way it understands. ↩︎
-
GUI stands for Graphical User Interface - this is what you interact with any time you use a smartphone, or virtually all modern computers ↩︎
-
These are standard formats used very widely, the details won’t matter for our discussion; the important part is that your information should be easy to get and control. ↩︎