Canvas and Palette

Alright, first post. Well, I'm working on a pretty big project. A custom Minecraft launcher. While there are plenty of alternatives to the official launcher, none of them offer great customization options. Hence, Canvas Launcher.

Canvas will allow modpack developers to include a JSON file for simple skinning and perhaps in the future support for custom HTML and CSS.

There is a lot of features I'd like to include, such as RSS feeds for modpack announcements, allow versioning based on a remote JSON files, and support for Modrinth modpacks. Another major feature is... URIs for simple one-click installation.

The major hurdle is deciding which language to write this in. To allow for custom pages, it kinda restricts me to a web based UI. The major candidate is Wails written in Go. Of course the fallback is Electron in NodeJS.

Wails is looking more appealing as it utilizes your operating system's WebView, which will result in a much smaller binary with no Chromium to deal with. The big issue is that Go doesn't have a library for authenticating with Microsoft, so I'll need to write the whole system myself...

As for what Palette is, think of it like my own version of Technic's Solder. A self-hosted system for delivering updates using hashes to validate which files require updating.

This will definitely be written in Go. Gin is incredibly performant, and Go compiles into machine code for high speed and concurrency. Thankfully, Palette is just a simple REST API, doing CRUD operations on a database, and some basic file management.

I've chosen to not integrate a web interface with Palette, I want it to be as lightweight as possible. I'll probably write a basic program like Solder Packer to interact with the API.

Crucially, I want this entire ecosystem to be self-sustaining and decentralized. I want to be able to put this into the world, and not have to maintain any infrastructure.

I guess we'll see how this goes. It'll definitely be a long road ahead.

This article was updated on November 30, 2024