You are browsing as a guest. Sign up (or log in) to start making projects!

stefdp

@stefdp

Joined May 31st, 2026

  • 31Devlogs
  • 5Projects
  • 2Ships
  • 15Votes
idk, I just do stuff, also check out my website: https://stefdp.com !
Ship Pending review

To use the app please read the `README`'s "Stardance Demo" section, I explained there how to get it to run.

I made a GitHub action to restart your Pterodactyl Panel server, during Stardance I added the ability to run commands or a delay before the server is restarted (or both).
It wasn't really hard as I just make multiple HTTP requests and I know the Pterodactyl API quite well since I'm also making an android app for it.

I made this action mainly for the Minecraft server of a friend, so the server automatically restarts when we add a new mod in the packwiz config on git but this can actually be used by anyone with a server, no matter what they're running (as long as their user has the permission to restart the server)

  • 2 devlogs
  • 2h
Try project → See source code →
Open comments for this post

56m 28s logged

  • Added the option to run a command before the server restarts
  • Added the option to add a delay before the server restarts (useful with the command as the API doesn’t say when the cmd has finished running)
  • Added the README
0
0
3
Open comments for this post

5h 27m 46s logged

  • Started making the users tab but it’s really WIP, none of the buttons except create new user works)
  • Handled subuser permissions for all current tabs
  • Added a LabeledCheckbox component
  • Removed some function params that were pointless to have
  • Installed the Gravatar SDK for the subusers’ avatar

I legit think Android Studio is ragebaiting me, as soon as i start the rec the app starts to lag, when i stop the rec it’s fine

0
0
3
Open comments for this post

3h 46m 12s logged

  • Finished handling buttons in the schedules tab & created all the popups for schedule & tasks management
  • In all screens & tab now all the inputs, switches, selects etc. are disabled when loading or making a HTTP request (like delete schedule, update file name etc.)
  • Added a function to convert ISO date strings in human-readable strings
  • Added a missing endpoint to execute a schedule
  • Added a missing only_when_online property in the ServerSchedule data class
  • Fixed schedule & tasks endpoint types (was using String instead of Long for the IDs)
  • Fixed ScrollableTabRow not using all the horizontal space when in landscape mode
0
0
3
Open comments for this post

2h 31m 27s logged

  • Finished the UI side of the schedule details popup (still WIP for backend like button handling)
  • Moved each popup into its own folder & file to avoid having many long Popup calls at the top of screen/tab files
  • Changed task action from a normal screen to an enum
  • Took the formatDate function from my Zipline app
0
0
3
Open comments for this post

4h 13m 27s logged

  • Created the schedules tab for the server screen (still WIP, for now only works for displaying & creating schedules, gotta add edit, deletion and task management)
  • Moved each tab to its own ViewModel for better ordering instead of putting everything is a generic one
  • Improved code layout by using returns in some places instead of many if else blocks
  • Fixed ScrollableTabRow component improperly placing icons when there was no text
  • Moved ‘linked’ data classes inside each other so i can do Server.Attributes.Limits instead of having a class with a long name like ApplicationServerAttributesLimits
0
0
5
Open comments for this post

5h 37m 54s logged

  • Updated the file edit screen to use VSCode’s Dark+ theme colors for highlighting and added Java and CASM/Crawssembly by @The_Craw
  • Added the databases tab with handling for creation, deletion and rotation of the password
  • Fixed rotateServerDatabasePassword and deleteServerDatabase, they were using the wrong endpoint (/server instead of /servers)
  • Made each tab independently scrollable instead of making the parent component scrollable
  • Took the IconButton component from my Zipline app and slightly modified it (the MoreActionsButton component now uses that)
  • Changed the Notification object component’s background color
1
0
5
Open comments for this post

2h 7m 29s logged

  • FInished file handling (handled edit & save files & create new file)
  • Added file highlighting for .env files
  • Fixed writeServerFile having a wrong Content-Type (it had application/json instead of text/plain since the input is a raw string)
  • Fixed HTML syntax highlighting, it wasn’t highlighting the > part of the tag
0
0
5
Open comments for this post

2h 38m 42s logged

  • Added a screen for code editing with simple syntax highlighting (via a newly installed library) and a warning if you try to leave without saving
    (that’s still WIP, saving isn’t implemented yet and neither reading the content of the selected file)
  • Updated the TextInput component to have a fontFamily property so that in the core editor i can set the text to be monospace
  • On the login screen i disabled the application api key input till the admin side is actually done
0
0
6
Open comments for this post

4h 26m 5s logged

(Sorry for the slightly laggy video, not sure if it’s cuz it’s via a emulator or cuz i compressed the video from 136 MiB down to 36 MB)

  • In the server screen added the handling for download, upload, delete, copy, create folder, rename/move, change permissions, archive & unarchive
  • Filled the File component’s “more actions” menu (before it was empty)
  • Updated uploadServerFiles to be able to upload multiple files at once
  • Added a function to convert linux string permissions (like drwxr-xr-x) to int/octal (like 755)
  • Added a regex for the linux int/octal permission
  • Took the Popup component and Storage object form my Zipline app
  • Updated the SecureStorage class to add the file download folder variable
0
0
6
Open comments for this post

2h 9m 47s logged

  • Created the Files tab in the server screen (still WIP, most of the buttons do nothing rn)
  • Created a File component to avoid repeating same code
  • Added a new color surfaceContainer used in notifications
  • Took the “More Actions” component from my Zipline app
  • Took the “Checkbox” component from my Zipline app and modified it to be toggleable
  • In server screen disable global scroll on certain tabs as they’d cause the app to crash for infinite scroll
  • moved the WebSocket connection to the Console tab instead of the general server screen, this way it auto reconnects when the user switches back to the console tab (since it disconnects when the user moves to another tab to save resources)
0
0
4
Open comments for this post

3h 30m 25s logged

  • Added charts to the console tab of the server screen
  • Added a top scrollbar like ptero’s to the server screen and moved the console stuff to its own file for better sorting
  • Created a component for the chart container & top scrollbar to avoid repetition
  • Added AI declaration in the readme cuz i only found out now that it’s required
  • Removed a double new line the Button component
0
0
4
Open comments for this post

3h 25m 48s logged

  • Created the server screen and right now i only made the console section out of all the ones i gotta do (console, files, databases, schedules, users, backups, network, startup, settings & activity)
    The server screen itself is WIP as it’s missing the buttons to switch between the sections
    The console tab is also WIP as i haven’t done the line charts for CPU, RAM & Network I/O)
    (devlogging with this stuff half-made cuz it’s almost 3AM so i gotta sleep :heavysob: )
  • Took the formatMs function from my zipline app to convert ms to human readable time like “1h 30m 20s” for the server uptime
  • In the WebSocketManager class renamed the setPowerState function to sendPowerSignal as it makes more sense

On the console screen i wanted the console to follow its actual colors but only lib i found to do that doesn’t support jetpack compose that well so i had to rely on the XML’s TextView (but in compose thanks to the AndroidView component)

0
0
1
Open comments for this post

2h 57m 48s logged

  • Fixed websocket not working (apparently it 403’s unless you put the panel URL as Origin header)
  • Added pagination to the servers screen and also made the server load lazily and get unrendered when out of the display
    Also suspended servers’ names now are grayed out
  • Installed a ANSI parser library to correctly color console output (hopefully it works however they already said it won’t work for outline 😭)
  • Took the scrollbar modifiers from my Zipline app and put a scrollbar in the servers list
  • Created a object to easily access the WebSocketManager from a ViewModel class

Currently working on the specific server page, right now it’s empty but i got websocket working, i’ll push it once it’s finished

0
0
5
Open comments for this post

3h 58m 25s logged

  • Added the UI for the client servers list screen (still gotta finish it tho, just have to add pagination and will only shows 10 servers per page to avoid getting ratelimited as i have to make a separate HTTP request for each server to get their resources usage)
  • Added pterodactyl panel colors to be used in the server status (red, green and yellow)
  • Fixed listServers not working cuz of wrong path (i didn’t know how to tell retrofit to use just the baseUrl, then after it threw an error i googled it and realized i just had to put .)
  • Updated getServerResources response class, now the server state uses a enum instead of a generic string
  • Updated Server class to better fix some typed and add 1 missing key
  • Added the uploadServerFile HTTP method (i didn’t do i it initially cuz the docs were confusing and i couldn’t understand how to select the upload directory, turns out i was setting the directory query on the request to get the signed url instead of the signed url itself 😭
  • Improved login process to handle the case when the user logged with just an application api key and not a client one
  • Added application API key validation for the same reason as the login
  • Took shimmerable modifier from my Zipline app to make skeleton loading
  • Added definitions & placeholders for all screens until i make them
0
0
4
Open comments for this post

2h 52m 9s logged

  • Created Loading and Login Screen
  • After making a HTTP request the app crashed and only then i realized that i didn’t make the HTTP request suspend functions so i fixed it
  • Took the Notification object from my Zipline app, tho i gotta fix it a bit cuz the color is kinda ugly and i still don’t know which one in the palette to use cuz imo none of them fits, maybe i’ll just use a separate color out of the palette for it
  • Updated the TextInput component to add a optional required field which when set to true adds a red * next to the label, might do this with switches too
  • I took some common regex (domain, IPv4, number and decimal) since i might need them later and some of them (domain & IPv4) are also aready used in the login
0
0
3
Open comments for this post

2h 53m 27s logged

  • Finished creating the methods to call the client API (same as application ones, copy pasted same code and changed method & function vars)
    (except for the download* ones, i took those from my other app Zipline)
  • I also took the Transfer Service from my Zipline app
  • Updated all the libraries
  • Set target SDK to 37 (Android 17)

now i gotta do the frontend part

0
0
5
Loading more…

Followers

Loading…