Melty Colors Dev Diary - Part 1

I am building Melty Colors, a custom colors database for the fightning game game Melty Blood Type Lumina (releasing at the end of the week). Based on this tweet, we’ll be able to create custom colors for characters. I’ve seen this feature in other games before, and usually a lot of people don’t really use it because it’s a bit complicated to come up with a satisfying color. On the other hand, a lot of people are pretty good at this, so the idea is to give them a place to showcase their skills.

Requirements

This is gonna be a pretty simple site. As far as I can see, the MVP only needs to allow people to browse the colors and submit them. A color is (as I’ve gathered from the tweet), just a series of 6 numbers ranging from 1 to 10 (the preset colors we can use, for the 6 customization slots). So my database will only have two models, one for the colors and one for the characters (holding the name and a picture of the character, to have a nice homepage).

There’s no need for huge interactivity : just filtering and form validation (actually I’ll probably need some kind of file upload mechanism too).

Since this is a small unprofitable side project, I want to host it on something free, the two choices I see at the moment are the free Compute Engine instance from Google Cloud, and the surprisingly big ARM based VPS offered by Oracle. Since I’m not sure the free tiers for these will stay the same, and I might also want to be able to host other stuff on these, I’m aiming for something light (or that can be made light, more on that later).

Last but not least, I don’t want this project to take forever (the game releases very soon), so I want to leverage my current knowledge as best as I can.

Based on all this, this is the stack I’m looking at for the moment (I haven’t actually written code yet).

The stack

To make it quick, I already know Java and i’m comfortable with SQL. This backend is made of lightweight stuff (compared to going the spring boot+Hibernate route) which will probably be enough for my needs. As far as I can tell, Javalin doesn’t use a lot of reflection and I don’t plan on using a DI framework, so this stack might be able to compile to native code using GraalVM (making it lighter memory wise). While I’m new to both Javalin and JDBI, they seem small enough that it will be quick to learn.

The frontend is a bit different and not a stack i’m used to. The idea here is to send html rendered by jte (a seemingly fast template engine) over the wire, use it through htmx, and adding small interactions with alpine.js. I’m quite interested in that approach and it seems to be a good fit for a small project so this is where i’m going. TailwindCSS is something i’ve used before (on this site) and I’m very satsified with it. I’m a bit concerned about the tree-shaking/minifying build step needed to use it, but I’m curious if it can integrate with java build tools (I’ll probably use maven as i’m more used to it).

To finish, it is important to note that this is all subject to change (even the project name) and I want to be flexible with the tools I use.

Conclusion

So this is it, I’m off to download Intellij IDEA as I actually haven’t coded Java on this computer before (despite using it at work). Wish me luck!