rManager banner

rManager

16 devlogs
30h 26m 35s

rManager is an online tool made for Roblox developers to help them in their DevOPS workflows. It features things like scheduled game releases, rollbacks, automated scripts etc…

This project uses AI

I get help from Gemini to validate my infrastructure decision and check for major bugs before commit. But all code is made by me :)

valartcode

After longer than I expected, I finally implemented the Roblox API key linking logic. Ive had too many ideas for this one 😅. I discovered that Roblox allowed you to introspect keys (retrieving their permissions, and metadata such as expiration date, creator ID etc…), so the dashboard can display some useful data! Now I can begin working on the project creation, which is basically the core part of the website!!!

Attachment
Attachment
Attachment
Attachment
0
valartcode

Now you can link Roblox API keys to your teams! When creating a project, you will be asked what API key it should use. You will be able to set API key overrides for each project environment after V1 release. Roblox Credentials can be created, deleted, renamed and rotated. Now I have to make the project service!

Attachment
Attachment
Attachment
Attachment
Attachment
0
valartcode

I successfully merged the team creation pull request. Github Copilot made an automatic review of my PR and found some typos and inconsistencies in my code that I fixed. Now I must make the project service and integrate it to the teams page. I should also introduce some limits so people avoid spamming my DB while trying to stay generous and make this a free-first tool, but maybe I could make a paid plan for big teams for like 5 bucks a month to have higher limits and support me?

Attachment
0
valartcode

I moved the database linking feature from user scope to team scope, so databases are team owned. Users of a team (>= admin) will be able to link databases to their teams to store their .RBXM deployment files. When creating the project, the user will assign it a database.

Attachment
Attachment
Attachment
Attachment
0
valartcode

I created the team settings page and implemented team deletion. I began working on the reauthentication dialog because team deletion needed reauthentication, but it’s really annoying to implement and the UX was not that great so I removed sudo mode and instead ask for a confirmation input (team name basically) (see screenshots). The button correctly disables if the user doesn’t have the right to delete the team (not relying on that obviously to confirm if user can delete the team)

Attachment
Attachment
Attachment
0
valartcode

I created the members tab in the team page. Members managment is not implemented yet since collaboration will come later on I think. For the V1 it’s not a priority

Attachment
0
valartcode

I did a lot of refactoring, created types for the team service and team controller and team hooks to use. Nothing really changed visually but now it’s cleaner ig and now it will be easy to call backend functions.

Attachment
Attachment
Attachment
0
valartcode

I created the sidebar for the teams page. Im experimenting on some theme stuff and I think I should get a new theme 🤔

Attachment
0
valartcode

Let’s goo!! I implemented the leave team button, and made a hook that resolves the current team based on the link, so in the components I just have to run useTeam() and I get the team data and tons of helper functions like isLoading or isFetching!!

Attachment
0
valartcode

I implemented team creation logic. You can now create teams 🎉! Now I have to implement the leave team button and then create the team page

Attachment
Attachment
0
valartcode

Created the teams data table UI using some mock data. Now I have to hook up the data table to the actual backend and create the team creation form.

Attachment
Attachment
0
valartcode

I created the API routes to cover all of the TeamService methods. Now I must make the frontend and reauthentication logic for methods that requires sudo mode

Attachment
0
valartcode

Created integration tests for TeamService! Im happy knowing I saved a 10 minute task by spending 4 hours automating it x) I didn’t know making tests was that long tbh

Attachment
0
valartcode

Finally!! Vitest works! It basically creates a test.db file, sync it with the current schema using drizzle-kit push command, and mock the database accross all files. Im beiginning to write integration tests for the TeamService and so far it works well!

Attachment
0
valartcode

I assigned team roles (owner, admin, developer, viewer) a rank number for cleaner permission checks like compare the actor rank and the target rank to know if the actor has the rights to manage the target member, or assign a minimum rank number to functions. If later on I decide to add new ranks, it will not have to re-write every rank check. Now I must create tests for the TeamService to ensure it works properly and it doesn’t have security flaws (using something like Vitest)

Attachment
0
valartcode

Added some more features in my team buisness logic, such as role management, team renaming and ownership transfer. I also added a sudo-mode check method in my auth-utils file to be used later when creating API routes for my buisness logic to require the user to re-authenticate on critical actions such as team deletion or ownership transfer.

Attachment
Attachment
Attachment
0