PlayVessel.

July 2023 - October 2024

Gaming backlog tracker. Sort games into categories to chip through the dreaded gaming backlog!

PlayVessel Cover Image

About.

PlayVessel is a gaming backlog tracker that I created to solve an issue I was having with my other hobby, video games, I own a lot of games and I buy them faster than I can play them, so I created this to help me organize them and play through them quicker! It totally worked, rather than just playing the video games more, I started another big project :). In all seriousness though, it has helped me a lot, and I'm very proud of it.

Challenges.

PlayVessel has been my most complex and daunting project to date, and over the year I've worked on it so far I have had many challenges. The first notable one was the fact that I started working on it in just plain React and Vite, on the client-side, which naturally as the site got bigger and bigger, led to just incredibly slow performance. PlayVessel was the reason I started learning server-side rendering, and started using Remix.run which I have grown to LOVE.

Another massive challenge I dealt with was the IGDB API, not because it's bad, but because of the amount of data that becomes available to you, my game data ingest system went through revision after revision, overhaul after overhaul, seeing massive speed boosts seconds at a time. I learned a lot about concurrency and data manipulation as well as efficiently database operations.

Aftermath.

After working on PlayVessel for a year now as of writing I can confidently say that it's been my best work that I've ever done. I learned so much not just through coding the thing, but how to manage a website efficiently as well as servers and CDNs and using the resources given effectively. While PlayVessel may have not been a big success, it did get some users and that's awesome. Ultimately it didn't make sense to keep running with no revenue and I ended up sunsetting it. It was a good learning project and it absolutely will lead to bigger and brighter things moving forward.

Update!:

Good news! PlayVessel is currently undergoing a full rewrite in Typescript. The original version while I'm still very proud of it, was not very good, it became a test bed for my skills and as such as more features were added it made the entire codebase much harder to maintain. Furthermore the performance was awful and it was hard to keep working on it as it felt like a chore. Hence the rewrite! The new version is using everything I've learned from both the original version and websites and projects I worked on after I sunset PlayVessel. Being rewritten in Typescript the codebase is much more organised and cleaner. Being designed from the ground up to make it easier to maintain and scale in the future. Performance has also been a big design consideration in the rewrite and so far I'm very happy with the results. The rewrite is using fun new tools such as React Router v7 which is basically just Remix renamed, Drizzle-ORM making database operations much easier and more efficient. Finally the rewrite has also undergone a massive change in architecture moving away from traditional servers, which are difficult to maintain, to a serverless microservice architecture using Cloudflare's global network. Smaller parts of the backend such as the email sending and queuing service have been completely seperated from the backend and moved to it's own microservice, allowing emails to be completely isolated from the rest of the backend. Similarly the game data ingestion and update service, including all the data processing and webhooks have also been moved to their own microservice, allowing the game data ingestion and update service to be completely isolated from the rest of the backend meaning if the backend goes down the game data should not be affected preventing any possible issues with stale data. The backend, being moved to serverless has also been moved from Express.js to Hono, which claims to be faster than Express.js but I have no tested that claim yet. The frontend while not complete as most of the work has been on the backend, is also being heavily refactored to improve the UX of the site, making designs cleaner and including animations and various status messages and notifications to hopefully make the site more user friendly. Overally I'm happy with the progress so far and I'm hoping to have a finished version complete by the end of March.

Media.

Profile Home

Profile Home

Profile Backlog

Profile Backlog

Game Detail Page (IMG1)

Game Detail Page

Game Detail Page (IMG2)

Game Detail Page (Cont.)

Settings Home

Settings Home

Privacy Disclosure

Privacy Disclosure

About Page

About Page

External Link Protection Page (ELP)

External Link Protection Page (ELP)

Footer

Footer

Instatus Status Page

Instatus Status Page