[YOU CAN ACTUALLY USE THIS TO PLAY MINECRAFT RIGHT NOW! THERE IS NO FAKE BACKEND LIKE MOST PROJECTS HAVE]
[this is mostly a backend project, and i spent most of my time writing that. there is a bunch of things that are in the backend, but not frontend]
A Minecraft server management platform written in Rust and a Vue frontend (although the API is frontend agnostic).
It supports multiple Users, with each having their own limits on how many worlds they can have, and resources they can use.
tathya is aweomse
Check their projects out: Pokemon FRLG, Ferox, Intoxicode, diddler.party, Grow a Business
Youssef
Check their project out: ReeTui
Henry Veedahl
Check their projects out: Middleton Tech Club Website, Canvas, The Board, Personal Site
Laura
Check their project out: Wilderlands
Once you ship this you can't edit the description of the project, but you'll be able to add more devlogs and re-ship it as you add new features!
I've added a profile page, which displays user info, as well as their limits
Made the UI more responsive
Added a console placeholder
some other minor improvements
Did a bunch of things:
<br>
Switched my minecraft proxy from Velocity to Infrarust. this gives better compatibility and performance
<br>
Added recursive queries: instead of querying for the world, getting the version id, querying the version, getting the loader id, and finally querying the loader, the backend can recursively query values, and return all of them at once
<br>
Improved caching
Implemented the server.properties editing in the frontend, together with limits on what users can edit. the server admin can configure the values users can edit, as well as limit the values they set (all enforced server-side of course). In the video, on the left there is a user with almost no restrictions to editing, and on the right is a standard user with default restrictions.
There was also a bug where only one operation on any world could be performed at the same time, meaning if user was to delete a world, which takes around 10 seconds, other requests trying to get the status of any other world would have to wait for that deletion to finish. this is now fixed.
Ah also scrolling and toasts are broken on chromium no idea why
Heyy i think i'm starting to get the hang of this. Now you can create and start a server all from a UI
(in the video @0:40 you can skip to 1:00)
- Improved the world creation screen
- Implemented proper world images (no uploads done in the frontend yet)
- New /world/{id} page
- World option editing
- World starting/stopping
- Some minor backend changes
Spent like 4 hours trying to get shadcn to work
added the world creation screen, world list and a theme switcher
- Migrated from warp
to axum
(suspiciously painless)
- Added icon uploading and downloading in the backend (with support for animated icons!)
- Sessions, users and groups are now cached
Added a registration screen
* the registrations screen varies based on server settings (whether it requires an invite link or not), it can also include a custom message (which i forgot to include in the video).
* invite link is checked before account creation, and locks the form if it is invalid (through a public API endpoint)
* Redid the input forms
* added input validation
* the app checks if the username is taken (through a public API endpoint)
* Improved styling and made the app fit mobile screens
Started working on the front-end. i have settled on Vue, as i couldn't find a decent way of fetching data from the API when not pre-rendering the page in SvelteKit
Now the sqlx
-based code actually works. i mostly rewrote the database code to utilize a custom query builder
as a side effect, query filters now work better, and allow for < and > operands, as well as dates and base64 encoded blobs (haven't tested this one). they now also actually validate the filter data
Switched the database library from rusqlite
to sqlx
Lost my sanity
The code still doesn't work
GIF unrelated
Added the feature of account creation using an invite link. this marks the API being fully implemented, which means i can start working on the frontend now.
oh also now removing users actually removes all of their worlds and mods
Now when the backend server is first launched, it will initialize the folder structure, prompt the user for the username and password of the default admin account, and then download the latest version of velocity
I have also revamped the permission system. Now instead of the permissions being stored per-user, users are assigned to a group, which holds their permissions. this makes managing large amounts much easier
Now the Minecraft servers themselves can be hosted on a separate machine from the API server.
This is an important stepping stone towards hosting containerized Minecraft servers with Kubernetes
updates:
* changed like 1/3 of the codebase to be asynchronous
* lost my mind
* remote server still doesn't work
* @channel i may be going insane
I've made the velocity proxy traffic to the correct server based on the hostname, and:
* added server.properties editing
* improved app config handling