đŸȘš

Cinemus Development Log #2

13/01/2024

Welcome to the second installment of the Cinemus developer log.

If you’re following along from the last installment then welcome back! I made some assumptions about my next steps there that may or may not have been correct, let’s dive into it.

No one can predict the future, least of all economists me

Remember how I was writing about how I was writing about how my tech had previously slowed and forced me into a making a complete rewrite using the T3 stack? Well history has a way of repeating itself.

This time my rewrite wasn’t completely tech driven, only partially. I had recieved some feedback that while the app was useful, it was not very user friendly. Authentication would often take a long time, the UI wasn’t very intuitive and there were too many user interactions required to actually search for something and find where to watch it. This was great feedback and I agreed wholeheartedly with it. I had approached many aspects of the app with the intention of learning a new tech and this lead to me making an over-engineered user experience.

This happened to coincide with me starting to grow bored of React and their paradigm of making applications. I decided once again to do a complete rewrite, however this time I would be focusing on making the user’s journey through the app as streamlined as possible. I still wanted to tinker with and learn new tech along the way, but I had to exercise discipline in where that would impact the user. So I went back to the drawing board and thought about what exactly I want this app to do.

My tech is a pendulum

So begins the rewite, and what tech do I choose?

đŸ„đŸ„đŸ„ Drumroll please đŸ„đŸ„đŸ„

SvelteKit! Again.

It probably comes across quite strange to return to SvelteKit again, but I can justify it!

I did it because I wanted to.

At the end of the day, what’s the reason for building this? To get rich? To build on my React knowledge?

Nope! I want to learn. I want to build an app I can share with my friends. I want a challenge. Now you could say that all of those reasons were fulfilled with the NextJS version, and you would be correct. However, I was growing bored of React. I use React for my job, and that made writing React outside of work feel like a job, and that was quickly draining my enthusiasm for the project.

Starting fresh wasn’t easy, but since I had tackled some of the harder issues in my previous iteration, it meant I could get this new version up and running quite quickly. I used almost the same database schema, the same images and logos, and partnering that with the feedback I had recieved and the planning I had completed on the back of that feedback, I knew exactly what I wanted to build.

Nose to the grindstone

In order to get V2 built, I span up a new deployment alongside the existing one and pointed the v2.cinemus.io subdomain to it. Prior to this, I hadn’t handled my own subdomains, so that was a nice little learning for me.

I had three main goals in my mind:

  1. Make the most useful feature of the app the easiest to use
  2. Make the app’s interface simple, yet sleek
  3. Have fun learning

For the first goal, I asked my users what the most useful part of the app was. The concensus was finding where to stream media. I had to agree with them, this was quite useful and the last design obscured that data too much. I decided to make the homepage the place where you can find media with or without logging in. I wanted this to be available to anyone who uses the site, even if they dont want to create an account.

For the second goal, I decided to follow one of the biggest trends of 2023 and try out shadcn. Their components are great for getting up and running quickly and luckily someone had made a Svelte version of them. Pairing this with the release of V0 from Vercel, I was able to quickly make a basic but appealing UI and wasn’t held back too much by my terrible design skills.

The third goal was the easiest. I knew how to solve many of the annoying issues I had encountered in previous builds and since I was still building in TypeScript, I could copy a bunch of code without any need for changes. I could focus on things that were new to me, like building a little CSS animation for when users marked media as watched. It’s nothing amazing, but I learned a lot and I think it’s cute.

Let’s predict the future again!

Or not.

I don’t want to push myself into an idea I’ll end up regretting (or having to write another blog post about how I can’t stick to a plan). I’m tinkering with the app whenever I feel the drive instead of spending all of my hours outside of work on it. There will be updates over time and I might write about them in another blog post, but at this time the app is functional and I’m satisfied with it.

Who knows where this will end up.