stardance has been extended another month! the new deadline is october 31 :)

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

stefdp

@stefdp

Joined May 31st, 2026

  • 92Devlogs
  • 7Projects
  • 6Ships
  • 99Votes
idk, I just do stuff, also check out my website: https://stefdp.com !
Ship Pending review

The main things i did were switching to Hackatime OAuth2 (earlier people were just pasting their API key in a password text input) and added the leaderboard tab.

Most challenging part was the OAuth2 since this was my first time implementing OAuth2 in an Android app

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

4h 50m 17s logged

  • Fixed auth middleware (it was using an invalid SQL query)
  • in GET /api/email/request the token is now URL decoded before it’s used
  • Updated POST /api/login to return a 204 instead of redirection
  • Added pending email database keys for the users who are changing their mail
  • Created the POST /api/verify-email endpoint to verify the mail (either at register or update mail)
  • Added Password4J config file and set a salt length of 64
  • Created the notes table and the sharing codes table
  • fixed Thymeleaf using wrong paths for frontend file locations
  • Created the POST /api/account/update-email endpoint to let users change their mail
  • Created the GET /api/notes endpoint to let the user see the notes he has access to
  • Created the POST /api/notes endpoint to let the user create a note under his user
  • Created the GET /api/notes/{noteId} endpoint to get the data of a specific note (if the user has access to it)
  • Created the DELETE /api/notes/{noteId} endpoint to let a user delete his own notes (not the ones made by other even if he has access to them)
  • Created the POST /api/notes/{noteId}/join endpoint to let a user join a note via its sharing code
  • Created the POST /api/notes/{noteId}/share endpoint to create a sharing code for the note (each code is one-time use only)
  • Created the DELETE /api/notes/{noteId}/share endpoint to delete a sharing code for the note (note owner only)
  • Created the POST /api/notes/{noteId}/leave endpoint to let a user leave a note on its own
  • Created the POST /api/notes/{noteId}/kick endpoint to let the note owner kick someone from the note
  • Created a util function to validate a string for all common password requirements (min 8 chars, a number, a uppercase letter, a lowercase letter and a special character)
  • Created a job to clear pending mails that haven’t been verified in over 10 mins
  • Fixed route patterns, when inside a route("/...") { ... } i was using get("/") { ... } instead of get { ... } and this caused the base route to not exist (like /api/route) but only the one with trailing slash (like /api/route/)

once again no frontend yet so here’s some of the code

0
0
14
Open comments for this post

3h 55m 18s logged

  • Installed a lib to hash & salt user passwords
  • Moved all routes to a routes folder
  • Update verification data in the DB schema
  • Created a PublicDatabaseUser data class that doesn’t contain sensitive info such as password
  • Created a util Crypto object to hash & salt strings
  • Updated the verification mail template
  • Fixed Email class not seeing the template file
  • Email verification endpoint now shows a proper html page (html not made yet tho)
  • All routes now include their method in the file and function name
  • Created the following endpoints:
    • GET /api/request-email
    • POST /api/login
    • GET /api/account
    • PATCH /api/account
    • DELETE /api/account

None of those changes have been tested yet


once again no frontend yet so just code screenshots

0
0
11
Open comments for this post

5h 28m 8s logged

  • Initialized the app by taking & modifying some stuff from my other apps (mainly the userApps discord bot) (EnvVariable enum, Random object, build process w/ tailwind & envs setup, middlewares, AppDatabase object)
  • Created a routes skeleton to show how it will look approximately
  • Created the API endpoint to register
  • Created the API endpoint to logout
  • Added an Email class used to validate emails, check for duplicates and send the verification code
  • Added a job that every 5 minutes checks for users that have not verified their mail and if they haven’t verified in 10 mins, their account is deleted
  • Installed a library to send emails

there’s no frontend yet so i’ll show some of the API routes skeletons

0
0
11
Open comments for this post

5h 22m 47s logged

  • Created the /help command: list all the commands of get info about a specific one
  • Temporarily took the old dashboard and adapted it to the new framework (the html side is gonna get remade by a friend, orangc)
  • Removed some unused envs
  • Added TailwindCSS compiling at startup soit can be used in the dashboard
0
0
18
Open comments for this post

5h 54m 40s logged

  • Created the /uptime command: display how long the bot has been online for
  • Created the /lyrics command: get the lyrics of a song (uses lrclib.net, lrcmux and lyricsOVH as sources)
  • Fixed /define command failing when there were too many definitions (was going over the 40 components limit)
  • Created the main README file
  • Added ownerOnly property to commands, so when they’re first added to the db, it sets the list of owners in the OWNERS env as allowed users
  • Added attachment options to the /embed command (for some reasons they’re added correctly but image and thumbnail don’t display while footer and author do)
0
0
15
Open comments for this post

4h 17m 42s logged

  • Created the /ubdict command: get the definition of a term from the urban dictionary
  • Created the /wikipedia command: get an article from wikipedia
  • Created the /fact command: get a random fact
  • Created the /joke command: get a random joke
  • Added a util function to split strings in group of approximately X character, but instead of cutting the text at exactly X characters, it cuts at the next end of a sentence after X characters, this way a sentence is never cut in half during pagination (currently only place where it’s used, aka /wikipedia command)
  • Added the User-Agent header to all the HTTP requests
  • Updated HttpLoggingInterceptor to use the correct logger class
0
0
38
Open comments for this post

2h 57m logged

  • Created the /define command: get the definition of a word
  • Updated the /steam game command to use components v2, and also a button to show the full game description if the detailed mode is too long to fit
  • Switched some places from if (xxx) { ... } else { null } to xxx?.let { ... }
0
0
14
Open comments for this post

7h 46m 54s logged

  • Created the Get User Banner command (user): …what the name says
  • Created the /github command (slash): get info about a GH user, repo or issue/PR
  • Created the /weather command (slash): get the current weather of a specific place
  • /steam game now uses buildString {} instead of adding to a array, then joining and merging it with another string
0
0
11
Open comments for this post

6h 31m 32s logged

  • Created the /steam command (slash): get info about a Steam game (optional detailed mode) or user
  • Created the /translate command (slash): convert any text from a language to another (about 131 languages available)
  • Installed the MS Azure SDK for the /translate (slash) & Translate Message (message) commands
  • Updated file layout for the dashboard so it looks better
  • Updated API services file layout too
  • Updated Kotlin from 2.4.10 to 2.4.20 and other libs
0
0
21
Open comments for this post

4h 30m 59s logged

  • Running a command now increases its uses value is the anonymous analytics table
  • Added new env variables and improved the system used to throw errors so it always kills all the processes when calling require
  • Created the dashboard ratelimits, sessions, auth middlewares/systems
  • Created the Discord OAuth2 login
  • Moved kord into a Bot object so it can be used in the dashboard too if needed
  • Created a listener for the discord webhook (stuff like bot authorized, bot deauthorized etc.) [UNTESTED]
  • Created a util function to get the bot’s invite url
  • Created API services for the discord OAuth2 token requesting and apprise API

There’s not much frontend / UI change so ima show a pic of the dash module code ig

0
0
29
Open comments for this post

5h 49m 44s logged

  • Created the /export command (slash): send the file path and export it (as well as give the file’s github url (owner only)
  • Created the Save as Tag command (message): save a message as tag, both embeds & content
  • Created the Convert to QR Code command (message): convert a message’s content to a QR code (either as image or text)
  • Created the Download Voice Message command (message): as the name says, download as MP3 a user’s voice message
  • Created the Set as Reminder command (message): set a user’s message (either content or URL) as a reminder
  • Created the Get Message JSON command (message): get the JSON object of the message
  • Created the Get Member Avatar command (user): get the server specific avatar of the user
  • Created the Get User Avatar command (user): get the global avatar of the user
  • Created the Get User Avatar Decoration command (user): get the avatar decoration of the user
  • Created the Get Member JSON command (user): get the JSON object of the member
  • Created the Get User JSON command (user): get the JSON object of the user
  • Environment variables are now loaded at startup via a gradle task
  • Added a LOG_LEVEL env to choose the level of the console output to show
  • Created a util function for plurals
  • Set tag name limit to 255 chars
0
0
75
Open comments for this post

7h 8m logged

  • Added the /tag command: save preset messages that you can then send later (they can also contain embeds)
    it has the following subcommands:
  • content: set or remove the content of a tag
  • embed: add or remove an embed from a tag
  • delete: delete a tag
  • export: export all your tags as a JSON file
  • import: import the JSON file obtained from the export subcommand (in case of conflicts, the old and new tag will be previeable in the bot dashboard if enabled)
  • list: Display all your subcommands
  • get: Get the content & embeds of a specific subcommand
  • Fixed/Impoved the /embed command button & modal handlers & added an ID to buttons & modals to avoid 2 diff commands handling the same interaction
0
0
72
Open comments for this post

5h 34m 59s logged

  • Created the /gary command: get random images of 4 cats: Gary, Goober, Gulliber (Gully) and Garfield
  • Created the /ping command: get the bot’s ping (pic has high ping cuz it’s running on my laptop, in Italy)
  • Created the /botavatar command: change the bot avatar, either from a file, URL, copy from an user or copy from the bot owner
  • Created the /colorpicker command: give an HEX, RGB or HSL color and it displays it as well as showing its HEX, RGB and HSL variants
  • Added the /reminders command: set a reminder and the bot will send you a DM, reminder can either be single-run, multi-run and inifinitely run (the user defines an interval such as 30m, 2d15h etc., then the bot will send a DM with the reminder after this interval and will repeat it how many times the user defined it to, so if an user defines a reminder with 2h interval and 3 repeats, it will send the same reminder in 2h, 4h and 6h) (hope i explained well :pf: )
  • Switched database initialization from SchemaUtils to MigrationUtils this way if i edit a scheme, it’s also applied at startup instead of just creating new tables and never modifying them
  • Made the dashboard disableable
0
0
17
Open comments for this post

6h 31m 19s logged

  • Created the /minecraft command: allows to fetch
  1. Java and Bedrock edition server data (with mcstatus.io API)
  2. Player info (with Starlight API by lunareclipse.studio)
  3. Player skin rendered as a 3D model in different poses (with Starlight API)
  • Created the /embed command: send anything as an embed
  • Created the /qr command: encode some text into a QR Code (output can be an image or an ASCII text)
  • Updated the dashboard to add a static resource /skinModels which is used for the /minecraft skin sub command to fetch custom made models
  • Added a regex for HEX colors (matches #ffffff, #fff, ffffff and fff)
  • created a Minecraft object to collect all minecraft related functions
  • Created the starlight and mcstatus.io API services & added them in the API client
  • Update main handleRequest function to add an optional error handler
0
0
15
Loading more…

Followers

Loading…