|
10232
|
Really Cool Slack Bot by @Yonatan1 | Stardance
|
Yonatan1
|
1
|
2.56
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-07T14:53:36Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a 24/7 Slack bot! I set up a cool picture and banner for it, and successfully implemented a cool dog pic command. I’m really proud that it’s working and running smoothly. To test my project, you can try running the dog pic command or the cat fact command in the workspace!", "repo": "https://github.com/Portal15/ReallyCoolSlackBot", "demo": "https://hackclub.enterprise.slack.com/archives/C0B8YB74VB5"}]...
|
[{"post_id": 5120, "ts": "2026 [{"post_id": 5120, "ts": "2026-06-08T20:10:07Z", "hours": 0.2881, "text": "Finally fixed the access to the demo"}, {"post_id": 4811, "ts": "2026-06-08T09:57:21Z", "hours": 0.2722, "text": "FIxed some problems with the demo"}, {"post_id": 4263, "ts": "2026-06-07T14:52:47Z", "hours": 0.36, "text": "Fixed some problems with making it run 24/7 and not its finally working!"}, {"post_id": 4161, "ts": "2026-06-07T11:31:00Z", "hours": 0.3469, "text": "Setting a cool picture and banner for the slack bot"}, {"post_id": 3835, "ts": "2026-06-06T21:51:51Z", "hours": 1.0428, "text": "Its working! and.. I have a cool dog pic command"}]...
|
Title: Really Cool Slack Bot by @Yonatan1 | Starda Title: Really Cool Slack Bot by @Yonatan1 | Stardance
Devlogs:
Its working! and.. I have a cool dog pic command
Setting a cool picture and banner for the slack bot
Fixed some problems with making it run 24/7 and not its finally working!
FIxed some problems with the demo
Finally fixed the access to the demo
Ships:
I made a 24/7 Slack bot! I set up a cool picture and banner for it, and successfully implemented a cool dog pic command. I’m really proud that it’s working and running smoothly. To test my project, you can try running the dog pic command or the cat fact command in the workspace!...
|
1793260256.5131774
|
1793346656.5131774
|
|
10257
|
Self hosted minecraft hosting service by @sometime Self hosted minecraft hosting service by @sometimesmycodeworks | Stardance...
|
sometimesmycodeworks
|
1
|
58.72
|
605
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-23T18:57:02Z", "hours": 57.0, "multiplier": 12.09, "payout": 605, "blessing": "neutral", "text": "I made a minecraft server hosting service, which shuts down servers automatically that are not in use (and starts them up upon attempted connection) to save resources. It is slow due to the hardware, but I promise that the loading screen usually is not infinite (1min long usually).", "repo": "https://github.com/imakebloatedcode/minecraft-as-a-service", "demo": "https://mc.bloated.dev"}]...
|
[{"post_id": 18404, "ts": "202 [{"post_id": 18404, "ts": "2026-06-29T15:20:46Z", "hours": 0.4886, "text": "Docker now allows more than 10 seconds for the servers to be saved, the MOTD now saves even if no formatting is applied, and it reloads the configuration when switching from and to the server configuration tile"}, {"post_id": 17741, "ts": "2026-06-28T17:39:11Z", "hours": 0.4492, "text": "Devlog - REVIEWERS READ THIS: before rejecting, read this thread: https://hackclub.slack.com/archives/C099P9FQQ91/p1782581500326529"}, {"post_id": 14655, "ts": "2026-06-23T20:48:28Z", "hours": 0.7839, "text": "Added license, updated readme, allowed viewing server configuration without authorization, fixed the UI for users who do (removed save button and irrelevant config groups), renamed the routes for some pages (/dashboard/servers => /dashboard/my-servers. /dashboard/all-servers => /dashboard/servers), and hid the account menu for non-logged-in users."}, {"post_id": 14471, "ts": "2026-06-23T16:33:59Z", "hours": 0.8519, "text": "Final touch ups: added a favicon, fixed a double-mount bug in the server join callback, and also prevented double-registration of accounts (which result in duplicate DB entries)"}, {"post_id": 14064, "ts": "2026-06-23T01:24:09Z", "hours": 3.2131, "text": "The server now automatically shuts down servers with no players after 5 minutes (via checking if any players are connected to the proxy, not by querying the backend server) and starts them on players trying to join. Viaversion has been uninstalled from velocity (the proxy), as it was giving protocol errors intermittently for newly started servers. I now only have viaversion in front of the limbo server, which was not having issues, with the addition of viabackwards to allow old versions. Installing that to the limbo server was required as all minecraft versions connect to it, and limbo only implements support for one nativly."}, {"post_id": 13785, "ts": "2026-06-22T16:25:13Z", "hours": 1.9106, "text": "Fixed the api endpoints (they did not delete the S3 data) for deleting servers and accounts and added the button to delete servers"}, {"post_id": 12823, "ts": "2026-06-21T00:06:11Z", "hours": 5.3086, "text": "It now keeps track of the players that are connected (this required rewriting the java code to use a raw tcp stream instead of http for events to allow bidirectional communication)"}, {"post_id": 12275, "ts": "2026-06-20T01:25:17Z", "hours": 12.3925, "text": "Added a terminal feature to allow using the console of the minecraft server and cleaned up the codebase to the point of being somewhat presentable (removed the unused old code from the pre-stardance version as it is been largely rewritten)"}, {"post_id": 10265, "ts": "2026-06-16T22:09:20Z", "hours": 10.5117, "text": "The server now actually runs fully, it saves worlds to any S3-like server and allows downloading and uploading custom ones. It autosaves the worlds once every 5 minutes and when the server is shut down, and restarts the servers when the configuration is changed. It does not yet allow you to add operators to the server."}, {"post_id": 9246, "ts": "2026-06-15T15:05:13Z", "hours": 6.0061, "text": "Implemented Backend api created The web UI can save to it"}, {"post_id": 8372, "ts": "2026-06-13T22:29:29Z", "hours": 2.8611, "text": "Added server configuration UI autogeneration. It automatically shows only the configuration options supported by the server, requiring me to only implement the backend handler and add the option to the list of field names."}, {"post_id": 7541, "ts": "2026-06-12T16:18:51Z", "hours": 14.1831, "text": "Got basic functionality, with primitive web ui and nearly complete backend. The code is too messy to use, and I will soon rewrite most of it."}]...
|
Title: Self hosted minecraft hosting service by @s Title: Self hosted minecraft hosting service by @sometimesmycodeworks | Stardance
Devlogs:
Got basic functionality, with primitive web ui and nearly complete backend. The code is too messy to use, and I will soon rewrite most of it.
Added server configuration UI autogeneration. It automatically shows only the configuration options supported by the server, requiring me to only implement the backend handler and add the option to the list of field names.
Implemented Backend api created The web UI can save to it
The server now actually runs fully, it saves worlds to any S3-like server and allows downloading and uploading custom ones. It autosaves the worlds once every 5 minutes and when the server is shut down, and restarts the servers when the configuration is changed. It does not yet allow you to add operators to the server.
Added a terminal feature to allow using the console of the minecraft server and cleaned up the codebase to the point of being somewhat presentable (removed the unused old code from the pre-stardance version as it is been largely rewritten)
It now keeps track of the players that are connected (this required rewriting the java code to use a raw tcp stream instead of http for events to allow bidirectional communication)
Fixed the api endpoints (they did not delete the S3 data) for deleting servers and accounts and added the button to delete servers
The server now automatically shuts down servers with no players after 5 minutes (via checking if any players are connected to the proxy, not by querying the backend server) and starts them on players trying to join. Viaversion has been uninstalled from velocity (the proxy), as it was giving protocol errors intermittently for newly started servers. I now only have viaversion in front of the limbo server, which was not having issues, with the addition of viabackwards to allow old versions. Installing that to the limbo server was required as all minecraft versions connect to it, and limbo only implements support for one nativly.
Final touch ups: added a favicon, fixed a double-mount bug in the server join callback, and also prevented double-registration of accounts (which result in duplicate DB entries)
Added license, updated readme, allowed viewing server configuration without authorization, fixed the UI for users who do (removed save button and irrelevant config groups), renamed the routes for some pages (/dashboard/servers => /dashboard/my-servers. /dashboard/all-servers => /dashboard/servers), and hid the account menu for non-logged-in users.
Devlog - REVIEWERS READ THIS: before rejecting, read this thread: https://hackclub.slack.com/archives/C099P9FQQ91/p1782581500326529
Docker now allows more than 10 seconds for the servers to be saved, the MOTD now saves even if no formatting is applied, and it reloads the configuration when switching from and to the server configuration tile
Ships:
I made a minecraft server hosting service, which shuts down servers automatically that are not in use (and starts them up upon attempted connection) to save resources. It is slow due to the hardware, but I promise that the loading screen usually is not infinite (1min long usually)....
|
1793264069.2409766
|
1793350469.2409766
|
|
10267
|
Rubik's Cube Algorithm Finder by @pi | Stardan Rubik's Cube Algorithm Finder by @pi | Stardance...
|
pi
|
1
|
17.33
|
149
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T03:56:02Z", "hours": 17.0, "multiplier": 8.73, "payout": 149, "blessing": "neutral", "text": "Search a Rubik’s Cube for short algorithms that solve a scramble or reach a target pattern. I made this project after I learned to solve a Rubik’s Cube. See, I have this bad habit of taking something I like and automating it. On the bright side, I now have a program that can automatically solve a Rubik’s Cube, much faster than I can! To run the Python program, follow the steps linked in the Try Project section.", "repo": "https://github.com/anagram-of-pi/rubik_cube_algorithm_finder", "demo": "https://alg-finder-install.netlify.app/"}]...
|
[{"post_id": 65701, "ts": "202 [{"post_id": 65701, "ts": "2026-09-11T01:04:58Z", "hours": 0.3286, "text": "Added a real demo :) My ship got denied because I hadn’t set up a proper demo (eg, wasn’t on PyPi or a binary) so I just spent 20 minutes doing that. I’m just posting a devlog for the record."}, {"post_id": 64009, "ts": "2026-09-08T03:41:45Z", "hours": 2.23, "text": "I haven’t worked on this in a very long time, haha So I stopped working on my Rubik’s Cube solver a while ago because it was more or less complete. I never actually submitted it though! I just spent a few hours cleaning up the repo, fixing some stuff, etc.. It is now presentable and shippable! I’m not sure exactly how to do this but my demo is actually a hosted web page giving instructions on how to install and run it. It’s not one line but actually two (one for cloning and one for pip install-ing) but I hope that’s okay. Thanks all!"}, {"post_id": 5070, "ts": "2026-06-08T19:05:36Z", "hours": 0.5742, "text": "My program found solutions that I’ve never seen before :) * I told it to find an algorithm that takes an F2L pair out (e.g., R U R’ U’). If you are not familiar with the Rubik’s cube, I told it to find a sequence of moves that would result in a certain state. * I knew about one, very common sequence (R U R’ U’) and it found 17 others that I had never seen before, in about a minute of search time. * Now all that’s left is to optimize it so it can find longer algorithms!"}, {"post_id": 5040, "ts": "2026-06-08T18:19:17Z", "hours": 3.435, "text": "This was meant to be a quick side project. I have now spent more time on this than my main project. What happened??"}, {"post_id": 4401, "ts": "2026-06-07T18:36:41Z", "hours": 4.5167, "text": "Successfully searched up to depth 6 (meet-in-the-middle, so essentially up to 12) and solved a 10 move scramble in 50 seconds! * This program solved a rubik’s cube that had been scrambled with “F R U’ B’ D’ R’ L F’ B U’”, so ten moves. It correctly found the optimal 10 move solution, as well as many others. * This is Python, and I’m already running 18 searches in parallel, so I’m not sure if I’ll be able to improve the raw speed, but I hope to prune more and maybe even do a heuristic-based search in the future. * I’m planning on doing some more with this that may involve loosening the constraints. That may or may not speed it up."}, {"post_id": 3956, "ts": "2026-06-07T02:49:40Z", "hours": 2.6847, "text": "Well I thought this would be a quick project. 2.5 hours of programming later: It was not. * Since the last devlog, I have a Rubik’s Cube represented correctly in the code now, and it can make moves. All I have left to do for this part of the project is to fix the str method that returns a visualization of the cube. Right now, it gets the orientation mixed up on up and down quarter turns, but it shouldn’t be too much debugging… * Here’s a screenshot of it working next to it not working:"}, {"post_id": 3854, "ts": "2026-06-06T22:30:51Z", "hours": 3.6764, "text": "This project is very difficult to debug! It’s just a big lookup table that I entered in by hand… I’m sure I made many typos, so that will be fun."}]...
|
Title: Rubik's Cube Algorithm Finder by @pi | Title: Rubik's Cube Algorithm Finder by @pi | Stardance
Devlogs:
This project is very difficult to debug! It’s just a big lookup table that I entered in by hand… I’m sure I made many typos, so that will be fun.
Well I thought this would be a quick project. 2.5 hours of programming later: It was not. * Since the last devlog, I have a Rubik’s Cube represented correctly in the code now, and it can make moves. All I have left to do for this part of the project is to fix the str method that returns a visualization of the cube. Right now, it gets the orientation mixed up on up and down quarter turns, but it shouldn’t be too much debugging… * Here’s a screenshot of it working next to it not working:
Successfully searched up to depth 6 (meet-in-the-middle, so essentially up to 12) and solved a 10 move scramble in 50 seconds! * This program solved a rubik’s cube that had been scrambled with “F R U’ B’ D’ R’ L F’ B U’”, so ten moves. It correctly found the optimal 10 move solution, as well as many others. * This is Python, and I’m already running 18 searches in parallel, so I’m not sure if I’ll be able to improve the raw speed, but I hope to prune more and maybe even do a heuristic-based search in the future. * I’m planning on doing some more with this that may involve loosening the constraints. That may or may not speed it up.
This was meant to be a quick side project. I have now spent more time on this than my main project. What happened??
My program found solutions that I’ve never seen before :) * I told it to find an algorithm that takes an F2L pair out (e.g., R U R’ U’). If you are not familiar with the Rubik’s cube, I told it to find a sequence of moves that would result in a certain state. * I knew about one, very common sequence (R U R’ U’) and it found 17 others that I had never seen before, in about a minute of search time. * Now all that’s left is to optimize it so it can find longer algorithms!
I haven’t worked on this in a very long time, haha So I stopped working on my Rubik’s Cube solver a while ago because it was more or less complete. I never actually submitted it though! I just spent a few hours cleaning up the repo, fixing some stuff, etc.. It is now presentable and shippable! I’m not sure exactly how to do this but my demo is actually a hosted web page giving instructions on how to install and run it. It’s not one line but actually two (one for cloning and one for pip install-ing) but I hope that’s okay. Thanks all!
Added a real demo :) My ship got denied because I hadn’t set up a proper demo (eg, wasn’t on PyPi or a binary) so I just spent 20 minutes doing that. I’m just posting a devlog for the record.
Ships:
Search a Rubik’s Cube for short algorithms that solve a scramble or reach a target pattern. I made this project after I learned to solve a Rubik’s Cube. See, I have this bad habit of taking something I like and automating it. On the bright side, I now have a program that can automatically solve a Rubik’s Cube, much faster than I can! To run the Python program, follow the steps linked in the Try Project section....
|
1793119644.1547196
|
1793206044.1547196
|
|
10272
|
Platformer 2 by @BreadBoy | Stardance
|
BreadBoy
|
1
|
14.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-24T20:45:44Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple platformer in Godot, and I followed a tutorial and used the tutorial’s art, and I’m proud of making my first game in Godot!", "repo": "https://github.com/connortnorth/Platformer", "demo": "https://breadboy9439.itch.io/platformer"}]...
|
[{"post_id": 15287, "ts": "202 [{"post_id": 15287, "ts": "2026-06-24T20:33:47Z", "hours": 4.3606, "text": "I’ve made a few more levels, but I still need to add a win screen"}, {"post_id": 7079, "ts": "2026-06-11T21:10:19Z", "hours": 4.7444, "text": "I did a lot"}, {"post_id": 5057, "ts": "2026-06-08T18:37:44Z", "hours": 1.7925, "text": "I’ve added apples"}, {"post_id": 4586, "ts": "2026-06-07T22:39:06Z", "hours": 1.1467, "text": "I’ve made enemies"}, {"post_id": 4352, "ts": "2026-06-07T17:11:41Z", "hours": 1.3931, "text": "I Made a Level!"}, {"post_id": 3942, "ts": "2026-06-07T02:13:04Z", "hours": 0.3153, "text": "I’ve made the controls"}]...
|
Title: Platformer 2 by @BreadBoy | Stardance
Devl Title: Platformer 2 by @BreadBoy | Stardance
Devlogs:
I’ve made the controls
I Made a Level!
I’ve made enemies
I’ve added apples
I did a lot
I’ve made a few more levels, but I still need to add a win screen
Ships:
I made a simple platformer in Godot, and I followed a tutorial and used the tutorial’s art, and I’m proud of making my first game in Godot!...
|
1793116124.0647976
|
1793202524.0647976
|
|
10277
|
Untitled by @gowripaliwal | Stardance
|
gowripaliwal
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-02T19:53:22Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a media pipe program that looks like a cat doing the scuba meme", "repo": "https://github.com/galleryp/scubacat", "demo": "https://www.tiktok.com/@michellecd3/video/7653695152514436368?is_from_webapp=1&sender_device=pc"}]...
|
[{"post_id": 59361, "ts": "202 [{"post_id": 59361, "ts": "2026-09-01T03:33:36Z", "hours": 0.4283, "text": "Scuba cat!"}]...
|
Title: Untitled by @gowripaliwal | Stardance
Devl Title: Untitled by @gowripaliwal | Stardance
Devlogs:
Scuba cat!
Ships:
I made a media pipe program that looks like a cat doing the scuba meme...
|
1793220525.493979
|
1793306925.493979
|
|
10280
|
Space Shuttle by @CoolHotDog64 | Stardance
|
CoolHotDog64
|
1
|
52.0
|
920
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-14T18:27:21Z", "hours": 52.0, "multiplier": 19.22, "payout": 920, "blessing": "neutral", "text": "Space Shuttle I Created a Space Shuttle Using CAD (Computer Aided Design) How to use my project: You can visit the model of my space shuttle at https://cad.onshape.com/documents/0cc091979462d1f40116053c/w/ab82948fa33e8f748e0fcb44/e/4129cc439ac4ca6aab65041f?renderMode=0&uiState=6a565da1ab0f5b3c13bc4737 If this link says 403 Forbidden, you should select the address bar at the top of the screen and then press enter to refresh the page, which should fix the issue Step-by-step explanation: Select the address bar at the top of the screen Press enter/search Another way to fix this is copying the url and pasting it into another tab Step-by-step explanation: Select the address bar at the top of the screen Copy the address bar that you selected Paste the link in a different address bar (a new tab) How to download my project: First go through the link to visit my project Then select the download button After selecting the download, button a menu should appear where you can then select many options before you export the file Does this project support AMS (Multi-Color Printing)? Yes, this project should support AMS since it’s broken down into separate pieces instead of just coloring the visible faces on the rocket Why did I choose a space shuttle? This project was very hard to make and not many space shuttles are available, and they are usually not realistic. I wanted to make a space shuttle since it was the theme of the event, and I was interested in testing my CAD skills. I am so happy with the result and realism of my rocket. If you look at other designs online, a lot of them will be way less realistic than mine. For example, here is a link to a space shuttle on maker world. Comparing it to my rocket, you can see the difference in realism. https://makerworld.com/en/models/956260-space-shuttle#profileId-925247 What was the most difficult part of this project? One of the most difficult parts of this project was the back of my rocket. There were so many complex, intricate parts that I had to redo so many times that it took me countless hours just to get it right. What I learned from this project: I learned how to use multiple new tools that I’ve never used before, like the transform tool I learned how to copy off images and try to make the dimensions correct I learned how to use many tools better, like fillet tools I learned how to make complex sketches Thank you for viewing my ship! I had so much fun creating this project and I can’t wait to start my next project (which will probably be a space station!) My readme is easier to follow since it has multiple images so check that out if you are confused for the viewing and downloading process Check my readme out here: https://github.com/JaydenSeelo/CAD/blob/main/README.md", "repo": "https://github.com/JaydenSeelo/CAD", "demo": "https://cad.onshape.com/documents/0cc091979462d1f40116053c/w/ab82948fa33e8f748e0fcb44/e/4129cc439ac4ca6aab65041f?renderMode=0&uiState=6a565da1ab0f5b3c13bc4737"}]...
|
[{"post_id": 27783, "ts": "202 [{"post_id": 27783, "ts": "2026-07-13T17:18:19Z", "hours": 5.0453, "text": "I Finished My Space Shuttle! This has taken me so many hours and I’m very happy with the result What I did in the past 4 hours: I started and completed the large support that connects the body of the shuttle to the external tanks. I had to cut into the external tank and I used multiple tools to add realism like the extrude tool. After that, I created cylinder supports that i then connected using the transform and extrude tools. I started and completed the small support that connected the nose of the shuttle to the external tanks. I had to use many transform tools to make the correct shape but eventually I shaped it correctly. I added a liquid oxygen fuel line to the large external tank and connected it to the system tunnel with many supports. I mostly used the extrude tool for this step. This took the most time to complete in the 4 hours since my last devlog. ____________________________________________________________________________ What My Space Shuttle Includes Realistic external tanks Realistic rings surrounding the solid rocket boosters Realistic rocket booster shape Small realistic features like an access door and forward booster separation modules Realistic supports that carry the rocket Realistic external tank Realistic LO2 feedline and LO2 feedline fairing Realistic stringers Realistic ring frames A realistic rocket Realistic wings Realistic nose with small features like the cockpit window and star tracker doors Realistic vertical stabilizer Realistic body shape Realistic Aft fuselage, which includes the space shuttle’s main engines and also includes the orbital maneuvering system and the RCS thrusters Thanks for the support on this project! I will likely do a space station for my next project. I will probably ship this project tomorrow, and then it should be available for printing! I tried to design the shuttle for multicolor printing so you should be able to choose multiple colors. There should be a total of 3 different colors since I wanted to limit the amount of filament colors for printing. If you still have any suggestions, please leave them in the comments!"}, {"post_id": 24991, "ts": "2026-07-08T21:43:00Z", "hours": 6.4489, "text": "I Finished The Rocket Component Of My Space Shuttle This Was A Long And Hard Process But I was Finally Able To Complete The Rocket Component Of My Shuttle! This Is What I Have Done In The Past 6 Hours I fixed an error in the front of my rocket that made the front look less realistic (This took so long since I needed to fix an area with a curved shape. which is difficult to do) I remade the elevons of my rocket since they were unrealistic before I renamed my project from CAD to Space Shuttle for more clarity in what my project is What I Still Need To Do I still need to connect the rocket to the external tanks (They are hidden in this image) This Project Is So Close To Being Done! If You Have Any Suggestions To Make This Rocket Better, Please State Them In The Comments!"}, {"post_id": 21148, "ts": "2026-07-02T23:06:35Z", "hours": 3.9303, "text": "Almost Done The Back Of My Rocket! I Can’t Believe How Close I Really Am From Completing This Project. This Is All I Need To Do Before I Am Done: A quick fix to the wings of the space shuttle (this will probably take 10 minutes and then I will be done with the back of my rocket! Connect the fuel tanks to the rest of the build (They are hidden in this picture) Possibly fix one area on the front of my rocket (This Is Optional But Would Make The Rocket Look Much Better) What I Did Since Last Devlog: I completely remade the vertical stabilizer (also called the tail fin) of the space shuttle Remade and angled the oms pods since they were completely wrong before Moved up the oms engine nozzles (The bell looking component on the rocket) Redesigned the RCS thruster ports (They are beside the OMS engine nozzles) If you have any improvements that i could make to the space shuttle, please mention them in the comments!"}, {"post_id": 19221, "ts": "2026-06-30T14:17:17Z", "hours": 2.7025, "text": "I’m Done The Front Of My Space Shuttle! This Has Taken A Lot Of Hours But I Am Happy With This Iteration I was able to add: Much More Realism To The Front Of The Rocket Like Realistic Colors Added Some More Small Components Onto The Front Of The Rocket Added The Flight Deck Window To The Rocket Added More Material To The Middle Of The Rocket To Make The Base More Curved And Realistic (This Took The Longest Since I needed To Smooth It Out Realistically And It Took Forever To Find The Solution To Round It Perfectly) What I Still Need To Work On: I Still Need To Add Realistic Angle To The OMS Pods I also Need To Attach The OMS Pods To The Rocket, Which Includes Reshaping Them To The Right Dimensions I Need To Move The Body Of The Rocket Further Down Into The Rocket Boosters Since Right Now There Is A Gap I Have To Smooth Out The Enclosure Surrounding The Main Engines I Will Try And Fix The Connection Point On The Rocket To The Main Tanks (They Are Hidden In This Image) ______________________________________ I’m Estimating This Will Take 9 Hours To Complete. If You Have Any Suggestions To Improve This Model, Feel Free To Share Them In The Comments!"}, {"post_id": 16688, "ts": "2026-06-27T03:53:09Z", "hours": 3.0233, "text": "Almost done the front of my rocket! After 3 Hours, I Was Able To Troubleshoot Many Errors and Finally I Was Able to Make The Front Of My Rocket Much More Realistic. I was finally able to add: A realistic, smooth shape of the rocket that resulted in boosted realism A more round shape to the body of the rocket- Realistic features of the rocket’s nose I also removed the sharp edges on the front of the rocket that ruined the rocket’s overall image. My next goals: Working on the bottom of the rocket to add realistic color for AMS printing Smoothing out the transition between the body and the engines (Right now they are really messed up and look terrible) Adding realistic connections where the rocket attaches to the external tank (The tank is hidden in this image) I was able to make the rocket look so much more realistic (Look at my other devlogs to see the before and after) and I’m so happy about how it turned out so far! So far, I have made amazing progress on this ambitious project and I can’t wait to finish this off."}, {"post_id": 15392, "ts": "2026-06-25T00:55:03Z", "hours": 3.8297, "text": "I’m still working on my space shuttle! So Far, My Main Goal has been Editing The Front of My Shuttle Since it Was Lacking in Realism. This Includes: Smoothing down ruff corners Adding high detail to the front of the rocket (Haven’t done this yet, but I have enough experience from the previous design to edit this) Enlarging the base of the rocket to add more crucial detail Making the front shape of the rocket realistic (This is by far the hardest and most time-consuming part) Adding detail to the tip of the rocket and the window in the front of the rocket (I haven’t really started on this because it needs a lot of work) Adding realistic connections to the external tank (Right now it’s just sitting on top) Once I complete these main goals, I will likely be done! (The rest of the rocket in this image is hidden) Feel Free To Share Suggestions About The Rocket In The Comments!"}, {"post_id": 12270, "ts": "2026-06-20T01:06:13Z", "hours": 1.6928, "text": "Still Working on My Space Shuttle. I was able to add much more detail to the external tank like realistic panels, vents, and intertank ribs (The stripe pattern on the external tank). I also moved up the external tank and rocket since they were very low. I’m also planning on designing a better nose for the shuttle. After I do that, I’m am going to be very close to being done but the nose will take a while."}, {"post_id": 10371, "ts": "2026-06-17T01:42:15Z", "hours": 2.0058, "text": "Editing My Space Shuttle I mostly worked on adding the smaller details on the external tank. I was able to smooth out some areas to add more realism and this made the rocket more clean. I also realized that the front of my rocket isn’t very realistic, and I’m going to try and fix it. I’m also planning on adding other details. Sadly, it seems like my project will take much longer than expected, but I’m willing to pour in more time to make this ship accurate. I’ll try to add much more detail over these past few days. I might also design a stand so you can display this rocket (You should be able to print it once I ship the project, and it should also support multicolor printing) Let me know if you want me to make a stand in the comments!"}, {"post_id": 9515, "ts": "2026-06-15T21:41:01Z", "hours": 4.1583, "text": "My Space Shuttle is Almost Done! My Estimate is That it Will be Done Tomorrow The main goals I have worked on since my last devlog are: Added the same realism on the left rocket as the right rocket. This included adding multiple realistic rings and other complex shapes. Added much more detail on the solid rocket boosters, like accurate connection points to the external tank. This was necessary so that the tank would actually connect to the rocket boosters when printing the rocket, and this also made the rocket look much more realistic. Smoothed out the bottom of the external tank to increase realism since before it was just a block. Moved up both solid rocket boosters since they were very low. I had to move them up since they were very wonky and moving them up made the overall image of the rocket much better and more accurate (You can see what it looked like before with the messed-up tank on the other devlogs). Added a black stripe to the wings of the rocket (Wasn’t too noticeable but after completing this edit the wings looked much cleaner). Hollowed out the bottom of both rocket boosters, since before it was just a block before. I also added subsections on the rocket boosters. This created subtle realism, and it made the boosters look less empty. What I still need to work on: I still need to add realism to the external tank since it currently looks empty. This whole build took way too long since i made many mistakes and errors during this whole process but I learned a lot and I’m very happy with the result! If you see my shipped project, feel free to check it out!"}, {"post_id": 8484, "ts": "2026-06-14T03:26:37Z", "hours": 3.3347, "text": "I’ve Finally Designed The Back of My Space Shuttle. I was able to add very crucial details like: Angle on the RS-25 engines (Space Shuttle Engines) Added much more detail and realism to the OMS Engines (Smaller Steering Engines) Fixed the overall shape of the backside of the shuttle Added an RCS thruster port My Next Goal is to Finish off the Left Solid Rocket Booster, and Then I’m Going to add More Detail to the External Fuel Tank. If you have any suggestions on how to make the rocket better, feel free to send suggestions in the comments!"}, {"post_id": 7832, "ts": "2026-06-13T02:15:24Z", "hours": 1.7161, "text": "I Completed The First Side of The Rocket For My Shuttle I still need to do the other side so I will work on that next and then I will almost be completed this project!"}, {"post_id": 7789, "ts": "2026-06-13T00:24:54Z", "hours": 14.3428, "text": "I’m Designing A Space Shuttle Completely From Scratch This involved many steps Finding a picture that I could base the rocket off of Making countless sketches (28 right now to be exact) Extruding these sketches (this was one of the hardest parts since I needed everything perfect and it took 73 extrudes) Using multiple tools to smooth it out and add realistic dimensions (I used 18 fillets, 33 splits, 14 drafts, 1 chamfer and finally 1 shell) I’m Now Working On Adding More Details To The Fuel Tanks and Other Large Components"}]...
|
Title: Space Shuttle by @CoolHotDog64 | Stardance
Title: Space Shuttle by @CoolHotDog64 | Stardance
Devlogs:
I’m Designing A Space Shuttle Completely From Scratch This involved many steps Finding a picture that I could base the rocket off of Making countless sketches (28 right now to be exact) Extruding these sketches (this was one of the hardest parts since I needed everything perfect and it took 73 extrudes) Using multiple tools to smooth it out and add realistic dimensions (I used 18 fillets, 33 splits, 14 drafts, 1 chamfer and finally 1 shell) I’m Now Working On Adding More Details To The Fuel Tanks and Other Large Components
I Completed The First Side of The Rocket For My Shuttle I still need to do the other side so I will work on that next and then I will almost be completed this project!
I’ve Finally Designed The Back of My Space Shuttle. I was able to add very crucial details like: Angle on the RS-25 engines (Space Shuttle Engines) Added much more detail and realism to the OMS Engines (Smaller Steering Engines) Fixed the overall shape of the backside of the shuttle Added an RCS thruster port My Next Goal is to Finish off the Left Solid Rocket Booster, and Then I’m Going to add More Detail to the External Fuel Tank. If you have any suggestions on how to make the rocket better, feel free to send suggestions in the comments!
My Space Shuttle is Almost Done! My Estimate is That it Will be Done Tomorrow The main goals I have worked on since my last devlog are: Added the same realism on the left rocket as the right rocket. This included adding multiple realistic rings and other complex shapes. Added much more detail on the solid rocket boosters, like accurate connection points to the external tank. This was necessary so that the tank would actually connect to the rocket boosters when printing the rocket, and this also made the rocket look much more realistic. Smoothed out the bottom of the external tank to increase realism since before it was just a block. Moved up both solid rocket boosters since they were very low. I had to move them up since they were very wonky and moving them up made the overall image of the rocket much better and more accurate (You can see what it looked like before with the messed-up tank on the other devlogs). Added a black stripe to the wings of the rocket (Wasn’t too noticeable but after completing this edit the wings looked much cleaner). Hollowed out the bottom of both rocket boosters, since before it was just a block before. I also added subsections on the rocket boosters. This created subtle realism, and it made the boosters look less empty. What I still need to work on: I still need to add realism to the external tank since it currently looks empty. This whole build took way too long since i made many mistakes and errors during this whole process but I learned a lot and I’m very happy with the result! If you see my shipped project, feel free to check it out!
Editing My Space Shuttle I mostly worked on adding the smaller details on the external tank. I was able to smooth out some areas to add more realism and this made the rocket more clean. I also realized that the front of my rocket isn’t very realistic, and I’m going to try and fix it. I’m also planning on adding other details. Sadly, it seems like my project will take much longer than expected, but I’m willing to pour in more time to make this ship accurate. I’ll try to add much more detail over these past few days. I might also design a stand so you can display this rocket (You should be able to print it once I ship the project, and it should also support multicolor printing) Let me know if you want me to make a stand in the comments!
Still Working on My Space Shuttle. I was able to add much more detail to the external tank like realistic panels, vents, and intertank ribs (The stripe pattern on the external tank). I also moved up the external tank and rocket since they were very low. I’m also planning on designing a better nose for the shuttle. After I do that, I’m am going to be very close to being done but the nose will take a while.
I’m still working on my space shuttle! So Far, My Main Goal has been Editing The Front of My Shuttle Since it Was Lacking in Realism. This Includes: Smoothing down ruff corners Adding high detail to the front of the rocket (Haven’t done this yet, but I have enough experience from the previous design to edit this) Enlarging the base of the rocket to add more crucial detail Making the front shape of the rocket realistic (This is by far the hardest and most time-consuming part) Adding detail to the tip of the rocket and the window in the front of the rocket (I haven’t really started on this because it needs a lot of work) Adding realistic connections to the external tank (Right now it’s just sitting on top) Once I complete these main goals, I will likely be done! (The rest of the rocket in this image is hidden) Feel Free To Share Suggestions About The Rocket In The Comments!
Almost done the front of my rocket! After 3 Hours, I Was Able To Troubleshoot Many Errors and Finally I Was Able to Make The Front Of My Rocket Much More Realistic. I was finally able to add: A realistic, smooth shape of the rocket that resulted in boosted realism A more round shape to the body of the rocket- Realistic features of the rocket’s nose I also removed the sharp edges on the front of the rocket that ruined the rocket’s overall image. My next goals: Working on the bottom of the rocket to add realistic color for AMS printing Smoothing out the transition between the body and the engines (Right now they are really messed up and look terrible) Adding realistic connections where the rocket attaches to the external tank (The tank is hidden in this image) I was able to make the rocket look so much more realistic (Look at my other devlogs to see the before and after) and I’m so happy about how it turned out so far! So far, I have made amazing progress on this ambitious project and I can’t wait to finish this off.
I’m Done The Front Of My Space Shuttle! This Has Taken A Lot Of Hours But I Am Happy With This Iteration I was able to add: Much More Realism To The Front Of The Rocket Like Realistic Colors Added Some More Small Components Onto The Front Of The Rocket Added The Flight Deck Window To The Rocket Added More Material To The Middle Of The Rocket To Make The Base More Curved And Realistic (This Took The Longest Since I needed To Smooth It Out Realistically And It Took Forever To Find The Solution To Round It Perfectly) What I Still Need To Work On: I Still Need To Add Realistic Angle To The OMS Pods I also Need To Attach The OMS Pods To The Rocket, Which Includes Reshaping Them To The Right Dimensions I Need To Move The Body Of The Rocket Further Down Into The Rocket Boosters Since Right Now There Is A Gap I Have To Smooth Out The Enclosure Surrounding The Main Engines I Will Try And Fix The Connection Point On The Rocket To The Main Tanks (They Are Hidden In This Image) ______________________________________ I’m Estimating This Will Take 9 Hours To Complete. If You Have Any Suggestions To Improve This Model, Feel Free To Share Them In The Comments!
Almost Done The Back Of My Rocket! I Can’t Believe How Close I Really Am From Completing This Project. This Is All I Need To Do Before I Am Done: A quick fix to the wings of the space shuttle (this will probably take 10 minutes and then I will be done with the back of my rocket! Connect the fuel tanks to the rest of the build (They are hidden in this picture) Possibly fix one area on the front of my rocket (This Is Optional But Would Make The Rocket Look Much Better) What I Did Since Last Devlog: I completely remade the vertical stabilizer (also called the tail fin) of the space shuttle Remade and angled the oms pods since they were completely wrong before Moved up the oms engine nozzles (The bell looking component on the rocket) Redesigned the RCS thruster ports (They are beside the OMS engine nozzles) If you have any improvements that i could make to the space shuttle, please mention them in the comments!
I Finished The Rocket Component Of My Space Shuttle This Was A Long And Hard Process But I was Finally Able To Complete The Rocket Component Of My Shuttle! This Is What I Have Done In The Past 6 Hours I fixed an error in the front of my rocket that made the front look less realistic (This took so long since I needed to fix an area with a curved shape. which is difficult to do) I remade the elevons of my rocket since they were unrealistic before I renamed my project from CAD to Space Shuttle for more clarity in what my project is What I Still Need To Do I still need to connect the rocket to the external tanks (They are hidden in this image) This Project Is So Close To Being Done! If You Have Any Suggestions To Make This Rocket Better, Please State Them In The Comments!
I Finished My Space Shuttle! This has taken me so many hours and I’m very happy with the result What I did in the past 4 hours: I started and completed the large support that connects the body of the shuttle to the external tanks. I had to cut into the external tank and I used multiple tools to add realism like the extrude tool. After that, I created cylinder supports that i then connected using the transform and extrude tools. I started and completed the small support that connected the nose of the shuttle to the external tanks. I had to use many transform tools to make the correct shape but eventually I shaped it correctly. I added a liquid oxygen fuel line to the large external tank and connected it to the system tunnel with many supports. I mostly used the extrude tool for this step. This took the most time to complete in the 4 hours since my last devlog. ____________________________________________________________________________ What My Space Shuttle Includes Realistic external tanks Realistic rings surrounding the solid rocket boosters Realistic rocket booster shape Small realistic features like an access door and forward booster separation modules Realistic supports that carry the rocket Realistic external tank Realistic LO2 feedline and LO2 feedline fairing Realistic stringers Realistic ring frames A realistic rocket Realistic wings Realistic nose with small features like the cockpit window and star tracker doors Realistic vertical stabilizer Realistic body shape Realistic Aft fuselage, which includes the space shuttle’s main engines and also includes the orbital maneuvering system and the RCS thrusters Thanks for the support on this project! I will likely do a space station for my next project. I will probably ship this project tomorrow, and then it should be available for printing! I tried to design the shuttle for multicolor printing so you should be able to choose multiple colors. There should be a total of 3 different colors since I wanted to limit the amount of filament colors for printing. If you still have any suggestions, please leave them in the comments!
Ships:
Space Shuttle I Created a Space Shuttle Using CAD (Computer Aided Design) How to use my project: You can visit the model of my space shuttle at https://cad.onshape.com/documents/0cc091979462d1f40116053c/w/ab82948fa33e8f748e0fcb44/e/4129cc439ac4ca6aab65041f?renderMode=0&uiState=6a565da1ab0f5b3c13bc4737 If this link says 403 Forbidden, you should select the address bar at the top of the screen and then press enter to refresh the page, which should fix the issue Step-by-step explanation: Select the address bar at the top of the screen Press enter/search Another way to fix this is copying the url and pasting it into another tab Step-by-step explanation: Select the address bar at the top of the screen Copy the address bar that you selected Paste the link in a different address bar (a new tab) How to download my project: First go through the link to visit my project Then select the download button After selecting the download, button a menu should appear where you can then select many options before you export the file Does this project support AMS (Multi-Color Printing)? Yes, this project should support AMS since it’s broken down into separate pieces instead of just coloring the visible faces on the rocket Why did I choose a space shuttle? This project was very hard to make and not many space shuttles are available, and they are usually not realistic. I wanted to make a space shuttle since it was the theme of the event, and I was interested in testing my CAD skills. I am so happy with the result and realism of my rocket. If you look at other designs online, a lot of them will be way less realistic than mine. For example, here is a link to a space shuttle on maker world. Comparing it to my rocket, you can see the difference in realism. https://makerworld.com/en/models/956260-space-shuttle#profileId-925247 What was the most difficult part of this project? One of the most difficult parts of this project was the back of my rocket. There were so many complex, intricate parts that I had to redo so many times that it took me countless hours just to get it right. What I learned from this project: I learned how to use multiple new tools that I’ve never used before, like the transform tool I learned how to copy off images and try to make the dimensions correct I learned how to use many tools better, like fillet tools I learned how to make complex sketches Thank you for viewing my ship! I had so much fun creating this project and I can’t wait to start my next project (which will probably be a space station!) My readme is easier to follow since it has multiple images so check that out if you are confused for the viewing and downloading process Check my readme out here: https://github.com/JaydenSeelo/CAD/blob/main/README.md...
|
1793252871.463059
|
1793339271.463059
|
|
10296
|
Human Vs Computer : Geussing Duel by @Justin-F | S Human Vs Computer : Geussing Duel by @Justin-F | Stardance...
|
Justin-F
|
1
|
1.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-26T21:47:39Z", "hours": 1.0, "multiplier": 1.47, "payout": 2, "blessing": "neutral", "text": "Built a terminal number guessing game where you go head to head against a computer. You both guess each other’s numbers and whoever does it in fewer tries wins. The computer uses binary search so it finds any number between 1-100 in 7 guesses max good luck beating it. The trickiest part was getting the binary search logic right and setting up GitHub Actions to build binaries for Windows, Linux, and Mac automatically on every release. To test it, download the binary for your OS from the releases page and run it. No Python needed.", "repo": "https://github.com/JF3800/Human-Vs-Computer-Geussing-Duel", "demo": "https://github.com/JF3800/Human-Vs-Computer-Geussing-Duel/releases/tag/v2.0.1"}]...
|
[{"post_id": 16510, "ts": "202 [{"post_id": 16510, "ts": "2026-06-26T21:17:25Z", "hours": 1.1419, "text": "Devlog #1 Built a terminal number guessing game in Python where you race against a computer. You guess its number, it guesses yours, fewest tries wins. The computer uses binary search so it finds any number between 1-100 in 7 guesses max. Ran into an infinite loop bug early on, fixed the git email privacy block, fought with GitHub Actions for cross-platform builds. Got it shipped to GitHub with a workflow for Windows, Linux, and Mac binaries. Mac build is still being annoying."}]...
|
Title: Human Vs Computer : Geussing Duel by @Justi Title: Human Vs Computer : Geussing Duel by @Justin-F | Stardance
Devlogs:
Devlog #1 Built a terminal number guessing game in Python where you race against a computer. You guess its number, it guesses yours, fewest tries wins. The computer uses binary search so it finds any number between 1-100 in 7 guesses max. Ran into an infinite loop bug early on, fixed the git email privacy block, fought with GitHub Actions for cross-platform builds. Got it shipped to GitHub with a workflow for Windows, Linux, and Mac binaries. Mac build is still being annoying.
Ships:
Built a terminal number guessing game where you go head to head against a computer. You both guess each other’s numbers and whoever does it in fewer tries wins. The computer uses binary search so it finds any number between 1-100 in 7 guesses max good luck beating it. The trickiest part was getting the binary search logic right and setting up GitHub Actions to build binaries for Windows, Linux, and Mac automatically on every release. To test it, download the binary for your OS from the releases page and run it. No Python needed....
|
1793112771.816721
|
1793199171.816721
|
|
10304
|
RetroSpace OS by @feranmi | Stardance
|
feranmi
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-19T23:03:13Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "🚀 I built RetroSpace OS, a retro sci-fi/cyberpunk web operating system interface completely from scratch! 🧠 What was challenging: Perfecting the custom JavaScript window mouse drag mechanics to ensure multiple desktop windows move smoothly without getting stuck or lagging on screen resize. ✨ What I’m proud of: The complete CSS grid and flexbox layout structure which gives it an authentic, immersive retro terminal appearance, along with the custom working Audio Synth Pad app. 🕹️ How to test it: Click “Try project” to launch the OS, drag the windows around your desktop, and click the controls to interact with the system features!", "repo": "https://github.com/Feranmilux/my-web-oS", "demo": "https://feranmilux.github.io/my-web-os/"}]...
|
[{"post_id": 12219, "ts": "202 [{"post_id": 12219, "ts": "2026-06-19T22:54:10Z", "hours": 1.9106, "text": "🎉 Building out the core interface for the RetroSpace Web OS! Spent this session structuring the index layout, designing the retro dark cyberpunk UI with custom CSS, and setting up vanilla JavaScript to handle multi-window toggles. Everything is running smooth and responsive!"}, {"post_id": 7478, "ts": "2026-06-12T14:07:13Z", "hours": 0.2956, "text": "I have successfully finished coding all the features for my text-based survival game! The entire codebase is finalized, polished, and has been pushed to my GitHub repository."}]...
|
Title: RetroSpace OS by @feranmi | Stardance
Devl Title: RetroSpace OS by @feranmi | Stardance
Devlogs:
I have successfully finished coding all the features for my text-based survival game! The entire codebase is finalized, polished, and has been pushed to my GitHub repository.
🎉 Building out the core interface for the RetroSpace Web OS! Spent this session structuring the index layout, designing the retro dark cyberpunk UI with custom CSS, and setting up vanilla JavaScript to handle multi-window toggles. Everything is running smooth and responsive!
Ships:
🚀 I built RetroSpace OS, a retro sci-fi/cyberpunk web operating system interface completely from scratch! 🧠 What was challenging: Perfecting the custom JavaScript window mouse drag mechanics to ensure multiple desktop windows move smoothly without getting stuck or lagging on screen resize. ✨ What I’m proud of: The complete CSS grid and flexbox layout structure which gives it an authentic, immersive retro terminal appearance, along with the custom working Audio Synth Pad app. 🕹️ How to test it: Click “Try project” to launch the OS, drag the windows around your desktop, and click the controls to interact with the system features!...
|
1793238620.1735835
|
1793325020.1735835
|
|
10321
|
North Star by @Nelly | Stardance
|
Nelly
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-08T08:43:14Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a basic website that can track the online programs you’re applying to and how far your progress is.", "repo": "https://github.com/nellybong20-ctrl/North-Star", "demo": "https://nellybong20-ctrl.github.io/North-Star/"}]...
|
[{"post_id": 4784, "ts": "2026 [{"post_id": 4784, "ts": "2026-06-08T08:38:16Z", "hours": 0.3017, "text": "Pretty basic design"}, {"post_id": 4596, "ts": "2026-06-07T23:17:40Z", "hours": 0.4853, "text": "Hi, I’m Nelly and I just finished creating the frontend of my website. I’ve always had a problem with missing deadlines and losing track of the programs I am applying to o this is like a little tracker for that. It’s pretty basic now but hopefully, it will be more soon. PS: I actually spent close to 2hrs coding this lol. I don’t know why it sayd 23m"}]...
|
Title: North Star by @Nelly | Stardance
Devlogs:
Title: North Star by @Nelly | Stardance
Devlogs:
Hi, I’m Nelly and I just finished creating the frontend of my website. I’ve always had a problem with missing deadlines and losing track of the programs I am applying to o this is like a little tracker for that. It’s pretty basic now but hopefully, it will be more soon. PS: I actually spent close to 2hrs coding this lol. I don’t know why it sayd 23m
Pretty basic design
Ships:
I made a basic website that can track the online programs you’re applying to and how far your progress is....
|
1793246062.3037362
|
1793332462.3037362
|
|
10328
|
Ampselector by @ravin_olivier | Stardance
|
ravin_olivier
|
1
|
5.19
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T08:00:32Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This project has been a crazy learning experience, from learning how to make a PCB to designing a case around it, to programming for it, it’s been an amazing learning experience and I’ve enjoyed all the hours I’ve spent on it! Hoping to enjoy getting the parts and putting it together!", "repo": "https://github.com/ravinder-Olivier/ampselector", "demo": ""}]...
|
[{"post_id": 67474, "ts": "202 [{"post_id": 67474, "ts": "2026-09-13T16:14:07Z", "hours": 1.6306, "text": "Soldered the hackpad! Soldering such a packed thing was new for me, as someone who solders guitar stuff. Was interesting experience, soldering the seeed uno was super easy (thought it would be pretty hard). Not sure how I’m gonna clip the diode wires short…"}, {"post_id": 43013, "ts": "2026-08-08T01:30:40Z", "hours": 0.5603, "text": "Project is finally polished up, added renders and made it real nice"}, {"post_id": 12403, "ts": "2026-06-20T07:33:20Z", "hours": 0.6686, "text": "Made it work with midi!"}, {"post_id": 10489, "ts": "2026-06-17T07:22:53Z", "hours": 1.0506, "text": "Finished setting up folder structure for submission (4 days in, 12+ hours in)"}, {"post_id": 8441, "ts": "2026-06-14T01:21:34Z", "hours": 1.0164, "text": "Fixing QMK Bugs"}]...
|
Title: Ampselector by @ravin_olivier | Stardance
Title: Ampselector by @ravin_olivier | Stardance
Devlogs:
Fixing QMK Bugs
Finished setting up folder structure for submission (4 days in, 12+ hours in)
Made it work with midi!
Project is finally polished up, added renders and made it real nice
Soldered the hackpad! Soldering such a packed thing was new for me, as someone who solders guitar stuff. Was interesting experience, soldering the seeed uno was super easy (thought it would be pretty hard). Not sure how I’m gonna clip the diode wires short…
Ships:
This project has been a crazy learning experience, from learning how to make a PCB to designing a case around it, to programming for it, it’s been an amazing learning experience and I’ve enjoyed all the hours I’ve spent on it! Hoping to enjoy getting the parts and putting it together!...
|
1793267556.2274618
|
1793353956.2274618
|
|
10338
|
Liable For Damages by @wilson_brunner | Stardance
|
wilson_brunner
|
1
|
214.95
|
2560
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T17:08:06Z", "hours": 211.0, "multiplier": 13.61, "payout": 2560, "blessing": "neutral", "text": "I made something! This was my first time coding outside of Arduinos, and one of the biggest learning experiences of my life. There was stress, time crunches, and pain, but it all came down to the wire. The most challenging part was drawing, of course, I’m never going to do this again JUST because of the assets. Thanks for playing", "repo": "https://github.com/wilbot3000/Liable-For-Damages", "demo": "https://wilbot3000.itch.io/liable-for-damages"}]...
|
[{"post_id": 75085, "ts": "202 [{"post_id": 75085, "ts": "2026-09-29T03:15:45Z", "hours": 3.1931, "text": "Started working on Liable for Damages 2.0 Devlog #1 Started working on better settings, mostly just things for volume, fonhts, and scrolling things. Whipped up some basic sprites in aseprite and took a day to implement them and figure out bugs, which were very annoying, mostly just related to button sizing. Had to mess around with Godot’s “containers”, for the first time, and it was quite bad, I’ve got some more work to do before I can get the sliders to work, but I’m close! Next stuff’s: -format sliders -start creating settings related to different busses -create saves for the sliders -implement button to change font -make font-changed labels for all maps -do bum ahh drivers ed instead of W Stardance I’ll hopefully release 2.0 within October, and I’mma try and devlog more! ~Wil"}, {"post_id": 72459, "ts": "2026-09-23T00:48:57Z", "hours": 0.7572, "text": "devlog for projects i forgot to add, really just time from learning to export godot games, very annoying um, fun fact, if you create a web game, change the file to index.html, or it literally WON’T WORK!!! Play my game (now!)"}, {"post_id": 71208, "ts": "2026-09-20T13:27:09Z", "hours": 10.0756, "text": "Final Release (or close to it) Game will be out soon, I just gotta ship, but everythings done, I finished sounds, and the ending yesterday, like a 8 hour coding marathon, so i could get this out in time. PLEASE play it, it’s called Liable for Damages, I don’t know where I’ll post it yet, but It’ll probably be on Itch.io or just the game application file. It’s like 150,000 kilabytes, so it shouldn’t be too bad for any computer, hopefully (mines from like 2009 and it ran fine) P.S! Please, (if you do play), comment bugs, especially major things, EXCEPT: -Player dissapearing when opening menu in elevator (don’t try this, im not fixing it it’s funny) -Bugs on top of head, (js kill them) Anything else is bad and needs fix thanks. Also sorry no volume controls, I was crunching down to finish."}, {"post_id": 69943, "ts": "2026-09-18T03:13:43Z", "hours": 10.1883, "text": "SFX stuff, final thing before ending, just finishing sounds, really annoying though ngl. done soon, big update at end"}, {"post_id": 67708, "ts": "2026-09-13T22:09:54Z", "hours": 11.4017, "text": "FINAL STRETCH time to lock in please oh no Im finishing the last level, no time to talk, but got like 4 things to finish THINGS: -level -boss fight -sounds -ending -bugs"}, {"post_id": 59735, "ts": "2026-09-01T17:44:56Z", "hours": 10.84, "text": "WORKING ON MY FINAL STRETCH I’m going to be locked in for the next few days, school starts, so I’ll have less time, but I got a boss fight and then bug fixing and sound effects, hears a sneak peak and one of the many things ive worked on. Also, I came up for a name. Looked up the universal laws for space and saw something about how “Countries of Origin are Liable for Damages caused by their space debris” and said “dang, thas dope” so now i have a name. In my next log ill have a longer devlog like a lite trailer, but the games pretty short, more like a showcase of learning. Thanks!"}, {"post_id": 55339, "ts": "2026-08-27T02:45:42Z", "hours": 9.8842, "text": "quick stuff, nothing much Finished some updates, but I’m locked so don’t have time to write much"}, {"post_id": 53129, "ts": "2026-08-23T15:40:04Z", "hours": 10.67, "text": "Another devlog about levels. Started work on the second (this takes so long) I can’t say much for fear of spoilers, but just say this involves WAY to much code and sprites (I hate drawing so much)"}, {"post_id": 51334, "ts": "2026-08-20T22:46:55Z", "hours": 10.2436, "text": "quick devlog. I need to do this cause i got 10 hours, Im working on the level system and im so tired please why is htis so hard D: D: D: D: D: D: D: D: D: D: D: D:"}, {"post_id": 49718, "ts": "2026-08-18T17:06:16Z", "hours": 9.2325, "text": "keypads, doors, and beginning of the first level. Im actually making a game! contains spoilers First of many… keypads were really difficult, every button, when clicked, multiplies the correct number by a multiplier, and adds it to a “code” variable. the multiplier is chosen based on what step of the code you’re on, (e.g, 1: 10000, 2: 1000, 3: 100, 4: 10, 5: 1), when you click the green button, it cross checks another variable with the one you typed, and if they’re the same, it sends the function to open the doors, and if not, everything resets. The other terminals and what not just open things when clicked on, so it’s just an easier version of the keypad."}, {"post_id": 47241, "ts": "2026-08-15T01:07:13Z", "hours": 8.0058, "text": "Flying enemy is complete, in record time! wow, 8 hours for an enemy, how quick D: This was a challenge, but also really fun. This enemy is the flying one, which made it a little more difficult than just the copy and paste of old ones but still pretty cool. It works using a Navigation Agent, which is like Godot pathfinding. Fast forward three hours and a whole lot of troubleshooting, but that works. The enemy detects the player in the same fashion as the other enemies and then activates the nav-agent to being movement. It’ll follow the player through vents, passages and really anywhere. The fly has three main detection circles, the first one tells it to move towards the player, if the player enters the second one, it’ll freeze and stop moving, and if the player gets even closer, it’ll try to move away (by reversing the velocity var outputted by the nav-agent, iyc) the enemy’s one hit, acourse, but is really annoying to attack, (ill rework ground pounding to make this easier later). The enemy has a shooting attack, that is on a 6 second timer if it can see the player, otherwise it’s just on hold. its shots are pretty slow, so there easy to avoid, but in a crowded fight ya never know. The main quirk of this enemy is it has a really long forgetfulness timer, so even if it can’t see you, it’ll continue to follow for quite a long time, much longer than other enemies. Next:! -stationary, weird wall tentacle that shoots at you -egg spawner that hatches into 1 of three enemies (mystery ooh) -doors (ikr)"}, {"post_id": 44372, "ts": "2026-08-10T02:47:57Z", "hours": 2.9308, "text": "Enemy is complete: Chomper! Lot of work, but got it done. This is the, please avoid, very dangerous, you will die enemy. I haven’t balanced its health yet, and I’m not going to for a while, so it looks like an easy kill in the video. The weird quirks of this enemy are mostly in its charge attack, that rushes the player. It’s pretty easy to avoid, but once again i haven’t done attack balancing, so it may become harder later. The majority of the enemy works just like the lil guy, so idk read that devlog. But there is two major differences: LIST: gasp 1.!!!1! : idle stuff -really just a randomizer -if enemy is idling, starts a timer, and when it runs out of time, it does one of two things (using a randi() function) -if the outputs a 1, nothing happens, but if its a 2 it flips the enemy, thas all -the main reason for this is that since this enemy is so big, making it a tad more animated than the lil guy felt important to me, and also because the detection areas for the big guy are skewed towards the front, so him turning around makes the player sneaking up on him a little less common, it’s generally just for Q-O-l (slang btw) (only cool people understand) 2.!: dash -dear lord, why was hard so much D: -Wasn’t actually that difficult, I spent a lot of time trying stuff before realizing I just unleash my inner enginneer and do it step by step ’till it works, which it did. -first, theres three detection boxes, one for walking towards the player, one for the chomp, and one for dashing, if the player enters the dash-box, a timer will start -when the timer ends, the charge animation plays, which halfway through, activates a function too add velocity (actual charge part of charge) -If the enemy hits a wall, player, or box, it stops moving, but in the case of the player it plays a second animation (dash_hit) that looks like a chomp and kills the player if it hits them. Theres another If statement that sets velocity back to 0 when this happens also. OTHER CHANGES: -I removed the players health really, I like games that are one shot, because it’s subjectively more fun, I’ll make the player death a little more explosive if I have time. I’ll probably make them have three health but that’ll change when I do attack balancing -made the lil guys attack timer shorter, makes him more dangerous. NEXT TIME PLANS: -hopefully in one day (ima lock in rq) -gonna add a flying enemy, -literally just a tad fly, like 5x5 pixels, it’ll look at the player and fire acid that’ll kill you -i might change the death animation to be more BOOM (IYKWIM) :D -my goal is too complete the flying guy 100% tomorrow, but I got other stuff to do so we shall see -also it’ll be nice to not have to do major animating besides literally 6 pixels splaterring -if extra time, I’ll make a weird egg thing that turns into the fly THANKS FOR READING! as always (not really) go make some interesting, and uh learn something new every day please (P.S I made some changes after I took these videos so it still looks and feels kinda bad but not actually rn) ~Wilfred"}, {"post_id": 44000, "ts": "2026-08-09T14:18:20Z", "hours": 11.6767, "text": "Little enemy beginnings I haven’t actually finished anything yet, but I need to devlog anyways, but I have started to finish the second enemy, which is also the framework for more."}, {"post_id": 41460, "ts": "2026-08-05T17:57:18Z", "hours": 12.2908, "text": "player movement is complete!! went on vacation, so fell behind a bit, but finally got this done. I spent a lot of time thinking on how to make player movement good, and then thought of my BOTW playthroughs, where you can either hold your attack and have a powerful slash, or click fast and hit three in a row. First addition!: Ground pounds were pretty interesting, all it does is forces the player down hard if they attack in the air, decreases stamina, and then hits the ground, I added a dust cloud that explodes when he hits the ground, which just plays the animation and then disappears. I had to do some fenagling with this because the code knows when to start the animation because the player will be ground pounding and on the ground, which starts the poof and then stops ground pounding, which also keeps the animation from playing multiple times. SECOND: Annoying stupid player attacks. Tried to finish this in a day, so I was working till 11:00 at night, but I got the animations done and what not. When the player hits/holds the attack button, it starts a stopwatch that increases, when the player releases the button, depending on the time on this timer, it will either play the first of 3 quick attacks or the big attack, which does more damage. If the quick attacks are chosen, the first one will play, three things happen when thats starts, 2 timers start, and player velocity increases to 500. at the end of the attack, there are three things can happen, the player can wait until the animation ends, they can attack again, or they can walk to reset the attack earlier than waiting, the first timer forces the player to wait to cancel the attack by walking, and the second one stops their velocity so they jolt forward. at the end of the animation, a function is played that: starts the reset timer for the attack A variable increases that sets the next attack to be the second or third in the sequence, instead of the first and a if statement that resets the variable to 0 if it gets to 3. Theres some other details for weird situations, like falling off the edge and ground pounding while attacking, or the variable not resetting weirdly. But all of that was like an hour. Thanks for reading: Play my game when it comes out so I have a reason to finihs Also I need a name for the game (please, I suck at naming) and go play Legend of Zelda (or Just Cause 3) (or research operation Just Cause) #USinvadinglatinamericaAGAINfornoreason P.S (I was gonking on being up till eleven, but I did like 3 hours of animating and coding in like 30 minutes while being food deprived and barely awake because deadlines = lock in, so if you need to lock in just don’t sleep ig ) also, I’m technically not done ‘cause ma boy needs a sawed off before I’m done here Yee Haw"}, {"post_id": 35583, "ts": "2026-07-27T03:37:24Z", "hours": 1.1306, "text": "MOVEMENT PART # (3) les go took me short time, it’s ten o’clock im tired, pretty simple stuff. If player is sprinting and the crouch button is pressed, the normal function is overridden and a slide is activated, this just sets the animation to slide and the X velocity of the player to a high number. There’s some other code for just general quality of life, like stopping if you hit a wall and keeping you from changing directions, but the REALLLY cool part is jumping. Like in real life (trust), while sliding the player will jump further, which permits some cool movement combinations, like vaulting over gaps and climbing 4 block walls. I have to work out stamina changes depending on jump strength and stamina decrease for vaulting, but the movement getting pretty fleshed out. P.S, after I took the video, I changed the sprint stamina decrease to be a consistent decrease instead of being choppy like in the video, it’ll be in the next log, but it was just quality of life. NEXTS STUFFS: -dash -enemy lunge -stamina from hoisting and slide-jump stamina increase Thanks for reading!"}, {"post_id": 34965, "ts": "2026-07-26T03:00:51Z", "hours": 3.8936, "text": "Crouching! #2 in the player movement chronicles! Surprisingly, I also managed to create a whole new 5 animations! slide, crouch idle, crouch walk, and the sledge versions (not slide cause ya can’t sprint with sledge). I implemented all but the slide, which’ll take a long time, so I’m going to keep it off a bit. This was really straight forward to add, and for the first time in a long time, i had like only 1 problem . I really just had a piece of code that asks, “did ya click the crouch button?” and if so, it toggles crouch. IF (and only if!) the crouch is on (or “true”) the idle and walk animations are switched to their respective crouch variants, and the normal player hitbox is replaced by a shorter-er-est one. To bar the player from un-crouching in the midst of a tunnel, I added 2 new raycasts to the front and back of the players head facing up, these casts detect if there is a block above the player, and if either one of them detects anything, the player is unable to un-crouch until they are unshielded. Another quick thing I had to fix a bit was the raycasts detecting the player, which broke EVERYTHING so I just turned good ’ol collision mask/layer 20 into the super-cool (ALL-NEW !!) “player raycast collision!!!” which just only lets them interact with the floor and boxes, so yippee NEXT STEPeths!: -slide ): -enemy lunge -other player attacks (only hard attack right now which is bad)"}, {"post_id": 34347, "ts": "2026-07-24T23:18:41Z", "hours": 13.5214, "text": "Mantling and fixes Hi. I have had a very long week. I spent a lot of time working on sprites, mostly for the game 3rd level (no spoilers, (but that’s pretty boring) so heres the interesting part. I’ve been focusing on revamping player movement to make it feel more interesting and fun, and this is a good start. Mantling! if you don’t know what this is, it’s what you do when you get out of a pool without a ladder or staircase, pretty much just “pulling yourself up” The player does this by using raycasts, I added three, but one is for something else. One of them detects a wall in front of the player, and one detects a wall above. The code uses these casts to detect if the player is up against a wall, and if there is no wall above the player, pretty much checking if there is a mantalable ledge. If there is, the code says “you can mantle” Another line says: if you can mantle, and you are not on the ground, and if the player clicked space (Jump), then mantle. The annoying part was animations. When the player begins mantling, the hitbox and player position is frozen in space, and position is snapped to the nearest block to line up the animation. the only thing that moves during the animation is the player sprite, which means at the end of the animation, when the players position is finally changed, the player sprite needs to snap back at the EXACT same time, or it looks bad, which was hard. The other annoying part was the camera snapping randomly, as it moves with the player and not the sprite. I fixed this by just temporarily turning on the cameras position smoothing while the mantle is happening and then turning it off when the player moves again."}, {"post_id": 31003, "ts": "2026-07-19T01:34:03Z", "hours": 14.4064, "text": "sprites! done some stuff, mostly just game planning (sadly didn’t get time for because notes but I got a lot done, mostly just some serious drawing. I finished some tiles for the first and second levels, and some tiles for the next three."}, {"post_id": 26947, "ts": "2026-07-12T01:17:07Z", "hours": 4.2967, "text": "Quick hurt animations Main thing I added was animations for death and injury. I first added knockback when hit. It just takes the player’s scale.x (what i use for flipping the sprite) and multiplies it by 200 to the player velocity, since the scale is either 1 or -1, it changes the direction the player is thrown (in the future i’d like to make the scale the enemies direction, not the players, as if the player is flipped in the wrong direction, it could have knockback in the wrong direction (very bad) Theres was already a variable to detect if the player was being hit that was used for testing, so I just implemented that to play the injury animations. i also detected if the players health was zero or below after being hit, and if so it would make the player play the death animation instead of the injury. I have currently unimplemented animations for a before-death injured player, so after they are hit for the last time they will stand for a bit before collapsing. NEXT STUFF: (hast beeneth narrowed list) -add enemy knockback (only when injured, lok wierd when die) -fix player knockback thank yoh forth coming to my TED talk"}, {"post_id": 25010, "ts": "2026-07-08T22:32:29Z", "hours": 12.3911, "text": "I’m gonna start this by saying: I HATE animating! Aseprite made this so much easier, but GOD this was difficult… I think I had 5 situations this time around where the problem was the littlest change in the world, and I just needed to go to bed. I made 3 different walk cycles, before giving up and figuring out how to do it for real, it was only a little difficult after that. I have unused hurt, death, and push animations, and need to implement a shorter attack and smooth some things out still (jumping while attacking cough ) Almost all of these 12 hours was fixing stupid little problems and changing little pixels, probably some of the worst time ive spent on this project yet… (but still really interesting) NEXT STEPS::: -fix walk so it looks sensible (drifting) -make jumping illegal hwilst attacking -add short attack -customized tile map ????? Thank you for reading goodbye I want to stop animating"}, {"post_id": 21598, "ts": "2026-07-03T17:09:19Z", "hours": 4.0883, "text": "enemy attacks/better particles. This took some work, but not really… The enemy can now attack and hurt the player the codes really just the same as the player attacking the enemies. Theres a hurtbox in the player that gets hit by an area in the enemy that makes them take damage. The particles took some more difficult work. Godot has CPU and GPU particles, which apparently are different, it just depends on what in your computer renders them. I used GPU particles, because they run better and can collide with things. I whipped up a sprite sheet for the particles in Aseprite, which looked a lot better than the weird purple generic Godot things. The particles only collided with light occluders??, so I added an occlusion layer to the tile map, at some point I hope to create a better system for when they hit the ground, but thats not my priority right now. Next STEPS!!!!! -main thing is that the enemy has a lunge attack that I haven’t implemented yet, so thats next. -starting on the player sprites, this is a LOT of work, so its gonna take me a lot of time, but no time like the present"}, {"post_id": 20225, "ts": "2026-07-01T19:32:16Z", "hours": 5.3086, "text": "Some more enemy development! -first “enemy” in the game, a pretty basic little thing. -designed on Aseprite, took some time to set up with hakatime, but turns out I was using a version only used on Mac OS, so no kidding it was giving me trouble -I created unused animations for a lunge and whip attack animations that I will implement soon (?). NEXT STEPS :D : -stop the player from colliding with the enemy’s hitbox, it’s very annoying, and in the future will we a necessity for having many creatures in the same room -add the enemy attacks, I’ll probably just use a raycasy to see if the players close enough, and then make it hit, pretty simple… Also get Aseprite, it’s like 20 bucks but it’s a really good software, also it’s just really good for game making. gasp :D"}, {"post_id": 18857, "ts": "2026-06-30T01:51:26Z", "hours": 10.155, "text": "Basis of an enemy AI!!! the beginnings… I feel like ten hours is a little much for just this, but there was so much work to do. The main step began with a pretty simple area. It just detects if the player enters. The code uses the player position (or “target” position in the code), and subtracts it from the enemy position, if the numbers greater than 1 it moves one way and if less than -1 other. (The buffer in-between the 2 is just for smoothing) If the player is within the hitbox, the enemy shoots out a ray cast towards the player. If it touches the player, it lets the enemy move, if it hits a box or the ground first it doesn’t, pretty simple, till you realize what can go wrong… For clarification i have NO CLUE why any of what i did helped, but it did so yippee!!! The first problem was that the enemy would only detect the player if they were off the ground. I tried to fix this by forcing the ray cast to not interact with the Tile Map (which wouldn’t have worked anyways, because it still needs to so the objects can block the enemy’s sight). I set a piece of code to print what the enemy was interacting with, and it turns out it was the background? (I know, weird?) I seperated the background and collision ground into 2 tile layers, then turned of collisions for the back layer. After that there was some glitchy stuff which you can see in the video a bit, but I fixed almost all of it with literally one if statement that only lets the player become a target for the code (My code is a modified version from this website) / / / / / Godot 3.0: Visibility with Ray-casting · KCC Blog"}, {"post_id": 14832, "ts": "2026-06-24T02:59:54Z", "hours": 4.9869, "text": "Devlog #4? 3 big things this time, physics blocks, destructive blocks, and stamina upgrades. Physics!: -just a block but it’s a “rigid body”, so Godot gives it physics. -It uses some “borrowed code” to detect if the player is colliding with something and then add the players velocity to it.* -I had to change the hitbox of the floor to be a collision polygon, instead of one per block, which made the pushing kind of shotty.** Destruction!: -Really simple… just an enemy that can’t move or fight back. I added an animation so you can tell it’s getting hit but that’s the most complicated it got. Stamina! (it’s better): -I added 3 major things, though 2 of them are pretty small. First, I added a bar, Godot has a built-in progress bar node, so I just mapped the value from 0 - 10, and used the stamina value from the player as the value input -SECOND! I changed the recharge, instead of a variable that goes up when a timer ends, it now uses a move_toward() function to make the stamina tick up smoothly. -thirdibidily, a pause. Mainly because irl and in games you don’t just start recharging as soon as you stop moving. This uses a float that begins to tick up when the player starts moving, and when it surpasses a certain point, it allows the stamina to recharge. Final stuff!!! -I’ll start focusing on: -more indepth weapons -and maybe ai for enemies… probs something with raycasts……….."}, {"post_id": 13221, "ts": "2026-06-21T17:28:44Z", "hours": 1.7094, "text": "Sprinting! took a bit, but I finally got sprinting to work. Works pretty simply, the characters motion is determined by a speed variable, which just increases if the sprint button (shift) is held down. Here’s the code: if Input.is_action_just_pressed(“sprint”) and stamina >= 1: state_machine.travel(“sprint”) sprinting_timer.start() SPEED = 200 sprinting = true elif Input.is_action_just_released(“sprint”): SPEED = 75 sprinting = false sprinting_timer.stop() I’m using an animation_tree for my animations, instead of just a player, this helps the transitions from animations feel smoother, so thats what the “state_machine” is. The “sprinting” variable is used to force other animations (e.g, for idling and running) to check if the player is sprinting, and thus not override the animation (the sprinting animation currently is identical to running, but when I start designing the character i’ll change that). The timer is just on a .5 sec loop, and makes the stamina decrease when it ends, the second bit of code checks if you stopped sprinting, and returns the SPEED to normal and stops the timer loop. This code doesn’t actually fully work, as another if statement is needed. The extra “and” in the first check makes sure you can’t start sprinting if stamina is below one, but actually only checks once when you start sprinting, not constantly, so the sprinting doesn’t stop if stamina goes below 1 (like it should). if stamina < 1: SPEED = 75 sprinting_timer.stop() sprinting = false This code, unlike the first “if”, checks consistantly if stamina’s below one, and does the same job as if you let go of sprinting. This keeps stamina from going negative D: In the future I plan on adding a gradient to the effect, so the speed up isn’t as jarring, but this is a good start! Thanks to Brackeys for the current assets! (go watch his video on Godot, it’s very informative) ~wil"}, {"post_id": 12762, "ts": "2026-06-20T21:26:41Z", "hours": 13.1589, "text": "Finally started to develop a “game” made 3 things, Attacks, Stamina, and GUI Attacks: ->use hurtboxes detect if an area entered, if that area is_in_group(“attackarea”) the hurtbox takes a damage variable and applies it to the thing it’s attached too (Player, enemy, etc) Stamina: -> A timer slowly makes it tick upwards, starts at 10, and goes down if the player jumps or attacks, uses a Global Variable allow the GUI to display the stamina (there’s probably a better way but I’m lazy ¯ _ (ツ)_/¯) GUI: ->uses a canvas layer being displayed over a sub-viewport, which includes the coins and stamina, just displays text and then the quantities of each integer. next steps: ->destructible blocks ->physics blocks ->stamina bar (not integer) ->sprinting (and smoother movement. Thanks to Brackeys for the assets!"}, {"post_id": 5987, "ts": "2026-06-10T01:24:33Z", "hours": 4.8608, "text": "Finally done learning basic Godot!! My entire time has been dedicated to just learning how to use the software, and I’m glad to say I now have something to work off of. I still need to learn more, like GDscript, pixel art, and game design. Next Steps! -develop weapon (sledgehammer :D) -destructible terrain elements (fancy walls that get destroyed) -physics blocks -begin designing character and aliens"}]...
|
Title: Liable For Damages by @wilson_brunner | Sta Title: Liable For Damages by @wilson_brunner | Stardance
Devlogs:
Finally done learning basic Godot!! My entire time has been dedicated to just learning how to use the software, and I’m glad to say I now have something to work off of. I still need to learn more, like GDscript, pixel art, and game design. Next Steps! -develop weapon (sledgehammer :D) -destructible terrain elements (fancy walls that get destroyed) -physics blocks -begin designing character and aliens
Finally started to develop a “game” made 3 things, Attacks, Stamina, and GUI Attacks: ->use hurtboxes detect if an area entered, if that area is_in_group(“attackarea”) the hurtbox takes a damage variable and applies it to the thing it’s attached too (Player, enemy, etc) Stamina: -> A timer slowly makes it tick upwards, starts at 10, and goes down if the player jumps or attacks, uses a Global Variable allow the GUI to display the stamina (there’s probably a better way but I’m lazy ¯ _ (ツ)_/¯) GUI: ->uses a canvas layer being displayed over a sub-viewport, which includes the coins and stamina, just displays text and then the quantities of each integer. next steps: ->destructible blocks ->physics blocks ->stamina bar (not integer) ->sprinting (and smoother movement. Thanks to Brackeys for the assets!
Sprinting! took a bit, but I finally got sprinting to work. Works pretty simply, the characters motion is determined by a speed variable, which just increases if the sprint button (shift) is held down. Here’s the code: if Input.is_action_just_pressed(“sprint”) and stamina >= 1: state_machine.travel(“sprint”) sprinting_timer.start() SPEED = 200 sprinting = true elif Input.is_action_just_released(“sprint”): SPEED = 75 sprinting = false sprinting_timer.stop() I’m using an animation_tree for my animations, instead of just a player, this helps the transitions from animations feel smoother, so thats what the “state_machine” is. The “sprinting” variable is used to force other animations (e.g, for idling and running) to check if the player is sprinting, and thus not override the animation (the sprinting animation currently is identical to running, but when I start designing the character i’ll change that). The timer is just on a .5 sec loop, and makes the stamina decrease when it ends, the second bit of code checks if you stopped sprinting, and returns the SPEED to normal and stops the timer loop. This code doesn’t actually fully work, as another if statement is needed. The extra “and” in the first check makes sure you can’t start sprinting if stamina is below one, but actually only checks once when you start sprinting, not constantly, so the sprinting doesn’t stop if stamina goes below 1 (like it should). if stamina < 1: SPEED = 75 sprinting_timer.stop() sprinting = false This code, unlike the first “if”, checks consistantly if stamina’s below one, and does the same job as if you let go of sprinting. This keeps stamina from going negative D: In the future I plan on adding a gradient to the effect, so the speed up isn’t as jarring, but this is a good start! Thanks to Brackeys for the current assets! (go watch his video on Godot, it’s very informative) ~wil
Devlog #4? 3 big things this time, physics blocks, destructive blocks, and stamina upgrades. Physics!: -just a block but it’s a “rigid body”, so Godot gives it physics. -It uses some “borrowed code” to detect if the player is colliding with something and then add the players velocity to it.* -I had to change the hitbox of the floor to be a collision polygon, instead of one per block, which made the pushing kind of shotty.** Destruction!: -Really simple… just an enemy that can’t move or fight back. I added an animation so you can tell it’s getting hit but that’s the most complicated it got. Stamina! (it’s better): -I added 3 major things, though 2 of them are pretty small. First, I added a bar, Godot has a built-in progress bar node, so I just mapped the value from 0 - 10, and used the stamina value from the player as the value input -SECOND! I changed the recharge, instead of a variable that goes up when a timer ends, it now uses a move_toward() function to make the stamina tick up smoothly. -thirdibidily, a pause. Mainly because irl and in games you don’t just start recharging as soon as you stop moving. This uses a float that begins to tick up when the player starts moving, and when it surpasses a certain point, it allows the stamina to recharge. Final stuff!!! -I’ll start focusing on: -more indepth weapons -and maybe ai for enemies… probs something with raycasts………..
Basis of an enemy AI!!! the beginnings… I feel like ten hours is a little much for just this, but there was so much work to do. The main step began with a pretty simple area. It just detects if the player enters. The code uses the player position (or “target” position in the code), and subtracts it from the enemy position, if the numbers greater than 1 it moves one way and if less than -1 other. (The buffer in-between the 2 is just for smoothing) If the player is within the hitbox, the enemy shoots out a ray cast towards the player. If it touches the player, it lets the enemy move, if it hits a box or the ground first it doesn’t, pretty simple, till you realize what can go wrong… For clarification i have NO CLUE why any of what i did helped, but it did so yippee!!! The first problem was that the enemy would only detect the player if they were off the ground. I tried to fix this by forcing the ray cast to not interact with the Tile Map (which wouldn’t have worked anyways, because it still needs to so the objects can block the enemy’s sight). I set a piece of code to print what the enemy was interacting with, and it turns out it was the background? (I know, weird?) I seperated the background and collision ground into 2 tile layers, then turned of collisions for the back layer. After that there was some glitchy stuff which you can see in the video a bit, but I fixed almost all of it with literally one if statement that only lets the player become a target for the code (My code is a modified version from this website) / / / / / Godot 3.0: Visibility with Ray-casting · KCC Blog
Some more enemy development! -first “enemy” in the game, a pretty basic little thing. -designed on Aseprite, took some time to set up with hakatime, but turns out I was using a version only used on Mac OS, so no kidding it was giving me trouble -I created unused animations for a lunge and whip attack animations that I will implement soon (?). NEXT STEPS :D : -stop the player from colliding with the enemy’s hitbox, it’s very annoying, and in the future will we a necessity for having many creatures in the same room -add the enemy attacks, I’ll probably just use a raycasy to see if the players close enough, and then make it hit, pretty simple… Also get Aseprite, it’s like 20 bucks but it’s a really good software, also it’s just really good for game making. gasp :D
enemy attacks/better particles. This took some work, but not really… The enemy can now attack and hurt the player the codes really just the same as the player attacking the enemies. Theres a hurtbox in the player that gets hit by an area in the enemy that makes them take damage. The particles took some more difficult work. Godot has CPU and GPU particles, which apparently are different, it just depends on what in your computer renders them. I used GPU particles, because they run better and can collide with things. I whipped up a sprite sheet for the particles in Aseprite, which looked a lot better than the weird purple generic Godot things. The particles only collided with light occluders??, so I added an occlusion layer to the tile map, at some point I hope to create a better system for when they hit the ground, but thats not my priority right now. Next STEPS!!!!! -main thing is that the enemy has a lunge attack that I haven’t implemented yet, so thats next. -starting on the player sprites, this is a LOT of work, so its gonna take me a lot of time, but no time like the present
I’m gonna start this by saying: I HATE animating! Aseprite made this so much easier, but GOD this was difficult… I think I had 5 situations this time around where the problem was the littlest change in the world, and I just needed to go to bed. I made 3 different walk cycles, before giving up and figuring out how to do it for real, it was only a little difficult after that. I have unused hurt, death, and push animations, and need to implement a shorter attack and smooth some things out still (jumping while attacking cough ) Almost all of these 12 hours was fixing stupid little problems and changing little pixels, probably some of the worst time ive spent on this project yet… (but still really interesting) NEXT STEPS::: -fix walk so it looks sensible (drifting) -make jumping illegal hwilst attacking -add short attack -customized tile map ????? Thank you for reading goodbye I want to stop animating
Quick hurt animations Main thing I added was animations for death and injury. I first added knockback when hit. It just takes the player’s scale.x (what i use for flipping the sprite) and multiplies it by 200 to the player velocity, since the scale is either 1 or -1, it changes the direction the player is thrown (in the future i’d like to make the scale the enemies direction, not the players, as if the player is flipped in the wrong direction, it could have knockback in the wrong direction (very bad) Theres was already a variable to detect if the player was being hit that was used for testing, so I just implemented that to play the injury animations. i also detected if the players health was zero or below after being hit, and if so it would make the player play the death animation instead of the injury. I have currently unimplemented animations for a before-death injured player, so after they are hit for the last time they will stand for a bit before collapsing. NEXT STUFF: (hast beeneth narrowed list) -add enemy knockback (only when injured, lok wierd when die) -fix player knockback thank yoh forth coming to my TED talk
sprites! done some stuff, mostly just game planning (sadly didn’t get time for because notes but I got a lot done, mostly just some serious drawing. I finished some tiles for the first and second levels, and some tiles for the next three.
Mantling and fixes Hi. I have had a very long week. I spent a lot of time working on sprites, mostly for the game 3rd level (no spoilers, (but that’s pretty boring) so heres the interesting part. I’ve been focusing on revamping player movement to make it feel more interesting and fun, and this is a good start. Mantling! if you don’t know what this is, it’s what you do when you get out of a pool without a ladder or staircase, pretty much just “pulling yourself up” The player does this by using raycasts, I added three, but one is for something else. One of them detects a wall in front of the player, and one detects a wall above. The code uses these casts to detect if the player is up against a wall, and if there is no wall above the player, pretty much checking if there is a mantalable ledge. If there is, the code says “you can mantle” Another line says: if you can mantle, and you are not on the ground, and if the player clicked space (Jump), then mantle. The annoying part was animations. When the player begins mantling, the hitbox and player position is frozen in space, and position is snapped to the nearest block to line up the animation. the only thing that moves during the animation is the player sprite, which means at the end of the animation, when the players position is finally changed, the player sprite needs to snap back at the EXACT same time, or it looks bad, which was hard. The other annoying part was the camera snapping randomly, as it moves with the player and not the sprite. I fixed this by just temporarily turning on the cameras position smoothing while the mantle is happening and then turning it off when the player moves again.
Crouching! #2 in the player movement chronicles! Surprisingly, I also managed to create a whole new 5 animations! slide, crouch idle, crouch walk, and the sledge versions (not slide cause ya can’t sprint with sledge). I implemented all but the slide, which’ll take a long time, so I’m going to keep it off a bit. This was really straight forward to add, and for the first time in a long time, i had like only 1 problem . I really just had a piece of code that asks, “did ya click the crouch button?” and if so, it toggles crouch. IF (and only if!) the crouch is on (or “true”) the idle and walk animations are switched to their respective crouch variants, and the normal player hitbox is replaced by a shorter-er-est one. To bar the player from un-crouching in the midst of a tunnel, I added 2 new raycasts to the front and back of the players head facing up, these casts detect if there is a block above the player, and if either one of them detects anything, the player is unable to un-crouch until they are unshielded. Another quick thing I had to fix a bit was the raycasts detecting the player, which broke EVERYTHING so I just turned good ’ol collision mask/layer 20 into the super-cool (ALL-NEW !!) “player raycast collision!!!” which just only lets them interact with the floor and boxes, so yippee NEXT STEPeths!: -slide ): -enemy lunge -other player attacks (only hard attack right now which is bad)
MOVEMENT PART # (3) les go took me short time, it’s ten o’clock im tired, pretty simple stuff. If player is sprinting and the crouch button is pressed, the normal function is overridden and a slide is activated, this just sets the animation to slide and the X velocity of the player to a high number. There’s some other code for just general quality of life, like stopping if you hit a wall and keeping you from changing directions, but the REALLLY cool part is jumping. Like in real life (trust), while sliding the player will jump further, which permits some cool movement combinations, like vaulting over gaps and climbing 4 block walls. I have to work out stamina changes depending on jump strength and stamina decrease for vaulting, but the movement getting pretty fleshed out. P.S, after I took the video, I changed the sprint stamina decrease to be a consistent decrease instead of being choppy like in the video, it’ll be in the next log, but it was just quality of life. NEXTS STUFFS: -dash -enemy lunge -stamina from hoisting and slide-jump stamina increase Thanks for reading!
player movement is complete!! went on vacation, so fell behind a bit, but finally got this done. I spent a lot of time thinking on how to make player movement good, and then thought of my BOTW playthroughs, where you can either hold your attack and have a powerful slash, or click fast and hit three in a row. First addition!: Ground pounds were pretty interesting, all it does is forces the player down hard if they attack in the air, decreases stamina, and then hits the ground, I added a dust cloud that explodes when he hits the ground, which just plays the animation and then disappears. I had to do some fenagling with this because the code knows when to start the animation because the player will be ground pounding and on the ground, which starts the poof and then stops ground pounding, which also keeps the animation from playing multiple times. SECOND: Annoying stupid player attacks. Tried to finish this in a day, so I was working till 11:00 at night, but I got the animations done and what not. When the player hits/holds the attack button, it starts a stopwatch that increases, when the player releases the button, depending on the time on this timer, it will either play the first of 3 quick attacks or the big attack, which does more damage. If the quick attacks are chosen, the first one will play, three things happen when thats starts, 2 timers start, and player velocity increases to 500. at the end of the attack, there are three things can happen, the player can wait until the animation ends, they can attack again, or they can walk to reset the attack earlier than waiting, the first timer forces the player to wait to cancel the attack by walking, and the second one stops their velocity so they jolt forward. at the end of the animation, a function is played that: starts the reset timer for the attack A variable increases that sets the next attack to be the second or third in the sequence, instead of the first and a if statement that resets the variable to 0 if it gets to 3. Theres some other details for weird situations, like falling off the edge and ground pounding while attacking, or the variable not resetting weirdly. But all of that was like an hour. Thanks for reading: Play my game when it comes out so I have a reason to finihs Also I need a name for the game (please, I suck at naming) and go play Legend of Zelda (or Just Cause 3) (or research operation Just Cause) #USinvadinglatinamericaAGAINfornoreason P.S (I was gonking on being up till eleven, but I did like 3 hours of animating and coding in like 30 minutes while being food deprived and barely awake because deadlines = lock in, so if you need to lock in just don’t sleep ig ) also, I’m technically not done ‘cause ma boy needs a sawed off before I’m done here Yee Haw
Little enemy beginnings I haven’t actually finished anything yet, but I need to devlog anyways, but I have started to finish the second enemy, which is also the framework for more.
Enemy is complete: Chomper! Lot of work, but got it done. This is the, please avoid, very dangerous, you will die enemy. I haven’t balanced its health yet, and I’m not going to for a while, so it looks like an easy kill in the video. The weird quirks of this enemy are mostly in its charge attack, that rushes the player. It’s pretty easy to avoid, but once again i haven’t done attack balancing, so it may become harder later. The majority of the enemy works just like the lil guy, so idk read that devlog. But there is two major differences: LIST: gasp 1.!!!1! : idle stuff -really just a randomizer -if enemy is idling, starts a timer, and when it runs out of time, it does one of two things (using a randi() function) -if the outputs a 1, nothing happens, but if its a 2 it flips the enemy, thas all -the main reason for this is that since this enemy is so big, making it a tad more animated than the lil guy felt important to me, and also because the detection areas for the big guy are skewed towards the front, so him turning around makes the player sneaking up on him a little less common, it’s generally just for Q-O-l (slang btw) (only cool people understand) 2.!: dash -dear lord, why was hard so much D: -Wasn’t actually that difficult, I spent a lot of time trying stuff before realizing I just unleash my inner enginneer and do it step by step ’till it works, which it did. -first, theres three detection boxes, one for walking towards the player, one for the chomp, and one for dashing, if the player enters the dash-box, a timer will start -when the timer ends, the charge animation plays, which halfway through, activates a function too add velocity (actual charge part of charge) -If the enemy hits a wall, player, or box, it stops moving, but in the case of the player it plays a second animation (dash_hit) that looks like a chomp and kills the player if it hits them. Theres another If statement that sets velocity back to 0 when this happens also. OTHER CHANGES: -I removed the players health really, I like games that are one shot, because it’s subjectively more fun, I’ll make the player death a little more explosive if I have time. I’ll probably make them have three health but that’ll change when I do attack balancing -made the lil guys attack timer shorter, makes him more dangerous. NEXT TIME PLANS: -hopefully in one day (ima lock in rq) -gonna add a flying enemy, -literally just a tad fly, like 5x5 pixels, it’ll look at the player and fire acid that’ll kill you -i might change the death animation to be more BOOM (IYKWIM) :D -my goal is too complete the flying guy 100% tomorrow, but I got other stuff to do so we shall see -also it’ll be nice to not have to do major animating besides literally 6 pixels splaterring -if extra time, I’ll make a weird egg thing that turns into the fly THANKS FOR READING! as always (not really) go make some interesting, and uh learn something new every day please (P.S I made some changes after I took these videos so it still looks and feels kinda bad but not actually rn) ~Wilfred
Flying enemy is complete, in record time! wow, 8 hours for an enemy, how quick D: This was a challenge, but also really fun. This enemy is the flying one, which made it a little more difficult than just the copy and paste of old ones but still pretty cool. It works using a Navigation Agent, which is like Godot pathfinding. Fast forward three hours and a whole lot of troubleshooting, but that works. The enemy detects the player in the same fashion as the other enemies and then activates the nav-agent to being movement. It’ll follow the player through vents, passages and really anywhere. The fly has three main detection circles, the first one tells it to move towards the player, if the player enters the second one, it’ll freeze and stop moving, and if the player gets even closer, it’ll try to move away (by reversing the velocity var outputted by the nav-agent, iyc) the enemy’s one hit, acourse, but is really annoying to attack, (ill rework ground pounding to make this easier later). The enemy has a shooting attack, that is on a 6 second timer if it can see the player, otherwise it’s just on hold. its shots are pretty slow, so there easy to avoid, but in a crowded fight ya never know. The main quirk of this enemy is it has a really long forgetfulness timer, so even if it can’t see you, it’ll continue to follow for quite a long time, much longer than other enemies. Next:! -stationary, weird wall tentacle that shoots at you -egg spawner that hatches into 1 of three enemies (mystery ooh) -doors (ikr)
keypads, doors, and beginning of the first level. Im actually making a game! contains spoilers First of many… keypads were really difficult, every button, when clicked, multiplies the correct number by a multiplier, and adds it to a “code” variable. the multiplier is chosen based on what step of the code you’re on, (e.g, 1: 10000, 2: 1000, 3: 100, 4: 10, 5: 1), when you click the green button, it cross checks another variable with the one you typed, and if they’re the same, it sends the function to open the doors, and if not, everything resets. The other terminals and what not just open things when clicked on, so it’s just an easier version of the keypad.
quick devlog. I need to do this cause i got 10 hours, Im working on the level system and im so tired please why is htis so hard D: D: D: D: D: D: D: D: D: D: D: D:
Another devlog about levels. Started work on the second (this takes so long) I can’t say much for fear of spoilers, but just say this involves WAY to much code and sprites (I hate drawing so much)
quick stuff, nothing much Finished some updates, but I’m locked so don’t have time to write much
WORKING ON MY FINAL STRETCH I’m going to be locked in for the next few days, school starts, so I’ll have less time, but I got a boss fight and then bug fixing and sound effects, hears a sneak peak and one of the many things ive worked on. Also, I came up for a name. Looked up the universal laws for space and saw something about how “Countries of Origin are Liable for Damages caused by their space debris” and said “dang, thas dope” so now i have a name. In my next log ill have a longer devlog like a lite trailer, but the games pretty short, more like a showcase of learning. Thanks!
FINAL STRETCH time to lock in please oh no Im finishing the last level, no time to talk, but got like 4 things to finish THINGS: -level -boss fight -sounds -ending -bugs
SFX stuff, final thing before ending, just finishing sounds, really annoying though ngl. done soon, big update at end
Final Release (or close to it) Game will be out soon, I just gotta ship, but everythings done, I finished sounds, and the ending yesterday, like a 8 hour coding marathon, so i could get this out in time. PLEASE play it, it’s called Liable for Damages, I don’t know where I’ll post it yet, but It’ll probably be on Itch.io or just the game application file. It’s like 150,000 kilabytes, so it shouldn’t be too bad for any computer, hopefully (mines from like 2009 and it ran fine) P.S! Please, (if you do play), comment bugs, especially major things, EXCEPT: -Player dissapearing when opening menu in elevator (don’t try this, im not fixing it it’s funny) -Bugs on top of head, (js kill them) Anything else is bad and needs fix thanks. Also sorry no volume controls, I was crunching down to finish.
devlog for projects i forgot to add, really just time from learning to export godot games, very annoying um, fun fact, if you create a web game, change the file to index.html, or it literally WON’T WORK!!! Play my game (now!)
Started working on Liable for Damages 2.0 Devlog #1 Started working on better settings, mostly just things for volume, fonhts, and scrolling things. Whipped up some basic sprites in aseprite and took a day to implement them and figure out bugs, which were very annoying, mostly just related to button sizing. Had to mess around with Godot’s “containers”, for the first time, and it was quite bad, I’ve got some more work to do before I can get the sliders to work, but I’m close! Next stuff’s: -format sliders -start creating settings related to different busses -create saves for the sliders -implement button to change font -make font-changed labels for all maps -do bum ahh drivers ed instead of W Stardance I’ll hopefully release 2.0 within October, and I’mma try and devlog more! ~Wil
Ships:
I made something! This was my first time coding outside of Arduinos, and one of the biggest learning experiences of my life. There was stress, time crunches, and pain, but it all came down to the wire. The most challenging part was drawing, of course, I’m never going to do this again JUST because of the assets. Thanks for playing...
|
1793152470.5129516
|
1793238870.5129516
|
|
10343
|
Untitled Gull Game by @dannium | Stardance
|
dannium
|
1
|
21.0
|
333
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-18T01:50:38Z", "hours": 21.0, "multiplier": 17.08, "payout": 333, "blessing": "neutral", "text": "This is a Unity tower defense-ish game I made where the goal is to protect your sandcastle from enemies. The twist was that I had to add all of the suggestions from comments on my yt and after over 60 suggestions, I finished the game. It’s out on itch if you wanna play :)", "repo": "https://github.com/dannium/untitledgullgame", "demo": "https://dannium.itch.io/untitled-gull-game?secret=RCBhq5pTYKEbQkCBGfJDVuZ1zAI"}]...
|
[{"post_id": 30467, "ts": "202 [{"post_id": 30467, "ts": "2026-07-18T01:43:39Z", "hours": 4.9658, "text": "gull game final update Basically all I did was bug fixes for this one, there were some problems with inconsistent UI scaling with different screen resolutions, so I fixed that. I also made a github repo to put the game on, although I made it after making the game so unfortunately you can’t see the version history and stuff."}, {"post_id": 26652, "ts": "2026-07-11T16:18:08Z", "hours": 11.7972, "text": "Gull game is out!!!!!!! ok so a while back I started working on this tower defense-ish game where you have to protect your sandcastle from enemies. The whole point was that I had to add all the suggestions that commenters gave, and after over 60 suggestions, I finally finished. There’s still a few bugs, so any playtesting would be appreciated :) https://dannium.itch.io/untitled-gull-game?secret=RCBhq5pTYKEbQkCBGfJDVuZ1zAI"}, {"post_id": 18530, "ts": "2026-06-29T18:27:57Z", "hours": 4.5, "text": "Final suggestion! So this is a project I started a few months back, the whole premise was to make a game that I had to add every suggestion from comments on my yt channel to. I was supposed to finish it in a week or two but everything took a LOT longer than I anticipated, with over 60 suggestions, this is my final suggestion to be added though! The idea for the suggestion was basically to have a clone of the player and to cut to a monolouge of the player beating the clone. I kinda saved this one for last cause I thought it would be the worst to implement, but I think it ended up going pretty well. All I have left to do is some bug fixing and then I’ll have the game done and published on itch :)"}]...
|
Title: Untitled Gull Game by @dannium | Stardance
Title: Untitled Gull Game by @dannium | Stardance
Devlogs:
Final suggestion! So this is a project I started a few months back, the whole premise was to make a game that I had to add every suggestion from comments on my yt channel to. I was supposed to finish it in a week or two but everything took a LOT longer than I anticipated, with over 60 suggestions, this is my final suggestion to be added though! The idea for the suggestion was basically to have a clone of the player and to cut to a monolouge of the player beating the clone. I kinda saved this one for last cause I thought it would be the worst to implement, but I think it ended up going pretty well. All I have left to do is some bug fixing and then I’ll have the game done and published on itch :)
Gull game is out!!!!!!! ok so a while back I started working on this tower defense-ish game where you have to protect your sandcastle from enemies. The whole point was that I had to add all the suggestions that commenters gave, and after over 60 suggestions, I finally finished. There’s still a few bugs, so any playtesting would be appreciated :) https://dannium.itch.io/untitled-gull-game?secret=RCBhq5pTYKEbQkCBGfJDVuZ1zAI
gull game final update Basically all I did was bug fixes for this one, there were some problems with inconsistent UI scaling with different screen resolutions, so I fixed that. I also made a github repo to put the game on, although I made it after making the game so unfortunately you can’t see the version history and stuff.
Ships:
This is a Unity tower defense-ish game I made where the goal is to protect your sandcastle from enemies. The twist was that I had to add all of the suggestions from comments on my yt and after over 60 suggestions, I finished the game. It’s out on itch if you wanna play :)...
|
1793202559.734705
|
1793288959.734705
|
|
10349
|
audio_transcribe by @rainope | Stardance
|
rainope
|
1
|
5.52
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-07T22:20:51Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a tool to automatically record, transcribe, and summarize your meetings online, (whether it is a tutoring session, or a quick chat with your boss). Unlike AI notetaking services offered by big tech companies like Zoom and Notion, where you have to pay a subscription fee, all recording, transcribing, and summarizing (optionally) is done locally, so you won’t have to worry about both privacy and your money!", "repo": "https://github.com/eric-feng14/audio_transcribe", "demo": "https://github.com/eric-feng14/audio_transcribe/releases/tag/v1.0.0"}]...
|
[{"post_id": 31500, "ts": "202 [{"post_id": 31500, "ts": "2026-07-19T22:59:14Z", "hours": 2.5228, "text": "Finished updating the readme + some final finishing touches, project is ready for demo."}, {"post_id": 4565, "ts": "2026-06-07T22:12:52Z", "hours": 0.8667, "text": "Built a full record → transcribe → summarize pipeline from scratch. The core of the work was recorder.py : getting WASAPI loopback to behave like OBS required three iterations — blocking reads failed during silence, callback mode with gap reconstruction caused jitter, and the final approach renders continuous keep-alive silence to hold the audio engine active while streaming raw audio to disk and applying drift correction at the end. On top of that, wrote transcribe.py (faster-whisper, auto GPU detection, portable CUDA lib loading, VAD filter), summarize.py (map-reduce over the Anthropic API), and cleaned up watch_zoom.py to auto-record Zoom meetings via process detection. Tied everything together with run.py as a one-command entry point, setup.ps1 for one-time environment setup, run.bat as a double-click launcher, and a full README with per-tool argument tables. Also handled portability (no hardcoded paths, env-var config, .env + .gitignore ), renamed main.py to transcribe.py , and fixed a handful of Windows-specific bugs along the way (Unicode crashes, CUDA DLL path, name collisions)."}, {"post_id": 4488, "ts": "2026-06-07T20:22:42Z", "hours": 2.0733, "text": "Just got claude to update the README, everything is now up to date!"}]...
|
Title: audio_transcribe by @rainope | Stardance
D Title: audio_transcribe by @rainope | Stardance
Devlogs:
Just got claude to update the README, everything is now up to date!
Built a full record → transcribe → summarize pipeline from scratch. The core of the work was recorder.py : getting WASAPI loopback to behave like OBS required three iterations — blocking reads failed during silence, callback mode with gap reconstruction caused jitter, and the final approach renders continuous keep-alive silence to hold the audio engine active while streaming raw audio to disk and applying drift correction at the end. On top of that, wrote transcribe.py (faster-whisper, auto GPU detection, portable CUDA lib loading, VAD filter), summarize.py (map-reduce over the Anthropic API), and cleaned up watch_zoom.py to auto-record Zoom meetings via process detection. Tied everything together with run.py as a one-command entry point, setup.ps1 for one-time environment setup, run.bat as a double-click launcher, and a full README with per-tool argument tables. Also handled portability (no hardcoded paths, env-var config, .env + .gitignore ), renamed main.py to transcribe.py , and fixed a handful of Windows-specific bugs along the way (Unicode crashes, CUDA DLL path, name collisions).
Finished updating the readme + some final finishing touches, project is ready for demo.
Ships:
I made a tool to automatically record, transcribe, and summarize your meetings online, (whether it is a tutoring session, or a quick chat with your boss). Unlike AI notetaking services offered by big tech companies like Zoom and Notion, where you have to pay a subscription fee, all recording, transcribing, and summarizing (optionally) is done locally, so you won’t have to worry about both privacy and your money!...
|
1793202674.050537
|
1793289074.050537
|
|
10351
|
portfolio by @srivamsirajesh | Stardance
|
srivamsirajesh
|
1
|
4.0
|
15
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-26T00:31:51Z", "hours": 4.0, "multiplier": 3.46, "payout": 15, "blessing": "neutral", "text": "Its my personal portfolio with a floating dock from shadcn components. I really enjoyed customizing the existing template from magic UI.", "repo": "https://github.com/srirae/portfolio", "demo": "https://srirae.vercel.app"}]...
|
[{"post_id": 15753, "ts": "202 [{"post_id": 15753, "ts": "2026-06-25T17:01:35Z", "hours": 1.9744, "text": "Made a gantt chart for the experience part."}, {"post_id": 4441, "ts": "2026-06-07T19:22:57Z", "hours": 0.5017, "text": "Made changes to the floating dock with better icons and sorting."}, {"post_id": 3924, "ts": "2026-06-07T01:21:00Z", "hours": 2.0053, "text": "Just finished setting up the initial landing page. Will be adding more tomorrow"}]...
|
Title: portfolio by @srivamsirajesh | Stardance
D Title: portfolio by @srivamsirajesh | Stardance
Devlogs:
Just finished setting up the initial landing page. Will be adding more tomorrow
Made changes to the floating dock with better icons and sorting.
Made a gantt chart for the experience part.
Ships:
Its my personal portfolio with a floating dock from shadcn components. I really enjoyed customizing the existing template from magic UI....
|
1793101793.216651
|
1793188193.216651
|
|
10356
|
Comet Programming Language by @SpookyDervish | Sta Comet Programming Language by @SpookyDervish | Stardance...
|
SpookyDervish
|
1
|
192.82
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-10T00:29:49Z", "hours": 95.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Comet is in a mostly stable state and ready for people to use! I’ve written a large amount of documentation for the syntax itself, however, Comet is a lower-level programming language and not written for absolute beginner programmers. Please report any bugs on the “Issues” page of the Github/Chookspace repository!", "repo": "https://chookspace.com/Comet/Comet", "demo": "https://chsp.au/Comet/Comet/downloads.html"}]...
|
[{"post_id": 75051, "ts": "202 [{"post_id": 75051, "ts": "2026-09-29T00:28:39Z", "hours": 90.8728, "text": "Rewriting in Rust"}, {"post_id": 26285, "ts": "2026-07-11T00:06:25Z", "hours": 6.9497, "text": "Optimizing Compiler | Devlog #03 New Features ───────────────────────────────────────── Hello again! I’ve turned Comet into an optimizing compiler! So far we don’t have much, but Comet now has constant folding and constant propagation. But what does that actually mean? “Constant Folding” Constant folding means we look through the code for any math expressions or other things of the like. If there are any constants in the math expression, then we can replace the expression with what it will equal. For example: int x = ( 2 + 3 ) * ( 4 + 5 ) The constant folder will see (2+3), and because the expression only has constants it will replace it with 5 int x = 5 * ( 4 + 5 ) The constant folder then sees (4+5), and replaces it with 9. int x = 5 * 9 And finally it sees 5 * 9 and replaces it with 45. int x = 45 We’ve turned a 7 instruction expression into 1 instruction! “Constant Propogation” Constant propogation means that if a variable stays a value that the compiler knows throughout the variable’s lifetime, then we can replace all instances of that variable with its value. For example: int x = 2 + 3 int y = x + 3 * 2 Constant folding runs and we get int x = 5 int y = x + 6 x is a compile time constant now, and because it never stops being a constant, we can replace all values of x with 5. int x = 5 int y = 5 + 6 See how we can now run constant folding again now that we have more information? This is why compilers run optimizations over and over, until the code doesn’t change anymore. Bug Fixes ───────────────────────────────────────── Along with adding an optimizer, I’ve fixed a large bug Return statements are automatically added to functions now! Before, if you didn’t add a return statement, your function could go past where it should’ve been, crashing your program and possibly even running code it shouldn’t. That is now fixed. Comet also throws an error if you don’t include a return statement in a non-void function. Docs ───────────────────────────────────────── Finally, I’ve extended the docs on the Comet website. It previously only have information on everything up to loops, but now includes info on structs and arrays. That’s all from me, see you next time!"}, {"post_id": 25598, "ts": "2026-07-09T23:20:09Z", "hours": 3.9903, "text": "Sockets in Comet | Devlog #02 External Library Updates ───────────────────────────────────────── External libraries now have the ability to define enums. With this, I’ve begun work on a socket library for fun. Socket External Lib ───────────────────────────────────────── In the screenshot I’ve included, I’ve got a very tiny client and server example set up where the server waits for a single connection, and then prints out what the connection sent. I’ve got the core functions done but I’m gonna add more methods like readExact, readAll, those kinds of methods that just make your life a bit easier. Bug Fixes ───────────────────────────────────────── With the help of a friend, I’ve fixed a number of bugs. I also got cometc and comet to compile without any warnings, which is nice. Some bugs where: A lexer issue where trying to access a field from a list access would be incorrectly seen as a decimal number unless you added a space. Type checking on arrays was extremely strict and so I’ve lessened it so that arrays are usable See you next time!"}, {"post_id": 23866, "ts": "2026-07-07T01:45:34Z", "hours": 91.2869, "text": "Devlog #1 - Core of Comet is done What I currently have I’ve got generics, arrays, structs, inheritance, external library support, a package manager, exceptions, loops, enums, and everything else working. My next steps are writing some of the standard library in C, after I get the language to a usable state I’m planning to bootstrap it! What I did since I created the project When I created this project on Stardance I had already begun working on it before the competition started. I think I had already spent around 100 hours on the project. The project was originally written in LLVM, however, LLVM was quite difficult to get working, and I wanted to make progress rather than be stuck fighting with a slow piece of junk. So I decided to rewrite the entire compiler. I created a VM and decided that the VM would be my compilation target. This made things such as exceptions possible because I would not have to worry about stack unwinding and other very complicated and difficult things. I’ve made a huge amount of progress since then, and have gotten exceptions, external libraries, generics and structs, as well as arrays working since I created this project. I must admit, I forgot about the devlogs until now and so this is why I’m so far ahead and creating my first devlog only now. :P I’ll make sure to keep you guys updated though, see you soon once I get a socket running!"}]...
|
Title: Comet Programming Language by @SpookyDervis Title: Comet Programming Language by @SpookyDervish | Stardance
Devlogs:
Devlog #1 - Core of Comet is done What I currently have I’ve got generics, arrays, structs, inheritance, external library support, a package manager, exceptions, loops, enums, and everything else working. My next steps are writing some of the standard library in C, after I get the language to a usable state I’m planning to bootstrap it! What I did since I created the project When I created this project on Stardance I had already begun working on it before the competition started. I think I had already spent around 100 hours on the project. The project was originally written in LLVM, however, LLVM was quite difficult to get working, and I wanted to make progress rather than be stuck fighting with a slow piece of junk. So I decided to rewrite the entire compiler. I created a VM and decided that the VM would be my compilation target. This made things such as exceptions possible because I would not have to worry about stack unwinding and other very complicated and difficult things. I’ve made a huge amount of progress since then, and have gotten exceptions, external libraries, generics and structs, as well as arrays working since I created this project. I must admit, I forgot about the devlogs until now and so this is why I’m so far ahead and creating my first devlog only now. :P I’ll make sure to keep you guys updated though, see you soon once I get a socket running!
Sockets in Comet | Devlog #02 External Library Updates ───────────────────────────────────────── External libraries now have the ability to define enums. With this, I’ve begun work on a socket library for fun. Socket External Lib ───────────────────────────────────────── In the screenshot I’ve included, I’ve got a very tiny client and server example set up where the server waits for a single connection, and then prints out what the connection sent. I’ve got the core functions done but I’m gonna add more methods like readExact, readAll, those kinds of methods that just make your life a bit easier. Bug Fixes ───────────────────────────────────────── With the help of a friend, I’ve fixed a number of bugs. I also got cometc and comet to compile without any warnings, which is nice. Some bugs where: A lexer issue where trying to access a field from a list access would be incorrectly seen as a decimal number unless you added a space. Type checking on arrays was extremely strict and so I’ve lessened it so that arrays are usable See you next time!
Optimizing Compiler | Devlog #03 New Features ───────────────────────────────────────── Hello again! I’ve turned Comet into an optimizing compiler! So far we don’t have much, but Comet now has constant folding and constant propagation. But what does that actually mean? “Constant Folding” Constant folding means we look through the code for any math expressions or other things of the like. If there are any constants in the math expression, then we can replace the expression with what it will equal. For example: int x = ( 2 + 3 ) * ( 4 + 5 ) The constant folder will see (2+3), and because the expression only has constants it will replace it with 5 int x = 5 * ( 4 + 5 ) The constant folder then sees (4+5), and replaces it with 9. int x = 5 * 9 And finally it sees 5 * 9 and replaces it with 45. int x = 45 We’ve turned a 7 instruction expression into 1 instruction! “Constant Propogation” Constant propogation means that if a variable stays a value that the compiler knows throughout the variable’s lifetime, then we can replace all instances of that variable with its value. For example: int x = 2 + 3 int y = x + 3 * 2 Constant folding runs and we get int x = 5 int y = x + 6 x is a compile time constant now, and because it never stops being a constant, we can replace all values of x with 5. int x = 5 int y = 5 + 6 See how we can now run constant folding again now that we have more information? This is why compilers run optimizations over and over, until the code doesn’t change anymore. Bug Fixes ───────────────────────────────────────── Along with adding an optimizer, I’ve fixed a large bug Return statements are automatically added to functions now! Before, if you didn’t add a return statement, your function could go past where it should’ve been, crashing your program and possibly even running code it shouldn’t. That is now fixed. Comet also throws an error if you don’t include a return statement in a non-void function. Docs ───────────────────────────────────────── Finally, I’ve extended the docs on the Comet website. It previously only have information on everything up to loops, but now includes info on structs and arrays. That’s all from me, see you next time!
Rewriting in Rust
Ships:
Comet is in a mostly stable state and ready for people to use! I’ve written a large amount of documentation for the syntax itself, however, Comet is a lower-level programming language and not written for absolute beginner programmers. Please report any bugs on the “Issues” page of the Github/Chookspace repository!...
|
1793116174.8820775
|
1793202574.8820775
|
|
10357
|
Apple App by @Nihu | Stardance
|
Nihu
|
1
|
27.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-27T20:51:56Z", "hours": 27.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "For my very first coding project in Xcode, I built an iOS app that helps users quickly locate nearby recycling centers. My favorite accomplishment was successfully embedding Apple Maps and generating a list of local centers to help people recycle more easily. Although working with MapKit and setting up the map was a big challenge, I am super proud to have built a fully functional app from scratch!", "repo": "https://github.com/Nihu-Wihu/BinWise", "demo": "https://youtube.com/shorts/Vm0KYB0_Qak"}]...
|
[{"post_id": 35567, "ts": "202 [{"post_id": 35567, "ts": "2026-07-27T03:04:20Z", "hours": 12.4489, "text": "I finished my app!!!!! I have added the MAPKit part and I sadly had to scrap a lot of my ideas like adding a barcode scanner becuase it was too advanced for me. I succesfull imbedded Apple maps into the app, so the maps run in the app as opposed to it taking you to apple map it self"}, {"post_id": 31038, "ts": "2026-07-19T03:27:46Z", "hours": 5.0953, "text": "I started studing Xcode more. In this part I tried to make images load onto Xcode but I didn’t lieke how that looked. I started learinng how to use Apple maps here but didnt implement it beucase it had a lot of bugs. Next devlog, I will probably ask AI to help me debug and complete the MAP kit part"}, {"post_id": 12631, "ts": "2026-06-20T17:08:08Z", "hours": 7.7894, "text": "idk how to connect my wakatime with my hackatime???"}, {"post_id": 3928, "ts": "2026-06-07T01:33:14Z", "hours": 1.575, "text": "Apple App - I don’t know whta exactly my app will be but I will figure it out soon! (trust) So now I’m just familiarizing myself with XCode’s interface and functions; since I found out it is actually pretty difffernt from the coding languages I know. That’s all for now!"}]...
|
Title: Apple App by @Nihu | Stardance
Devlogs:
Ap Title: Apple App by @Nihu | Stardance
Devlogs:
Apple App - I don’t know whta exactly my app will be but I will figure it out soon! (trust) So now I’m just familiarizing myself with XCode’s interface and functions; since I found out it is actually pretty difffernt from the coding languages I know. That’s all for now!
idk how to connect my wakatime with my hackatime???
I started studing Xcode more. In this part I tried to make images load onto Xcode but I didn’t lieke how that looked. I started learinng how to use Apple maps here but didnt implement it beucase it had a lot of bugs. Next devlog, I will probably ask AI to help me debug and complete the MAP kit part
I finished my app!!!!! I have added the MAPKit part and I sadly had to scrap a lot of my ideas like adding a barcode scanner becuase it was too advanced for me. I succesfull imbedded Apple maps into the app, so the maps run in the app as opposed to it taking you to apple map it self
Ships:
For my very first coding project in Xcode, I built an iOS app that helps users quickly locate nearby recycling centers. My favorite accomplishment was successfully embedding Apple Maps and generating a list of local centers to help people recycle more easily. Although working with MapKit and setting up the map was a big challenge, I am super proud to have built a fully functional app from scratch!...
|
1793137768.8968794
|
1793224168.8968794
|
|
10359
|
Esp32 Mini-Projects by @BlueCheckmate | Stardance
|
BlueCheckmate
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-16T04:17:57Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "The journey began in Flavourtown, where I got a Raspberry pi 500 and an esp32 starter kit, with a pledge to start learning and finding out what I like and don’t like. And while the start has been quite underwhelming, it’s still a start. And while it may not look like much (especially the 1st one), it represents the start of my journey. Those 2 hours don’t tell the full story of spending 5 hours trying to get Arduino IDE on my raspberry pi only to figure out it can’t. They don’t show the setbacks I’ve faced in what seem like elementary tasks. Those buttons don’t tell you that I spent one and a half hours trying to figure out why an LED won’t turn on after pressing the button. (It was because of a faulty wire). Yes, it is only 2 hours and 2 projects, but it’s about the experience I gained. And while it’s not much, it’s the beginning of a journey, and the first step is always the hardest to take.", "repo": "https://github.com/checkmateman57/ESP32-mini-projects", "demo": ""}]...
|
[{"post_id": 68969, "ts": "202 [{"post_id": 68969, "ts": "2026-09-16T04:03:57Z", "hours": 1.0189, "text": "Ball Knowledge required: https://www.youtube.com/shorts/pqEOvjCt_ew Basically the red switch will turn on the red light no matter where the switch or light is located on the board. Same with all the other colours. Pretty cool right? And what if a newbie like me could do the same thing? Well Guess What??? I CANNN!!!!! That’s right folks, yours truly managed to code an esp32, 4 buttons, and 4 LEDS so the same button can turn on the same LED no matter where its wired!!! WHAT???? CRAZY, RIGHT??? It’s some nifty code, try and figure it out!"}, {"post_id": 3968, "ts": "2026-06-07T03:19:46Z", "hours": 1.0058, "text": "My first mini project!!!! In this project, I created a little thing where 5 LEDs of different colours light up in order and then go out in that same order. What went well: Since this is a very simple project, the code was quite easy to understand and do. Likewise, the wiring was also very easy. What went wrong: I initially planned to do this with 10 LEDs, but then I realized they would be to crammed to all fit in a nice row and looked good, so I downsized to 5. Additionally, I am not fully aware of all of the pins on the esp32 so I wasn’t aware that pin 35 is solely for input. The blue LED wouldn’t light up, and I thought I was going crazy. The fix was to just use another pin and bring it in the row through a couple extra wires. What can improve: Now I ain’t no genius here, but I believe that this code was very long and very repetitive, since it just defines, pin number, sets it to output, then turns it on high, delay, next pin, until they’re all high, then turns them off, delay, repeat until they’re all off. I’m sure that this can be condensed, and be made shorter. Looks like I’ll do that when I’m more advanced. Additionally, the VSCode + Github copilot in the beginning knew what I was going to write, and I want it to be purely my code so I turned it off. Final Comments: Not a bad start, but we’ve just started and there’s a lot to learn. I also hate having to put semi-colons at the end of every declaration. What is this bro, just hit enter into the next line and call it a day."}]...
|
Title: Esp32 Mini-Projects by @BlueCheckmate | Sta Title: Esp32 Mini-Projects by @BlueCheckmate | Stardance
Devlogs:
My first mini project!!!! In this project, I created a little thing where 5 LEDs of different colours light up in order and then go out in that same order. What went well: Since this is a very simple project, the code was quite easy to understand and do. Likewise, the wiring was also very easy. What went wrong: I initially planned to do this with 10 LEDs, but then I realized they would be to crammed to all fit in a nice row and looked good, so I downsized to 5. Additionally, I am not fully aware of all of the pins on the esp32 so I wasn’t aware that pin 35 is solely for input. The blue LED wouldn’t light up, and I thought I was going crazy. The fix was to just use another pin and bring it in the row through a couple extra wires. What can improve: Now I ain’t no genius here, but I believe that this code was very long and very repetitive, since it just defines, pin number, sets it to output, then turns it on high, delay, next pin, until they’re all high, then turns them off, delay, repeat until they’re all off. I’m sure that this can be condensed, and be made shorter. Looks like I’ll do that when I’m more advanced. Additionally, the VSCode + Github copilot in the beginning knew what I was going to write, and I want it to be purely my code so I turned it off. Final Comments: Not a bad start, but we’ve just started and there’s a lot to learn. I also hate having to put semi-colons at the end of every declaration. What is this bro, just hit enter into the next line and call it a day.
Ball Knowledge required: https://www.youtube.com/shorts/pqEOvjCt_ew Basically the red switch will turn on the red light no matter where the switch or light is located on the board. Same with all the other colours. Pretty cool right? And what if a newbie like me could do the same thing? Well Guess What??? I CANNN!!!!! That’s right folks, yours truly managed to code an esp32, 4 buttons, and 4 LEDS so the same button can turn on the same LED no matter where its wired!!! WHAT???? CRAZY, RIGHT??? It’s some nifty code, try and figure it out!
Ships:
The journey began in Flavourtown, where I got a Raspberry pi 500 and an esp32 starter kit, with a pledge to start learning and finding out what I like and don’t like. And while the start has been quite underwhelming, it’s still a start. And while it may not look like much (especially the 1st one), it represents the start of my journey. Those 2 hours don’t tell the full story of spending 5 hours trying to get Arduino IDE on my raspberry pi only to figure out it can’t. They don’t show the setbacks I’ve faced in what seem like elementary tasks. Those buttons don’t tell you that I spent one and a half hours trying to figure out why an LED won’t turn on after pressing the button. (It was because of a faulty wire). Yes, it is only 2 hours and 2 projects, but it’s about the experience I gained. And while it’s not much, it’s the beginning of a journey, and the first step is always the hardest to take....
|
1793145173.4737673
|
1793231573.4737673
|
|
10374
|
CoFound by @hariharann | Stardance
|
hariharann
|
1
|
14.14
|
50
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T06:26:42Z", "hours": 8.0, "multiplier": 7.52, "payout": 50, "blessing": "neutral", "text": "we shipped CoFound — basically a startup co founder os in your browser drop a raw idea and it turns into a living knowledge graph with 11 nodes. talk to the orchestrator (voice or text), spawn research agents, pivot without nuking your whole graph, get today’s priority, and export a scaffold zip when you’re ready to build it’s live at cofounder-alpha.vercel.app — backend on render, frontend on vercel, real api, no fake demo data honestly stoked for people to try it. type any idea, watch agents fill the canvas, ask the orb to dig into competitors or hand off the next move. would love to see what founders do with it try it → poke around → tell us what breaks :)", "repo": "https://github.com/nothariharan/CoFound", "demo": "https://cofounder-alpha.vercel.app/"}]...
|
[{"post_id": 36989, "ts": "202 [{"post_id": 36989, "ts": "2026-07-29T13:07:53Z", "hours": 3.8772, "text": "LANDING REVAMP ( mainly coz earlier landing was way too simple and ai made 🥀) ( current version is made using pre made ui components from 21st.dev reworked by me for my website requirements :DD ) this week was mostly taste on the marketing surface. the product shell was already quieter. i wanted the first screen to prove the cofounder idea before anyone drops an idea in the box. what changed how it works is a scrub now not a row of steps anymore. five agents land around the stage, then they converge into one workspace frame as you scroll. once the frame wraps them, the floating agents drop out and the built-in chips light up inside the box. desktop = pinned GSAP scrub mobile = skip the flying bits, just reveal the finished workspace idea → mrr beat second section tells the same story with the actual product chrome: starting prompt researcher / validator / builder come online connectors draw into the workspace hub evidence fills in plan card flips into traction growth panel hits $12.4k MRR ( trust me bro ) the right outcome card is a single surface now. copper for plan, mint for traction. no stacked second box eating the border. hero cursors in the gutters orchestrator, researcher, validator, builder, growth, market. they sit in the side margins, aim at the idea input, drift on their own timers, and nudge away when your mouse gets near. left side was clipping the pointer tips for a bit — fixed the overflow + edge padding so they stay whole. type + motion polish scene cues ( pull together , growth , etc.) are bigger so the scrub beat is readable at a glance. under the hood (only what this pass needed) AgentWorkGallery — converge / wrap story WorkspacePreview + storyCopy — idea to mrr timeline AgentCursors — gutter homes, flee, clip fix shared gsap + ScrollTrigger registration redeployed frontend on Vercel, API still on Render / Atlas open workspace / get started paths were left alone on purpose. they already worked after the last prod pass. this one was the FACE of the product. still cooking these ( oauth is ot on my checklist for now but eh ) oauth real multi-project less firefighting, more daily-driver product mess around with the landing lmk if it breaks anywhere ( it mite in mobile tho lowk its kind of optimized but yeah )"}, {"post_id": 31683, "ts": "2026-07-20T09:16:55Z", "hours": 2.2608, "text": "updateee the free render box kept dying 🔃 512mb oom · chat said backend not running · get started felt broken this one is mostly: make prod stay up + make the landing feel like agents already live there backend got LIGHTERR on purpose dropped mongodb mcp entirely — no more node subprocess eating ram dropped google adk + scrapling / playwright too everything now goes through one atlas store via motor agents · api · journal · graph · same path single uvicorn worker capped concurrency smaller mongo pool health comes back with store=atlas instead of hanging on cold start chat + get started actually work again 🗣️ core idea sidebar talks to the orchestrator now (not the wrong dialogue endpoint) get started only clears a session on a real 404 cold starts say “agents waking up” instead of fake “service dead” frontend points at the live render url that actually stays up gemini can flake so we added bedrock nova pro as fallback ( mainly coz i got lots of aws credits lyin around ) if google is down, scaffolding / reasoning still goes landing got the illustration pass ( very sick check it out ) threw out the overlapping stock agent cards built a real idea → impact loop instead made a proper animation with a lil help of AI on it but yeah the loop research → validate → build → test & learn → grow dashed continuous feedback path underneath that animates steps pulse on a timer so it reads like agents running the loop not a static marketing row CSS + SVG + lucide icons · no unsplash filler matches the cofound dark terracotta vibe agent cursors on the hero orchestrator / researcher / builder / growth / validator staggered wander so they dont all move at once sometimes drift toward the idea input like theyre working flee when your mouse gets close whole point is multiple agents already on the job before you even type dashboard chrome got quieter killed duplicate brand / cta / export clutter across top bar · left rail · action bar canvas can breathe one home per control next oauth → multi-project → fewer firefights more product try it → cofounder-alpha.vercel.app poke the landing cursors · open a workspace · yell if something 503s again :)"}, {"post_id": 12371, "ts": "2026-06-20T06:04:28Z", "hours": 1.3044, "text": "UPDATEEE : hopefully the last one before we ship last time we made the dashboard honest devlog 2 we made it actually run your startup this one we put it on the internet WE ARE LIVEEEE 🔥🔥🔥🔥 backend on Render , frontend on Vercel live demo → cofounder-alpha.vercel.app frontend talks to the real api now — no mock mode, no fake data survived production hosted deploys were breaking us in quiet annoying ways so we fixed that startup doesn’t block Render health checks anymore — atlas and mcp boot in the background fixed atlas tls on hosted deploys with certifi pinned python 3.11 so render doesn’t randomly break on 3.13 mongodb mcp runs via npx at runtime — no global npm install on the server orchestrator got tougher optional aws bedrock fallback if gemini is down — still falls back cleanly orchestrator can open panels for you now — settings, export, journal, integrations, jump to a node small things that matter idea framer names your workspace properly on first create getting started checklist + coach marks so new users aren’t lost settings dialog shows gaps vs what agents actually know export zip now ships PROJECT_RULES.md instead of editor-specific stuff cleaned up the repo — reads like a product now not a build log still before v1 oauth · real multi-project · gmail/slack · persona lens · auth shipping next oauth → multi-project → first public v1 after that fewer devlogs more product see ya on the other side of ship byeee :)"}, {"post_id": 6852, "ts": "2026-06-11T14:40:21Z", "hours": 4.8411, "text": "updateee!!! ( sorry was busyy lol ) Last time: kill the fake stuff, make the dashboard real. This week: make it actually run your startup / project. talk to your startup The orchestrator is the main control surface now. made a literal jarvis u can talk to do anything literally - pull up stats , spawn 67 sub agents literally anything First load? It greets you with where your workspace is at. No blank screen. Text chat still lives in the right panel if you’d rather type quietly. the graph moves 11 nodes still the backbone. But you can now spawn custom research nodes on the fly. “Dig into competitor gaps” → parallel researchers spin up, new nodes drop on the canvas, wired to the right parent. Or hit + on the canvas and kick off a custom task yourself. Left rail shows the agent tree with live status dots. Animated edges when something’s running. pivot without starting over Ideas change. A diff classifier figures out what’s actually affected — only those nodes reset and re-research. Affected nodes blur on the canvas. You don’t lose everything because you tweaked positioning. observe → grow → act Build observer — GitHub commits update the build node Observe agent — PostHog funnels, flags conversion drops Growth agent — ranks the highest-ROI next move Shows up as today’s priority in the action bar. Mark done or hand it to the orchestrator in one click. shippable output Revenue + product + tech all at 70%+ → approve & export unlocks. Scaffold zip: README, tech stack, UI spec, .cursorrules , handoff doc. Preview in modal, download, drop into Cursor. – literally how clajude design now works like btw decision journal Every graph mutation logged — what changed, why, evidence, confidence shifts. Scroll the history, click through to the node. Useful when you’re three pivots deep. under the hood Karpathy-style research loop with critique scoring (accepts at 80+) – best one out there Google ADK planner breaks workspace into research tasks MongoDB MCP wired into the agent loop at runtime Firecrawl, Reddit, Scrapling for market evidence (mite add more ) SSE streams agent progress + graph updates live Node history tab — full attempt log per node polish Confidence rings, unlock animations, startup health score, branded landing page, workspace resume on reload. not yet OAuth (still PAT), real multi-project, Gmail/Slack, persona lens, auth. next OAuth → multi-project → Gmail/Slack → deeper observe/growth loops. see ya on next one byeee :)"}, {"post_id": 4896, "ts": "2026-06-08T13:53:35Z", "hours": 1.7214, "text": "#devlog 1 more to come :) the moat behind it : why hire dozens of people when 1 platform can take care of it all from developing , advertising , marketing etc and thats CoFound demo mode is still there if you want to poke around without committing to an idea. the dashboard itself is cleaner now. no custom cursor on the product page, no fake project list, no hardcoded restaurant copilot stuff. what you see maps to your actual workspace. integrations are starting to do real work. github and posthog have connect flows that explain what they unlock (build and observe nodes). reddit research runs automatically. gmail, slack, and gummysearch are marked coming soon for now. first-time users get a getting started checklist that tracks real progress: agents researching, connecting integrations, chatting with nodes, exporting a blueprint. coach marks point you at the canvas, integrations rail, and today’s priority bar. where it’s heading tighter onboarding so every click has a clear next step. real oauth for integrations instead of manual tokens. multi-project switching. deeper observe and growth loops once posthog and github are connected. basically turning cofound from “cool demo” into something you’d actually open every day while building a startup."}]...
|
Title: CoFound by @hariharann | Stardance
Devlogs Title: CoFound by @hariharann | Stardance
Devlogs:
#devlog 1 more to come :) the moat behind it : why hire dozens of people when 1 platform can take care of it all from developing , advertising , marketing etc and thats CoFound demo mode is still there if you want to poke around without committing to an idea. the dashboard itself is cleaner now. no custom cursor on the product page, no fake project list, no hardcoded restaurant copilot stuff. what you see maps to your actual workspace. integrations are starting to do real work. github and posthog have connect flows that explain what they unlock (build and observe nodes). reddit research runs automatically. gmail, slack, and gummysearch are marked coming soon for now. first-time users get a getting started checklist that tracks real progress: agents researching, connecting integrations, chatting with nodes, exporting a blueprint. coach marks point you at the canvas, integrations rail, and today’s priority bar. where it’s heading tighter onboarding so every click has a clear next step. real oauth for integrations instead of manual tokens. multi-project switching. deeper observe and growth loops once posthog and github are connected. basically turning cofound from “cool demo” into something you’d actually open every day while building a startup.
updateee!!! ( sorry was busyy lol ) Last time: kill the fake stuff, make the dashboard real. This week: make it actually run your startup / project. talk to your startup The orchestrator is the main control surface now. made a literal jarvis u can talk to do anything literally - pull up stats , spawn 67 sub agents literally anything First load? It greets you with where your workspace is at. No blank screen. Text chat still lives in the right panel if you’d rather type quietly. the graph moves 11 nodes still the backbone. But you can now spawn custom research nodes on the fly. “Dig into competitor gaps” → parallel researchers spin up, new nodes drop on the canvas, wired to the right parent. Or hit + on the canvas and kick off a custom task yourself. Left rail shows the agent tree with live status dots. Animated edges when something’s running. pivot without starting over Ideas change. A diff classifier figures out what’s actually affected — only those nodes reset and re-research. Affected nodes blur on the canvas. You don’t lose everything because you tweaked positioning. observe → grow → act Build observer — GitHub commits update the build node Observe agent — PostHog funnels, flags conversion drops Growth agent — ranks the highest-ROI next move Shows up as today’s priority in the action bar. Mark done or hand it to the orchestrator in one click. shippable output Revenue + product + tech all at 70%+ → approve & export unlocks. Scaffold zip: README, tech stack, UI spec, .cursorrules , handoff doc. Preview in modal, download, drop into Cursor. – literally how clajude design now works like btw decision journal Every graph mutation logged — what changed, why, evidence, confidence shifts. Scroll the history, click through to the node. Useful when you’re three pivots deep. under the hood Karpathy-style research loop with critique scoring (accepts at 80+) – best one out there Google ADK planner breaks workspace into research tasks MongoDB MCP wired into the agent loop at runtime Firecrawl, Reddit, Scrapling for market evidence (mite add more ) SSE streams agent progress + graph updates live Node history tab — full attempt log per node polish Confidence rings, unlock animations, startup health score, branded landing page, workspace resume on reload. not yet OAuth (still PAT), real multi-project, Gmail/Slack, persona lens, auth. next OAuth → multi-project → Gmail/Slack → deeper observe/growth loops. see ya on next one byeee :)
UPDATEEE : hopefully the last one before we ship last time we made the dashboard honest devlog 2 we made it actually run your startup this one we put it on the internet WE ARE LIVEEEE 🔥🔥🔥🔥 backend on Render , frontend on Vercel live demo → cofounder-alpha.vercel.app frontend talks to the real api now — no mock mode, no fake data survived production hosted deploys were breaking us in quiet annoying ways so we fixed that startup doesn’t block Render health checks anymore — atlas and mcp boot in the background fixed atlas tls on hosted deploys with certifi pinned python 3.11 so render doesn’t randomly break on 3.13 mongodb mcp runs via npx at runtime — no global npm install on the server orchestrator got tougher optional aws bedrock fallback if gemini is down — still falls back cleanly orchestrator can open panels for you now — settings, export, journal, integrations, jump to a node small things that matter idea framer names your workspace properly on first create getting started checklist + coach marks so new users aren’t lost settings dialog shows gaps vs what agents actually know export zip now ships PROJECT_RULES.md instead of editor-specific stuff cleaned up the repo — reads like a product now not a build log still before v1 oauth · real multi-project · gmail/slack · persona lens · auth shipping next oauth → multi-project → first public v1 after that fewer devlogs more product see ya on the other side of ship byeee :)
updateee the free render box kept dying 🔃 512mb oom · chat said backend not running · get started felt broken this one is mostly: make prod stay up + make the landing feel like agents already live there backend got LIGHTERR on purpose dropped mongodb mcp entirely — no more node subprocess eating ram dropped google adk + scrapling / playwright too everything now goes through one atlas store via motor agents · api · journal · graph · same path single uvicorn worker capped concurrency smaller mongo pool health comes back with store=atlas instead of hanging on cold start chat + get started actually work again 🗣️ core idea sidebar talks to the orchestrator now (not the wrong dialogue endpoint) get started only clears a session on a real 404 cold starts say “agents waking up” instead of fake “service dead” frontend points at the live render url that actually stays up gemini can flake so we added bedrock nova pro as fallback ( mainly coz i got lots of aws credits lyin around ) if google is down, scaffolding / reasoning still goes landing got the illustration pass ( very sick check it out ) threw out the overlapping stock agent cards built a real idea → impact loop instead made a proper animation with a lil help of AI on it but yeah the loop research → validate → build → test & learn → grow dashed continuous feedback path underneath that animates steps pulse on a timer so it reads like agents running the loop not a static marketing row CSS + SVG + lucide icons · no unsplash filler matches the cofound dark terracotta vibe agent cursors on the hero orchestrator / researcher / builder / growth / validator staggered wander so they dont all move at once sometimes drift toward the idea input like theyre working flee when your mouse gets close whole point is multiple agents already on the job before you even type dashboard chrome got quieter killed duplicate brand / cta / export clutter across top bar · left rail · action bar canvas can breathe one home per control next oauth → multi-project → fewer firefights more product try it → cofounder-alpha.vercel.app poke the landing cursors · open a workspace · yell if something 503s again :)
LANDING REVAMP ( mainly coz earlier landing was way too simple and ai made 🥀) ( current version is made using pre made ui components from 21st.dev reworked by me for my website requirements :DD ) this week was mostly taste on the marketing surface. the product shell was already quieter. i wanted the first screen to prove the cofounder idea before anyone drops an idea in the box. what changed how it works is a scrub now not a row of steps anymore. five agents land around the stage, then they converge into one workspace frame as you scroll. once the frame wraps them, the floating agents drop out and the built-in chips light up inside the box. desktop = pinned GSAP scrub mobile = skip the flying bits, just reveal the finished workspace idea → mrr beat second section tells the same story with the actual product chrome: starting prompt researcher / validator / builder come online connectors draw into the workspace hub evidence fills in plan card flips into traction growth panel hits $12.4k MRR ( trust me bro ) the right outcome card is a single surface now. copper for plan, mint for traction. no stacked second box eating the border. hero cursors in the gutters orchestrator, researcher, validator, builder, growth, market. they sit in the side margins, aim at the idea input, drift on their own timers, and nudge away when your mouse gets near. left side was clipping the pointer tips for a bit — fixed the overflow + edge padding so they stay whole. type + motion polish scene cues ( pull together , growth , etc.) are bigger so the scrub beat is readable at a glance. under the hood (only what this pass needed) AgentWorkGallery — converge / wrap story WorkspacePreview + storyCopy — idea to mrr timeline AgentCursors — gutter homes, flee, clip fix shared gsap + ScrollTrigger registration redeployed frontend on Vercel, API still on Render / Atlas open workspace / get started paths were left alone on purpose. they already worked after the last prod pass. this one was the FACE of the product. still cooking these ( oauth is ot on my checklist for now but eh ) oauth real multi-project less firefighting, more daily-driver product mess around with the landing lmk if it breaks anywhere ( it mite in mobile tho lowk its kind of optimized but yeah )
Ships:
we shipped CoFound — basically a startup co founder os in your browser drop a raw idea and it turns into a living knowledge graph with 11 nodes. talk to the orchestrator (voice or text), spawn research agents, pivot without nuking your whole graph, get today’s priority, and export a scaffold zip when you’re ready to build it’s live at cofounder-alpha.vercel.app — backend on render, frontend on vercel, real api, no fake demo data honestly stoked for people to try it. type any idea, watch agents fill the canvas, ask the orb to dig into competitors or hand off the next move. would love to see what founders do with it try it → poke around → tell us what breaks :)...
|
1793112479.7051353
|
1793198879.7051353
|
|
10378
|
Best 1st Slack Bot Ever by @muhamm38 | Stardance
|
muhamm38
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-10T16:16:00Z", "hours": 0.0, "multiplier": 1.02, "payout": 0, "blessing": "neutral", "text": "I made my 1st ever slackbot by using the guide stardance provides. This was my 1st stardance challenge project and I mainly did it to get some beginner experience and understand how the stardance challenge works. I’ve never made a slack bot before so it was cool to do. I was gonna add more features but to be honest I’m way too lazy and I have better ideas for me to work on. Try it here in the stardance slack workspace: https://app.slack.com/client/E09V59WQY1E/C0APH2MMHH7 To use it, click the link and join the slack workspace. Then in any channel you can use this command: /mhdsb-help This command shows a list of every command you can do and a short description of their function.", "repo": "https://github.com/iloveallah123/slack-bot-stardance-challenge", "demo": "https://app.slack.com/client/E09V59WQY1E/C0APH2MMHH7"}]...
|
[{"post_id": 3974, "ts": "2026 [{"post_id": 3974, "ts": "2026-06-07T03:34:41Z", "hours": 0.4486, "text": "I started the guide on making my 1st ever slack bot (as the title suggest its amazing and the best beginner one you’ll ever see). Ran into 1 issue with commands where I renamed the commands on the slack api website (to distinguish it from the million other slack bots in the stardance slack channel). After doing this I kept getting an error when running commands. After some trial and error and testing, I was able to figure out that the problem was within my code. I was using the base code the slack bot guide gives you and that gives you the basic command names (/dsb-ping). I had to go in the code and rename the command names to match what they were on the api wesbite. Next I’m going to integrate more free apis (like a cool dog one) and publish it on nest."}]...
|
Title: Best 1st Slack Bot Ever by @muhamm38 | Star Title: Best 1st Slack Bot Ever by @muhamm38 | Stardance
Devlogs:
I started the guide on making my 1st ever slack bot (as the title suggest its amazing and the best beginner one you’ll ever see). Ran into 1 issue with commands where I renamed the commands on the slack api website (to distinguish it from the million other slack bots in the stardance slack channel). After doing this I kept getting an error when running commands. After some trial and error and testing, I was able to figure out that the problem was within my code. I was using the base code the slack bot guide gives you and that gives you the basic command names (/dsb-ping). I had to go in the code and rename the command names to match what they were on the api wesbite. Next I’m going to integrate more free apis (like a cool dog one) and publish it on nest.
Ships:
I made my 1st ever slackbot by using the guide stardance provides. This was my 1st stardance challenge project and I mainly did it to get some beginner experience and understand how the stardance challenge works. I’ve never made a slack bot before so it was cool to do. I was gonna add more features but to be honest I’m way too lazy and I have better ideas for me to work on. Try it here in the stardance slack workspace: https://app.slack.com/client/E09V59WQY1E/C0APH2MMHH7 To use it, click the link and join the slack workspace. Then in any channel you can use this command: /mhdsb-help This command shows a list of every command you can do and a short description of their function....
|
1793123650.14978
|
1793210050.14978
|
|
10422
|
Mini Keyboard - "Sakura in the Moonlight" Mini Keyboard - "Sakura in the Moonlight" by @Synxed | Stardance...
|
Synxed
|
1
|
10.51
|
5
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-08T12:10:17Z", "hours": 1.0, "multiplier": 4.61, "payout": 5, "blessing": "neutral", "text": "So… What is this “Mini Keyboard”? But first, some context behind the design! I do a decent amount of technological subjects for school and often are constantly needing to run keyboard shortcuts, such as taking screenshots, running a command in the terminal to run a file and so on. And many times I have wished that I was able to have my own customised set of keys that would allow me to merely press them to execute those functions. And lo and behold, I found this! (Thank you GitHub!) This experience was actually what inspired me to choose the specific layout and orientation of the switches, screen and knob was actually from some of my experiences working with my MacBook. After initially reading through the mission, I was thinking like: ‘Woah, this is exactly what I have been looking for’ And 2 days later (and one very, very late night), I am finished! (For now 😉) Honestly, the learning curve was steep, from starting with absolutely no idea how to even import the custom symbols, and ending up with enough knowledge to be able to freely customise and modify my Fusion 360 design (at least to some extent!). Overall it has been quite interesting, getting to learn how to take something as simple as the schematics for the PCB and import that into an editor that allows you to dynamically interact with wiring to create a finished product, these are the types of skills that I would not have learnt anywhere else otherwise. Now, onto explaining what my Hackpad does (or is). A 2x5 MX Switch type grid that are linked to commands, macros and functions for my Macbook Air. For example, the top left key is linked to the input combination Cmd + Shift + 3 (Screenshot), and the key directly next to it on the right is linked to a mini macro that opens the screen recording menu (Cmd + Shift + 5) and automatically begins a screen recording (Pressing the key again after the screen recording has been started will end, and save the recording automatically as well). An OLED Screen that displays information regarding the inputs supplied by the Hackpad such as the time elapsed for a screen recording, display brightness level (%) and volume level (%). A rotator knob that allows you to change the level of either the connected Macbook’s brightness display level (%) or the volume level (%). The top-right key switch allows you to toggle which mode the knob affects, and the OLED will display a small symbol to remind you what mode the knob is on. This knob actually requires the Macbook to have installed another piece of software (for example switchaudio-source) to supply the Hackpad with the actual audio level for the OLED (instead of simulating a digital % level based off changes only made with the pad). The MCU used is the “Seeed XIAO RP2040 microcontroller” and allows for quite a few inputs, which as well as using a matrix for the 10 key switches, provided me with enough room to just fit in the OLED and knob. So, cool project, no? I even decided to try to add some colouring to the board: A Sakura Pallet 🌸. Such nice colours, and hopefully if the box is able to be printed, I will be able to receive some white keycaps to finish off the look (Also, if anyone out there knows any really nice sticker arts that i can cut around the top face of my board and are Japanese Sakura style, send me a message!) I’m hoping to continue to improve on this Hackpad in the future (maybe even switch out the MCU for a “Seeed Studio XIAO nRF52840”! Who knows!), and I can foresee a future where if I am able to get my own Hackpad delivered to me, I think I will be using it every day! Awesome project, awesome learning opportunity, and awesome use of 2/3 of my sleeping time last night! 10/10 Stardance and HackClub!", "repo": "https://github.com/tks-synx/hackpad-macropad", "demo": ""}]...
|
[{"post_id": 27025, "ts": "202 [{"post_id": 27025, "ts": "2026-07-12T05:48:54Z", "hours": 6.1322, "text": "So, What has been done! Pretty much just this: My CAD files decided it no longer wanted to be a box and started to be weird. What did I have to do? Uh well, pretty much remake everything again T^T not very fun, and took quite a while, but it has ended up being pretty much the same, also, side colouring has been fixed!"}, {"post_id": 18244, "ts": "2026-06-29T10:00:46Z", "hours": 2.7861, "text": "So what has changed?Pretty much, just these few things, nothing major! Trees! Yes, as you probably have noticed, there is a great big whopping tree in the corner now! After my initial designs, I really felt that my MacroPad was really lacking in the visual design-aspect of this mission. So, lo and behold, and in keeping with the style colours, I decided to add some image imprints to the design! (Wow this was hard!) - What I had to do in order to do these imprints, was actually find a .SVG file online of one of the shapes, import in into Fusion 360 as a .SVG, then I had to isolate the parts that I wanted, extrude the shapes that were left upwards by about 0.5mm, drag the new objects over the top plate of my CAD file, duplicate and hide one of the copies, and then finally, extrude and cut one of the duplicates downwards by 0.5mm and then unhide the other duplicate, and drop it into the newly cut gap, thus allowing the design to remain showing on the top plate despite being separate objects! A big gate! I had to do a similar method with this SVG to imprint it. A sun and cloud! Again a similar method required. So, overall, this part took a pretty long time if you ask me!I appreciate all your support and value feedback 🔥 (It’s a Tre :D)"}, {"post_id": 6516, "ts": "2026-06-10T23:19:13Z", "hours": 0.5928, "text": "I was thinking that my “Mini Keyboard” was looking a little bit bland… So I did some detailing! Pretty much what I did, was import some SVG files, extrude them to 0.5mm, bring them over the keyboard, and then extrude and cut them with a depth of 0.5mm into the top plate of the “Mini Keyboard”. Once I had done that, I placed another copy of the SVG’s directly over the newly formed carvings of the board, and then vertically translated the SVG bodies down into the top plate, filling the gaps perfectly, and allowing me to be able to apply different colours into the shapes, to create a nice Sakura/Cherry Blossom theme for my “Mini Keyboard”. (I tried to get Lapse working, and did log about 1.5 hours of Fusion 360 work, but it still says: “This timelapse is processing - hold on! We’ll refresh when it’s ready.” Even after a whole day). If anyone has any ideas for more aesthetic changes, lmk ❤️🔥!"}, {"post_id": 4834, "ts": "2026-06-08T11:01:02Z", "hours": 1.1258, "text": "Ready to SHIP 🚢 Done so much! I have managed to create my own 2x5 keyboard with an OLED screen and a rotator knob! Took a lot of tweaking to figure out wire placements in KiCad, but finally did it! However, the submission form: https://forms.hackclub.com/hackpad-submission Doesn’t seem to be working, anyone know anything about this? Thx ❤️🔥"}]...
|
Title: Mini Keyboard - "Sakura in the Moonligh Title: Mini Keyboard - "Sakura in the Moonlight" by @Synxed | Stardance
Devlogs:
Ready to SHIP 🚢 Done so much! I have managed to create my own 2x5 keyboard with an OLED screen and a rotator knob! Took a lot of tweaking to figure out wire placements in KiCad, but finally did it! However, the submission form: https://forms.hackclub.com/hackpad-submission Doesn’t seem to be working, anyone know anything about this? Thx ❤️🔥
I was thinking that my “Mini Keyboard” was looking a little bit bland… So I did some detailing! Pretty much what I did, was import some SVG files, extrude them to 0.5mm, bring them over the keyboard, and then extrude and cut them with a depth of 0.5mm into the top plate of the “Mini Keyboard”. Once I had done that, I placed another copy of the SVG’s directly over the newly formed carvings of the board, and then vertically translated the SVG bodies down into the top plate, filling the gaps perfectly, and allowing me to be able to apply different colours into the shapes, to create a nice Sakura/Cherry Blossom theme for my “Mini Keyboard”. (I tried to get Lapse working, and did log about 1.5 hours of Fusion 360 work, but it still says: “This timelapse is processing - hold on! We’ll refresh when it’s ready.” Even after a whole day). If anyone has any ideas for more aesthetic changes, lmk ❤️🔥!
So what has changed?Pretty much, just these few things, nothing major! Trees! Yes, as you probably have noticed, there is a great big whopping tree in the corner now! After my initial designs, I really felt that my MacroPad was really lacking in the visual design-aspect of this mission. So, lo and behold, and in keeping with the style colours, I decided to add some image imprints to the design! (Wow this was hard!) - What I had to do in order to do these imprints, was actually find a .SVG file online of one of the shapes, import in into Fusion 360 as a .SVG, then I had to isolate the parts that I wanted, extrude the shapes that were left upwards by about 0.5mm, drag the new objects over the top plate of my CAD file, duplicate and hide one of the copies, and then finally, extrude and cut one of the duplicates downwards by 0.5mm and then unhide the other duplicate, and drop it into the newly cut gap, thus allowing the design to remain showing on the top plate despite being separate objects! A big gate! I had to do a similar method with this SVG to imprint it. A sun and cloud! Again a similar method required. So, overall, this part took a pretty long time if you ask me!I appreciate all your support and value feedback 🔥 (It’s a Tre :D)
So, What has been done! Pretty much just this: My CAD files decided it no longer wanted to be a box and started to be weird. What did I have to do? Uh well, pretty much remake everything again T^T not very fun, and took quite a while, but it has ended up being pretty much the same, also, side colouring has been fixed!
Ships:
So… What is this “Mini Keyboard”? But first, some context behind the design! I do a decent amount of technological subjects for school and often are constantly needing to run keyboard shortcuts, such as taking screenshots, running a command in the terminal to run a file and so on. And many times I have wished that I was able to have my own customised set of keys that would allow me to merely press them to execute those functions. And lo and behold, I found this! (Thank you GitHub!) This experience was actually what inspired me to choose the specific layout and orientation of the switches, screen and knob was actually from some of my experiences working with my MacBook. After initially reading through the mission, I was thinking like: ‘Woah, this is exactly what I have been looking for’ And 2 days later (and one very, very late night), I am finished! (For now 😉) Honestly, the learning curve was steep, from starting with absolutely no idea how to even import the custom symbols, and ending up with enough knowledge to be able to freely customise and modify my Fusion 360 design (at least to some extent!). Overall it has been quite interesting, getting to learn how to take something as simple as the schematics for the PCB and import that into an editor that allows you to dynamically interact with wiring to create a finished product, these are the types of skills that I would not have learnt anywhere else otherwise. Now, onto explaining what my Hackpad does (or is). A 2x5 MX Switch type grid that are linked to commands, macros and functions for my Macbook Air. For example, the top left key is linked to the input combination Cmd + Shift + 3 (Screenshot), and the key directly next to it on the right is linked to a mini macro that opens the screen recording menu (Cmd + Shift + 5) and automatically begins a screen recording (Pressing the key again after the screen recording has been started will end, and save the recording automatically as well). An OLED Screen that displays information regarding the inputs supplied by the Hackpad such as the time elapsed for a screen recording, display brightness level (%) and volume level (%). A rotator knob that allows you to change the level of either the connected Macbook’s brightness display level (%) or the volume level (%). The top-right key switch allows you to toggle which mode the knob affects, and the OLED will display a small symbol to remind you what mode the knob is on. This knob actually requires the Macbook to have installed another piece of software (for example switchaudio-source) to supply the Hackpad with the actual audio level for the OLED (instead of simulating a digital % level based off changes only made with the pad). The MCU used is the “Seeed XIAO RP2040 microcontroller” and allows for quite a few inputs, which as well as using a matrix for the 10 key switches, provided me with enough room to just fit in the OLED and knob. So, cool project, no? I even decided to try to add some colouring to the board: A Sakura Pallet 🌸. Such nice colours, and hopefully if the box is able to be printed, I will be able to receive some white keycaps to finish off the look (Also, if anyone out there knows any really nice sticker arts that i can cut around the top face of my board and are Japanese Sakura style, send me a message!) I’m hoping to continue to improve on this Hackpad in the future (maybe even switch out the MCU for a “Seeed Studio XIAO nRF52840”! Who knows!), and I can foresee a future where if I am able to get my own Hackpad delivered to me, I think I will be using it every day! Awesome project, awesome learning opportunity, and awesome use of 2/3 of my sleeping time last night! 10/10 Stardance and HackClub!...
|
1793256682.3026156
|
1793343082.3026156
|
|
10424
|
My first slack bot! by @VoidHacker | Stardance
|
VoidHacker
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-10T02:43:25Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? HelpBot is a Slack bot built with Node.js and Slack Bolt that provides 8 slash commands including real-time weather lookups, dictionary definitions, DM reminders, random cat facts, jokes, and random Hack Club projects from Github. What was challenging? The most challenging part was debugging the weather command. The API returns geocoding city name which needs to be converted into coordinates before fetching weather data. My typo in spelling longitude caused my code to fail, and it was a hard error to spot. What are you proud of? I’m proud of the reminder command. It DMs the user after a set delay using setTimeout(), which required understanding how to use the Slack client to send messages outside of a command response. What should people know so they can test your project? To test the project, join the Hack Club Slack and try any of the slash commands: /hb-ping, /hb-weather [city], /hb-define [word], /hb-remind [time] [message], or /hb-ship.", "repo": "https://github.com/William-Chen07/HelpBot", "demo": "https://hackclub.enterprise.slack.com/archives/C0B9MC90UMU"}]...
|
[{"post_id": 5961, "ts": "2026 [{"post_id": 5961, "ts": "2026-06-09T23:49:52Z", "hours": 1.435, "text": "I finished adding 4 more commands to the bot and deployed it on Nest."}, {"post_id": 4660, "ts": "2026-06-08T02:04:39Z", "hours": 0.4036, "text": "Finished adding the basic commands to my slack bot. This is my first time messing around with APIs and making a bot. This is pretty cool!"}]...
|
Title: My first slack bot! by @VoidHacker | Starda Title: My first slack bot! by @VoidHacker | Stardance
Devlogs:
Finished adding the basic commands to my slack bot. This is my first time messing around with APIs and making a bot. This is pretty cool!
I finished adding 4 more commands to the bot and deployed it on Nest.
Ships:
What did you make? HelpBot is a Slack bot built with Node.js and Slack Bolt that provides 8 slash commands including real-time weather lookups, dictionary definitions, DM reminders, random cat facts, jokes, and random Hack Club projects from Github. What was challenging? The most challenging part was debugging the weather command. The API returns geocoding city name which needs to be converted into coordinates before fetching weather data. My typo in spelling longitude caused my code to fail, and it was a hard error to spot. What are you proud of? I’m proud of the reminder command. It DMs the user after a set delay using setTimeout(), which required understanding how to use the Slack client to send messages outside of a command response. What should people know so they can test your project? To test the project, join the Hack Club Slack and try any of the slash commands: /hb-ping, /hb-weather [city], /hb-define [word], /hb-remind [time] [message], or /hb-ship....
|
1793246137.5438383
|
1793332537.5438383
|
|
10427
|
BookPal by @binamra-rs | Stardance
|
binamra-rs
|
1
|
3.0
|
22
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-08T17:12:02Z", "hours": 3.0, "multiplier": 8.56, "payout": 22, "blessing": "neutral", "text": "Hey everyone! Just wanted to share a project I just finished and launched: Book Pal 📚 It’s a frontend-only React app that lets you search the Open Library database. I wanted to build something clean, fast, and get my hands dirty using an API. It’s hosted on Netlify. One of the challenging bits was dealing with the API response payload. It took some effort to understand the layout of the data and to make sure missing covers didn’t break the layout. Drop a comment and let me know what you think, or if you find any cool bugs! 🌏 Live Demo: https://bookpalstardance.netlify.app/ 💻 Code: https://github.com/Binamra-rs/book_pal", "repo": "https://github.com/Binamra-rs/book_pal", "demo": "https://bookpalstardance.netlify.app/"}]...
|
[{"post_id": 4976, "ts": "2026 [{"post_id": 4976, "ts": "2026-06-08T16:58:17Z", "hours": 2.1525, "text": "A decent working version of BookPal has been completed. This version features searching the API on the basis of book title, author’s name and genre. The coverpage for each book has been loaded through another API provided by Open Library, namely the Cover API. Each card is loaded as a ReactJS component in the virtual DOM. BookPal offers intuitive GUI and fairly fast loading time for the free API."}, {"post_id": 3982, "ts": "2026-06-07T03:49:50Z", "hours": 0.4214, "text": "Started “BookPal”, a simple ReactJS-based webpage that allows the user to search for books by book title, author, name, etc. Currently working on configuring the api request call"}]...
|
Title: BookPal by @binamra-rs | Stardance
Devlogs Title: BookPal by @binamra-rs | Stardance
Devlogs:
Started “BookPal”, a simple ReactJS-based webpage that allows the user to search for books by book title, author, name, etc. Currently working on configuring the api request call
A decent working version of BookPal has been completed. This version features searching the API on the basis of book title, author’s name and genre. The coverpage for each book has been loaded through another API provided by Open Library, namely the Cover API. Each card is loaded as a ReactJS component in the virtual DOM. BookPal offers intuitive GUI and fairly fast loading time for the free API.
Ships:
Hey everyone! Just wanted to share a project I just finished and launched: Book Pal 📚 It’s a frontend-only React app that lets you search the Open Library database. I wanted to build something clean, fast, and get my hands dirty using an API. It’s hosted on Netlify. One of the challenging bits was dealing with the API response payload. It took some effort to understand the layout of the data and to make sure missing covers didn’t break the layout. Drop a comment and let me know what you think, or if you find any cool bugs! 🌏 Live Demo: https://bookpalstardance.netlify.app/ 💻 Code: https://github.com/Binamra-rs/book_pal...
|
1793123579.376897
|
1793209979.376897
|
|
10440
|
tyse by @Tawhidulh | Stardance
|
Tawhidulh
|
1
|
18.0
|
135
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T05:40:51Z", "hours": 18.0, "multiplier": 7.46, "payout": 135, "blessing": "neutral", "text": "I created a meta search-engine. Initially I wanted it to have a full fledged crawler, but I realized I needed lots of resources (money) t make it actually usable. Instead, I decided to transition to a searxng wrapper. I am proud that I was able to make the backend work as I had very little knowledge of spring and spring-boot.", "repo": "https://github.com/Tawhidulh1/tyse", "demo": "https://tyse.tea.hackclub.app/"}]...
|
[{"post_id": 64044, "ts": "202 [{"post_id": 64044, "ts": "2026-09-08T05:30:33Z", "hours": 6.3647, "text": "The basic search engine is complete, I added css and made it look nicer. Still need to polish the backend and add more features."}, {"post_id": 38542, "ts": "2026-08-01T00:28:03Z", "hours": 6.6828, "text": "The backend for the search engine is mostly done, I need to fix some issues with elasticsearch database and make it look good. The current index is being fetched and saved into elasticsearch through searxng as I do not have the resources to run the crawler/fetch the indexes myself, though I did add a prototype crawler. Currently this is how it works: User searches a query -> find the best results with the given query through elasticsearch, if it does not exist it fallbacks to searxng from port 8888 -> then display the result to user. This is so that I could save the search results as continue to use it, I plan on adding some sort of timer or something to update the index for outdated searches. As seen in the video, there are clearly some issues with overlapping searches."}, {"post_id": 14326, "ts": "2026-06-23T12:42:05Z", "hours": 5.0281, "text": "I added a single threaded basic web crawler for my search engine. I have yet to implement a queue system to act as the Url Frontier, instead it is a single List of String(s) to represent Url’s. This was my first time making a web crawler as well as my first time working with JSoup."}]...
|
Title: tyse by @Tawhidulh | Stardance
Devlogs:
I Title: tyse by @Tawhidulh | Stardance
Devlogs:
I added a single threaded basic web crawler for my search engine. I have yet to implement a queue system to act as the Url Frontier, instead it is a single List of String(s) to represent Url’s. This was my first time making a web crawler as well as my first time working with JSoup.
The backend for the search engine is mostly done, I need to fix some issues with elasticsearch database and make it look good. The current index is being fetched and saved into elasticsearch through searxng as I do not have the resources to run the crawler/fetch the indexes myself, though I did add a prototype crawler. Currently this is how it works: User searches a query -> find the best results with the given query through elasticsearch, if it does not exist it fallbacks to searxng from port 8888 -> then display the result to user. This is so that I could save the search results as continue to use it, I plan on adding some sort of timer or something to update the index for outdated searches. As seen in the video, there are clearly some issues with overlapping searches.
The basic search engine is complete, I added css and made it look nicer. Still need to polish the backend and add more features.
Ships:
I created a meta search-engine. Initially I wanted it to have a full fledged crawler, but I realized I needed lots of resources (money) t make it actually usable. Instead, I decided to transition to a searxng wrapper. I am proud that I was able to make the backend work as I had very little knowledge of spring and spring-boot....
|
1793148682.3689642
|
1793235082.3689642
|
|
10460
|
Cosmo Docks by @james31vn | Stardance
|
james31vn
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T10:29:08Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "As you can see, I made Cosmos Docks, a custom 9-key macropad with a Seeed XIAO RP2040, one rotary encoder, a 0.91 inch OLED display, and 13 SK6812MINI-E RGB LEDs. The schematic and PCB was designed in KiCad, modeled a fully 3D-printable top and bottom case in Fusion 360 which fits together perfectly, and wrote QMK firmware for the key matrix, encoder, OLED, and RGB lighting, so it can always be updated to different functions. This was supposed to be an easy project(but I made it difficult because I overcomplicated stuff and added way more capacitors and resistors than I was supposed to). I spent a lot of time trying to optimize the pcb so now we’re here. I think I outdid myself with the case design(it even crashed my Fusion when exporting). To test the project, flash the included firmware.uf2 file onto the XIAO RP2040. Then plug in the macropad through USB-C and test all 9 keys in a text editor or keyboard tester. The rotary encoder should control volume on the base layer, the OLED should display the macropad name and layer, and the RGB LEDs should light up through QMK RGB Matrix.", "repo": "https://github.com/holeminhnhat3101/Cosmos-docks", "demo": ""}]...
|
[{"post_id": 9868, "ts": "2026 [{"post_id": 9868, "ts": "2026-06-16T10:13:30Z", "hours": 3.5575, "text": "I finished the macropad! After several days of having issues with hackatime and lapse, I finally shipped my first macropad. I’m calling this one Cosmodocks. It took way longer than the number you’re seeing on screen right now to learn pcb and 3d modeling in such a short amount of time. But here it is. It has 9 keys, a rotary encoder, and an Oled. Right now, the firmware only has basic functions, but it is compatible with QMK so it can be changed to more functions! Check out my github project to see more."}, {"post_id": 4924, "ts": "2026-06-08T15:00:19Z", "hours": 1.0308, "text": "Custom macropad with oled I just started gathering all the components my macropad would need and started the schematics design. I finished the schematics for the switches and knob, now I only need the LEDs and OLED schematics."}]...
|
Title: Cosmo Docks by @james31vn | Stardance
Devl Title: Cosmo Docks by @james31vn | Stardance
Devlogs:
Custom macropad with oled I just started gathering all the components my macropad would need and started the schematics design. I finished the schematics for the switches and knob, now I only need the LEDs and OLED schematics.
I finished the macropad! After several days of having issues with hackatime and lapse, I finally shipped my first macropad. I’m calling this one Cosmodocks. It took way longer than the number you’re seeing on screen right now to learn pcb and 3d modeling in such a short amount of time. But here it is. It has 9 keys, a rotary encoder, and an Oled. Right now, the firmware only has basic functions, but it is compatible with QMK so it can be changed to more functions! Check out my github project to see more.
Ships:
As you can see, I made Cosmos Docks, a custom 9-key macropad with a Seeed XIAO RP2040, one rotary encoder, a 0.91 inch OLED display, and 13 SK6812MINI-E RGB LEDs. The schematic and PCB was designed in KiCad, modeled a fully 3D-printable top and bottom case in Fusion 360 which fits together perfectly, and wrote QMK firmware for the key matrix, encoder, OLED, and RGB lighting, so it can always be updated to different functions. This was supposed to be an easy project(but I made it difficult because I overcomplicated stuff and added way more capacitors and resistors than I was supposed to). I spent a lot of time trying to optimize the pcb so now we’re here. I think I outdid myself with the case design(it even crashed my Fusion when exporting). To test the project, flash the included firmware.uf2 file onto the XIAO RP2040. Then plug in the macropad through USB-C and test all 9 keys in a text editor or keyboard tester. The rotary encoder should control volume on the base layer, the OLED should display the macropad name and layer, and the RGB LEDs should light up through QMK RGB Matrix....
|
1793127124.4330354
|
1793213524.4330354
|
|
10467
|
My first slack bot! by @lakkey | Stardance
|
lakkey
|
1
|
2.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-07T17:18:11Z", "hours": 2.0, "multiplier": 1.3, "payout": 2, "blessing": "neutral", "text": "What I made: SlackSpace is a feature-rich Slack bot running 24/7 on Hack Club’s Nest servers. It has 13 commands spanning utility, fun, knowledge, and a full conversational AI assistant powered by Llama 3.3 70B via Groq — including /sp-ask, /sp-ping, /sp-joke, /sp-define, /sp-dice, and more. The AI remembers your last 20 messages and you can DM it directly without any command. How to test it: The bot is live and hosted on Hack Club Nest — it runs 24/7 via systemd and auto-restarts on crash. You can test it right now in the Hack Club Slack by typing any /sp- command (e.g. /sp-ping, /sp-joke, /sp-ask what is a black hole). No setup needed — just type and it responds. This project was built as part of the Hack Club Stardance “Make a Slack Bot” beginner mission. I chose it to understand how Slack bots, APIs, and hosting on Nest work — as a learning exercise before pursuing my own original idea. Cline (an AI coding assistant) did most of the actual coding. My contribution was following through, deploying it, and using it as a hands-on way to learn the stack.", "repo": "https://github.com/lakkeychoudhary/SlackSpace", "demo": "https://lakkeychoudhary.github.io/SlackSpace/"}]...
|
[{"post_id": 4340, "ts": "2026 [{"post_id": 4340, "ts": "2026-06-07T16:57:59Z", "hours": 0.7839, "text": "Thought to add AI API for DM chat replies by slackbot (slackspace) - use LPUs of groqcloud, and now its a wrap"}, {"post_id": 4179, "ts": "2026-06-07T12:20:01Z", "hours": 1.4969, "text": "working to make bot more genuine human like"}]...
|
Title: My first slack bot! by @lakkey | Stardance
Title: My first slack bot! by @lakkey | Stardance
Devlogs:
working to make bot more genuine human like
Thought to add AI API for DM chat replies by slackbot (slackspace) - use LPUs of groqcloud, and now its a wrap
Ships:
What I made: SlackSpace is a feature-rich Slack bot running 24/7 on Hack Club’s Nest servers. It has 13 commands spanning utility, fun, knowledge, and a full conversational AI assistant powered by Llama 3.3 70B via Groq — including /sp-ask, /sp-ping, /sp-joke, /sp-define, /sp-dice, and more. The AI remembers your last 20 messages and you can DM it directly without any command. How to test it: The bot is live and hosted on Hack Club Nest — it runs 24/7 via systemd and auto-restarts on crash. You can test it right now in the Hack Club Slack by typing any /sp- command (e.g. /sp-ping, /sp-joke, /sp-ask what is a black hole). No setup needed — just type and it responds. This project was built as part of the Hack Club Stardance “Make a Slack Bot” beginner mission. I chose it to understand how Slack bots, APIs, and hosting on Nest work — as a learning exercise before pursuing my own original idea. Cline (an AI coding assistant) did most of the actual coding. My contribution was following through, deploying it, and using it as a hands-on way to learn the stack....
|
1793109104.5171325
|
1793195504.5171325
|
|
10493
|
Rojo Mojo (Encryptor-Decryptor) by @bvaan | Starda Rojo Mojo (Encryptor-Decryptor) by @bvaan | Stardance...
|
bvaan
|
1
|
8.0
|
68
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-08T16:49:01Z", "hours": 8.0, "multiplier": 8.58, "payout": 68, "blessing": "neutral", "text": "i made encryption and decryption tool using unique character generation or custom characters. Styling is a bit wonky because I am not a UI person. I learnt difference between randomness and true randomness in javascript.", "repo": "https://github.com/Bivaan10/ROJO-MOJO", "demo": "https://bivaan10.github.io/ROJO-MOJO/"}]...
|
[{"post_id": 4965, "ts": "2026 [{"post_id": 4965, "ts": "2026-06-08T16:46:17Z", "hours": 2.8408, "text": "fixed generation of 16 character key, added toast completed initial verson."}, {"post_id": 4770, "ts": "2026-06-08T08:10:32Z", "hours": 1.8758, "text": "Some of my CSS layout was rewritten and tidied up. I made the UI much more structured and clear by fixing the overlapping boxes and messy spacing from my previous build. I’m almost finished with the CSS and will be working on JavaScript later."}, {"post_id": 4341, "ts": "2026-06-07T16:58:22Z", "hours": 3.3611, "text": "I am currently building a cyberpunk style web tool that will let users to safely encrypt and decrypt secret messages within the browser. It is still a work in progress and not even half completed yet, but I am working on implementing strong security codes like SHA-256 to lock text with a password and create unique digital footprint. So far, I have only set up the basic layout of the interface to give it a hacker terminal look . I still have a lot more styles to add , I am eager to continue developing it and see the outcome."}]...
|
Title: Rojo Mojo (Encryptor-Decryptor) by @bvaan | Title: Rojo Mojo (Encryptor-Decryptor) by @bvaan | Stardance
Devlogs:
I am currently building a cyberpunk style web tool that will let users to safely encrypt and decrypt secret messages within the browser. It is still a work in progress and not even half completed yet, but I am working on implementing strong security codes like SHA-256 to lock text with a password and create unique digital footprint. So far, I have only set up the basic layout of the interface to give it a hacker terminal look . I still have a lot more styles to add , I am eager to continue developing it and see the outcome.
Some of my CSS layout was rewritten and tidied up. I made the UI much more structured and clear by fixing the overlapping boxes and messy spacing from my previous build. I’m almost finished with the CSS and will be working on JavaScript later.
fixed generation of 16 character key, added toast completed initial verson.
Ships:
i made encryption and decryption tool using unique character generation or custom characters. Styling is a bit wonky because I am not a UI person. I learnt difference between randomness and true randomness in javascript....
|
1793220679.6467288
|
1793307079.6467288
|
|
10500
|
Not Alone, But Together by @naqeeb | Stardance
|
naqeeb
|
1
|
13.0
|
137
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-18T13:20:06Z", "hours": 13.0, "multiplier": 10.72, "payout": 137, "blessing": "neutral", "text": "I made a 2d platformer with local co-op. The challenging part was gravity and online. And a short reflection would be that i should’ve worked with delta time, which i had completely forgotten about. Thinking back, it would’ve really helped me with fixing the movement in online. That’ll be good to remember for future projects.", "repo": "https://github.com/naqeeb-rahmani/Not-Alone", "demo": "https://naqeebb.itch.io/not-alone"}]...
|
[{"post_id": 11251, "ts": "202 [{"post_id": 11251, "ts": "2026-06-18T12:26:03Z", "hours": 0.8469, "text": "FINISHED! I removed some unnecessary files and some parts of the code which were no longer needed. Now i’m finally done with this project, now i know that this is not the best game especially with the online not being perfect and the game not responding when looking for connections, but the reason for that is that this was my first time working with networking, so i learned basic networking as i was making this game. I also learned a lot of things from this project such as animations and some basic pixelart (I only made the levers and modified the buttons to how i needed them). So, yeah. That was it :). The reason for the text being so cramped up is because for some reason I seem to be unable to use enter to change line."}, {"post_id": 11151, "ts": "2026-06-18T07:23:54Z", "hours": 0.8325, "text": "the game is finished or is it? I think I’m finished because I have got online to work and did some polishing BUT online can still be laggy because the networking code blocks the rest while waiting for a msg. Yesterday it came to my mind that i should’ve used delta time to fix the lags in online from the beginning but it might be a little too late now. Maybe i’ll give it a try and see if i manage to fix it with that, other than that im finished with the game."}, {"post_id": 9947, "ts": "2026-06-16T14:02:29Z", "hours": 1.3383, "text": "Online should now be working without any errors and in normal speed. To fix the speed issue i just increased the speed of the characters while in online. I adjusted the speed based on how slow it was for me, now i don’t know if that was due to my internet being very slow or something else, so it is possible that for some people online would seem too fast but i hope that does not happen. I’ll try to test online on a different network if i get a chance but for now I’ll be focusing on polishing."}, {"post_id": 9297, "ts": "2026-06-15T16:49:00Z", "hours": 2.1597, "text": "FINALLY! I finally got online to work BUT it feels like it’s running on 0.5x the speed of the offline version. I also found out that this only happens when running online on two different devices, so it doesn’t feel slow when you both host and join on the same device. To fix that i might try to double the fps in online but what if someone has really good internet, that might make the game really fast for them. So, I’m planning on doubling the fps limit from 120 to 240 for online and see if it still feels really laggy and if it feels like that. Then I will maybe test for a while and see if i need to add a button so the player can choose between 120 or 240fps based on how much they’re lagging. AND I also made a text box so the player can type the host’s ip, almost forgot about this lol below is a screenshot of the text box"}, {"post_id": 8788, "ts": "2026-06-14T16:27:16Z", "hours": 1.0869, "text": "I got it! After trying for a while, I think i finally fixed online. Before I was sending the raw coordinates and setting them but that was making my collision/camera system behave weirdly. After trying many things, I tried to code it in a way that it uses the inputs and the coordinates. So, now the game in online takes the inputs and calculates the new coordinates and collision. And to avoid desyncs because if i only use inputs, It WILL desync at some point, so i used the distance form: √((x1 − x2)2 + (y1 − y2)^2) (y2 != y *2 it means the 2nd and first x/y) By using the distance formula, I can now calculate the distance between the players accross the different devices. Which means that i can use the inputs when the characters are slightly desynced and when they are desynced a lot, I can just straight up use the coordinates. I also have to fix the gui because i had forgotten that the player also needs to put in the ip of the host. Because of that online doesn’t work accross different devices right now. To fix that I’ll have to use a module such as the pygame gui module or fix it myself with pygame. I’m leaning more towards doing myself because I don’t really want to learn the pygame gui module and imo it should take less time if i do it myself."}, {"post_id": 8671, "ts": "2026-06-14T12:31:06Z", "hours": 2.3536, "text": "I have fixed movement and interaction in online, but now there is something wrong with the camera system. It seems like they aren’t synced which changes the game mode for one of the players. I tried to fix it in different ways, I even asked AI for help but I didn’t really understand anything. So, I’m thining about rewriting the online code, it shouldn’t take that long because its just the offline one with networking and some small changes."}, {"post_id": 7569, "ts": "2026-06-12T17:29:19Z", "hours": 2.2953, "text": "After coding, testing and debugging for a while, I got online multiplayer to work on LAN. But it is still pretty buggy. Problems i have noticed so far: the animations aren’t smooth, but glitchy and laggy the person joining can’t jump Levers can’t be activated. But the reason to that is that i haven’t sent any data regarding the levers yet because I first want to fix the movement between the devices. Other tiny bugs Tbh the code rn is pretty messy and full of bugs because i just focused on fixing the connection and transfering data between the host and the one joining, that’s why pretty much everything is buggy in online rn. So, i’ll have to work with some debugging now."}, {"post_id": 6200, "ts": "2026-06-10T12:39:29Z", "hours": 1.7628, "text": "It’s me again! I’ve just been trying out sockets these last hours and i think i have the basics down now. So, i might start with implementing them to the game. About what i said in the last devlog - that i wanted to add a backstory and maybe even a level editor. I don’t think that I want to spend more time on this project, because I already have spent a lot on it. My new plan is to just add multiplayer on local network and call it a day."}, {"post_id": 4063, "ts": "2026-06-07T07:40:23Z", "hours": 0.2819, "text": "Before i start with what i am doing/going to do in the upcoming days I’d like to talk about what i have done so far. Before joining this thing i had worked on this game at school, since it was my final project for the python course. I have worked on it for around 20 hours or maybe more than that, but i worked on it a lot in my free time because i really liked the idea of this game. I wanted to combine the sideview of mario and it takes two, I’m not a graphics designer so it obviously doesn’t look the best. Most assets were taken from itch.io and i have modified most of them and made some small things like levers and pressure plates myself. For now: Summer break is here (well not really. Right now while writing this i have 4 more school days left). After not working on this project for around 2 weeks or so, I have started again. This time I’m planning on adding multiplayer on local network with the help of sockets in python and write a little about the story of the game, I might as well add a simple level editor, but that’s the last thing im thinking of doing. As of now, i have started working on the online part and currently am working with the menu, so you can select online and then select host or join. Below is a screenshot of the base game running"}]...
|
Title: Not Alone, But Together by @naqeeb | Starda Title: Not Alone, But Together by @naqeeb | Stardance
Devlogs:
Before i start with what i am doing/going to do in the upcoming days I’d like to talk about what i have done so far. Before joining this thing i had worked on this game at school, since it was my final project for the python course. I have worked on it for around 20 hours or maybe more than that, but i worked on it a lot in my free time because i really liked the idea of this game. I wanted to combine the sideview of mario and it takes two, I’m not a graphics designer so it obviously doesn’t look the best. Most assets were taken from itch.io and i have modified most of them and made some small things like levers and pressure plates myself. For now: Summer break is here (well not really. Right now while writing this i have 4 more school days left). After not working on this project for around 2 weeks or so, I have started again. This time I’m planning on adding multiplayer on local network with the help of sockets in python and write a little about the story of the game, I might as well add a simple level editor, but that’s the last thing im thinking of doing. As of now, i have started working on the online part and currently am working with the menu, so you can select online and then select host or join. Below is a screenshot of the base game running
It’s me again! I’ve just been trying out sockets these last hours and i think i have the basics down now. So, i might start with implementing them to the game. About what i said in the last devlog - that i wanted to add a backstory and maybe even a level editor. I don’t think that I want to spend more time on this project, because I already have spent a lot on it. My new plan is to just add multiplayer on local network and call it a day.
After coding, testing and debugging for a while, I got online multiplayer to work on LAN. But it is still pretty buggy. Problems i have noticed so far: the animations aren’t smooth, but glitchy and laggy the person joining can’t jump Levers can’t be activated. But the reason to that is that i haven’t sent any data regarding the levers yet because I first want to fix the movement between the devices. Other tiny bugs Tbh the code rn is pretty messy and full of bugs because i just focused on fixing the connection and transfering data between the host and the one joining, that’s why pretty much everything is buggy in online rn. So, i’ll have to work with some debugging now.
I have fixed movement and interaction in online, but now there is something wrong with the camera system. It seems like they aren’t synced which changes the game mode for one of the players. I tried to fix it in different ways, I even asked AI for help but I didn’t really understand anything. So, I’m thining about rewriting the online code, it shouldn’t take that long because its just the offline one with networking and some small changes.
I got it! After trying for a while, I think i finally fixed online. Before I was sending the raw coordinates and setting them but that was making my collision/camera system behave weirdly. After trying many things, I tried to code it in a way that it uses the inputs and the coordinates. So, now the game in online takes the inputs and calculates the new coordinates and collision. And to avoid desyncs because if i only use inputs, It WILL desync at some point, so i used the distance form: √((x1 − x2)2 + (y1 − y2)^2) (y2 != y *2 it means the 2nd and first x/y) By using the distance formula, I can now calculate the distance between the players accross the different devices. Which means that i can use the inputs when the characters are slightly desynced and when they are desynced a lot, I can just straight up use the coordinates. I also have to fix the gui because i had forgotten that the player also needs to put in the ip of the host. Because of that online doesn’t work accross different devices right now. To fix that I’ll have to use a module such as the pygame gui module or fix it myself with pygame. I’m leaning more towards doing myself because I don’t really want to learn the pygame gui module and imo it should take less time if i do it myself.
FINALLY! I finally got online to work BUT it feels like it’s running on 0.5x the speed of the offline version. I also found out that this only happens when running online on two different devices, so it doesn’t feel slow when you both host and join on the same device. To fix that i might try to double the fps in online but what if someone has really good internet, that might make the game really fast for them. So, I’m planning on doubling the fps limit from 120 to 240 for online and see if it still feels really laggy and if it feels like that. Then I will maybe test for a while and see if i need to add a button so the player can choose between 120 or 240fps based on how much they’re lagging. AND I also made a text box so the player can type the host’s ip, almost forgot about this lol below is a screenshot of the text box
Online should now be working without any errors and in normal speed. To fix the speed issue i just increased the speed of the characters while in online. I adjusted the speed based on how slow it was for me, now i don’t know if that was due to my internet being very slow or something else, so it is possible that for some people online would seem too fast but i hope that does not happen. I’ll try to test online on a different network if i get a chance but for now I’ll be focusing on polishing.
the game is finished or is it? I think I’m finished because I have got online to work and did some polishing BUT online can still be laggy because the networking code blocks the rest while waiting for a msg. Yesterday it came to my mind that i should’ve used delta time to fix the lags in online from the beginning but it might be a little too late now. Maybe i’ll give it a try and see if i manage to fix it with that, other than that im finished with the game.
FINISHED! I removed some unnecessary files and some parts of the code which were no longer needed. Now i’m finally done with this project, now i know that this is not the best game especially with the online not being perfect and the game not responding when looking for connections, but the reason for that is that this was my first time working with networking, so i learned basic networking as i was making this game. I also learned a lot of things from this project such as animations and some basic pixelart (I only made the levers and modified the buttons to how i needed them). So, yeah. That was it :). The reason for the text being so cramped up is because for some reason I seem to be unable to use enter to change line.
Ships:
I made a 2d platformer with local co-op. The challenging part was gravity and online. And a short reflection would be that i should’ve worked with delta time, which i had completely forgotten about. Thinking back, it would’ve really helped me with fixing the movement in online. That’ll be good to remember for future projects....
|
1793220967.9073436
|
1793307367.9073436
|
|
10505
|
Pacman Game by @Armaan | Stardance
|
Armaan
|
1
|
2.16
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-09T02:13:35Z", "hours": 0.0, "multiplier": 1.05, "payout": 2, "blessing": "neutral", "text": "I made a Pacman Game. The issues I had was constantly having errors in my code. I used a tutorial from Youtuber Kenny Yip Coding: Here’s the link to his YT ( https://www.youtube.com/watch?v=WxeTMsaSOaA&t=3942s ) Don’t C&P the parentheses.", "repo": "https://github.com/ArmaanLambsar/PacManProject2", "demo": "https://armaanlambsar.github.io/PacManProject2/"}]...
|
[{"post_id": 26389, "ts": "202 [{"post_id": 26389, "ts": "2026-07-11T04:41:07Z", "hours": 2.1594, "text": "This is my first project and a fully functional game of Pacman made from a tutorial. I might eventually add a feature of scared ghosts and more levels as I advance in coding but as of right now, I will keep this as a main final but later I will iterate off of this project."}, {"post_id": 5332, "ts": "2026-06-09T02:08:15Z", "hours": 0.0, "text": "A Fully Functional Pacman Game with moving Ghosts and Pacman. This is my first project and a fully functional game of Pacman made from a tutorial. I might eventually add a feature of scared ghosts and more levels as I advance in coding but as of right now, I will keep this as a main final but later I will iterate off of this project."}]...
|
Title: Pacman Game by @Armaan | Stardance
Devlogs Title: Pacman Game by @Armaan | Stardance
Devlogs:
A Fully Functional Pacman Game with moving Ghosts and Pacman. This is my first project and a fully functional game of Pacman made from a tutorial. I might eventually add a feature of scared ghosts and more levels as I advance in coding but as of right now, I will keep this as a main final but later I will iterate off of this project.
This is my first project and a fully functional game of Pacman made from a tutorial. I might eventually add a feature of scared ghosts and more levels as I advance in coding but as of right now, I will keep this as a main final but later I will iterate off of this project.
Ships:
I made a Pacman Game. The issues I had was constantly having errors in my code. I used a tutorial from Youtuber Kenny Yip Coding: Here’s the link to his YT ( https://www.youtube.com/watch?v=WxeTMsaSOaA&t=3942s ) Don’t C&P the parentheses....
|
1793264126.8596087
|
1793350526.8596087
|
|
10533
|
Star Catcher by @Ri | Stardance
|
Ri
|
1
|
10.0
|
49
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-05T17:21:24Z", "hours": 10.0, "multiplier": 4.95, "payout": 49, "blessing": "neutral", "text": "I made a simple Godot coin catcher game to gain experience in making games, because I’ve already watched a few long youtube courses. I’m proud that I almost didn’t use the internet, because a lot of stuff was just written in my notebook. Huge shoutout to @ wild_roe for sprites and it was a nice experience.", "repo": "https://github.com/ri-buni/Wild-Coin-Catcher", "demo": "https://ri-buni.itch.io/starcatcher"}]...
|
[{"post_id": 41248, "ts": "202 [{"post_id": 41248, "ts": "2026-08-05T10:32:22Z", "hours": 1.2556, "text": "I added sound effects when player touches the bomb/star, but because I didn’t like any of the sound effects, I just deleted it all, including a sound manager and only added calm background song in main.tscn. I also uploaded “game over” font, so the game would have more pixelated vibe and basically that’s all. It was a nice experience, even though I started this to just be more familiar with everything in godot for making a rhythm game."}, {"post_id": 27369, "ts": "2026-07-12T21:28:25Z", "hours": 1.1289, "text": "Basically, what I did today was just seeing what window sizes would look better + uploading different bgs/sprites, while talking to my friend artist who was kindly drawing all that for me(@ wild_roe in tiktok/youtube/discord, I think she’s opened in commissions!). The only coding stuff I did was mirroring the player animation when turning left and making the player change to standing sprite when not moving. I was making the sound effects and the song in fl studio, but I wasn’t pleased with what came out, so I’m going to do it later/just grab free one from the internet. Also, I’ll add a different font in the game, cuz this one doesn’t really match the stuff going on.."}, {"post_id": 26240, "ts": "2026-07-10T22:08:11Z", "hours": 5.1711, "text": "main.gd spawns the coins and bombs, counts score, makes everything faster over time, handles game over and saves your record. the spawning The core idea is a Timer node. Every time it times out, I spawn one object at a random x position above the screen. Usually a coin, sometimes a bomb (35% chance). The bomb and coin are separate scenes, so main just does this: var spawn_x := randf_range(SPAWN_MARGIN, screen_width - SPAWN_MARGIN) var spawn_position := Vector2(spawn_x, -40.0) if randf() < BOMB_CHANCE: var bomb := BombScene.instantiate() as Bomb bomb.position = spawn_position bomb.fall_speed = fall_speed * BOMB_FALL_MULTIPLIER bomb.hit_player.connect(_on_bomb_hit_player) add_child(bomb) randf() gives a number from 0 to 1, so < BOMB_CHANCE with 0.35 means 35% bombs. Same code for the coin, just with the “collected” signal instead. the difficulty system This is the part i’m most proud of. There’s one value called difficulty that goes from 0 to 1, and everything reads from it. It’s computed like this: func _compute_difficulty() -> float: var time_progress := time_alive / RAMP_DURATION var milestones := int(float(score) / SCORE_STEP) var score_progress := milestones * SCORE_STEP_BONUS return minf(time_progress + score_progress, 1.0) Two things feed it: the clock (maxes out on its own after RAMP_DURATION, which is 300 seconds = 5 minutes) and your score (every SCORE_STEP = 10 coins adds a permanent 0.04 bump). The minf(…, 1.0) caps it so nothing gets faster past full difficulty. And then everything scales off that one value with lerp: player.speed = lerpf(PLAYER_SPEED_START, PLAYER_SPEED_MAX, difficulty) spawn_timer.wait_time = lerpf(SPAWN_TIME_START, SPAWN_TIME_MIN, difficulty) var fall_speed := lerpf(FALL_SPEED_START, FALL_SPEED_MAX, difficulty) lerpf(a, b, t) just means “slide from a to b as t goes 0 to 1”. Because the player speed scales off the SAME difficulty value as the coins, it stays fair. The numbers are picked so even at max speed you can still cross the whole screen in the time a coin takes to fall. Bombs are what actually kill you, not unreachable coins. Small trap in that code: see the float(score) part? In GDScript, score / SCORE_STEP with two ints does integer division, so 5 / 10 gives 0 and rounds everything down. Without that float() the milestones just silently don’t work. Tiny thing, cost me a while. connecting everything with signals Main connects to the signal right when it spawns each object. That way the coin doesn’t know the score exists and the bomb doesn’t know there’s a game over screen. Main is the only one who knows everything. This is where I lost the most time honestly. Chain of pain: Got “Class Bomb hides a global script class”. Turned out there were basically two scripts fighting over the same class_name. Had to find the duplicate and kill it. Then got a Nil crash when spawning. The as Bomb cast in the spawn code was quietly returning null because after fixing #1 the scene’s script situation was messed up. Godot doesn’t crash on a failed cast, it just hands you nothing and lets you crash one line later. THEN “script inherits from Area2D, can’t be assigned to CollisionShape2D”. While re-attaching the script I put it on the wrong node lol. extra The logic is done, but the game still looks like colored triangles and squares. I’ll ask my friend(BIG shoutout to an artist @ wild_roe in tiktok and youtube, I’ll ask her to use her character I like a lot) to make the sprites and the background, and the music i’m gonna make myself."}, {"post_id": 24805, "ts": "2026-07-08T16:39:26Z", "hours": 0.6533, "text": "so I just quickly made the coin script(copy and pasted the bomb script and only changed the signal to collected, so it adds coins instead of stopping the game) and player script: _physics_process reads your input every frame and moves the player by changing its position. arrow keys/WASD give a direction, and it moves at speed in that direction. there’s a clamp so you can’t leave the screen — it keeps the player’s x and y inside the screen bounds so you can’t wander off the edges. in _ready it adds itself to the “player” group - that’s the tag the coins and bombs check for when something touches them. so this one line is what makes the player actually recognizable as “the player” to everything else. it doesn’t handle score or game-over at all, it just moves and stays on screen. so now, the player can move!"}, {"post_id": 23023, "ts": "2026-07-05T19:07:51Z", "hours": 1.7264, "text": "ok so I completely forgot to actually keep a journal while building this lol, so i’m just writing down what i did from memory. rough order so far: built the nodes first (bunch of Area2Ds + shapes), then started actually coding and now the bomb’s finished bomb, player and the coin got two children: a Polygon2D - the red triangle you see. i drew it as a polygon instead of using an image, so there’s no asset/importing stuff to deal with a CollisionShape2D - a little circle(for coin and the bomb) and a rectangle(for the player). this is the actual hitbox. the bomb code: the bomb is an Area2D, which is basically a detection zone. the main idea is the signal hit_player. the bomb has no clue what the score is or that a game-over screen even exists- it just shouts “hit_player” and main.gd listens and deals with it. keeps the bomb simple and reusable, its only job is to fall and to say when it hit you _physics_process moves it down every frame with position.y += fall_speed * delta. the * delta is what keeps it falling at the same speed no matter the framerate if it drops past the bottom of the screen it calls queue_free() to delete itself — otherwise every bomb that misses just keeps falling forever and piles up _on_area_entered runs when something overlaps it, but coins and the player are all Area2Ds too, so it checks is_in_group(“player”) first to make sure it’s actually the player -> then emits hit_player and removes itself I’ll make the coin code after that(same Area2D, same falling, same group check - it’ll just emit a “collected” signal and add a point instead of ending the game) and then player+main cuz those 2 will be harder ig"}]...
|
Title: Star Catcher by @Ri | Stardance
Devlogs:
o Title: Star Catcher by @Ri | Stardance
Devlogs:
ok so I completely forgot to actually keep a journal while building this lol, so i’m just writing down what i did from memory. rough order so far: built the nodes first (bunch of Area2Ds + shapes), then started actually coding and now the bomb’s finished bomb, player and the coin got two children: a Polygon2D - the red triangle you see. i drew it as a polygon instead of using an image, so there’s no asset/importing stuff to deal with a CollisionShape2D - a little circle(for coin and the bomb) and a rectangle(for the player). this is the actual hitbox. the bomb code: the bomb is an Area2D, which is basically a detection zone. the main idea is the signal hit_player. the bomb has no clue what the score is or that a game-over screen even exists- it just shouts “hit_player” and main.gd listens and deals with it. keeps the bomb simple and reusable, its only job is to fall and to say when it hit you _physics_process moves it down every frame with position.y += fall_speed * delta. the * delta is what keeps it falling at the same speed no matter the framerate if it drops past the bottom of the screen it calls queue_free() to delete itself — otherwise every bomb that misses just keeps falling forever and piles up _on_area_entered runs when something overlaps it, but coins and the player are all Area2Ds too, so it checks is_in_group(“player”) first to make sure it’s actually the player -> then emits hit_player and removes itself I’ll make the coin code after that(same Area2D, same falling, same group check - it’ll just emit a “collected” signal and add a point instead of ending the game) and then player+main cuz those 2 will be harder ig
so I just quickly made the coin script(copy and pasted the bomb script and only changed the signal to collected, so it adds coins instead of stopping the game) and player script: _physics_process reads your input every frame and moves the player by changing its position. arrow keys/WASD give a direction, and it moves at speed in that direction. there’s a clamp so you can’t leave the screen — it keeps the player’s x and y inside the screen bounds so you can’t wander off the edges. in _ready it adds itself to the “player” group - that’s the tag the coins and bombs check for when something touches them. so this one line is what makes the player actually recognizable as “the player” to everything else. it doesn’t handle score or game-over at all, it just moves and stays on screen. so now, the player can move!
main.gd spawns the coins and bombs, counts score, makes everything faster over time, handles game over and saves your record. the spawning The core idea is a Timer node. Every time it times out, I spawn one object at a random x position above the screen. Usually a coin, sometimes a bomb (35% chance). The bomb and coin are separate scenes, so main just does this: var spawn_x := randf_range(SPAWN_MARGIN, screen_width - SPAWN_MARGIN) var spawn_position := Vector2(spawn_x, -40.0) if randf() < BOMB_CHANCE: var bomb := BombScene.instantiate() as Bomb bomb.position = spawn_position bomb.fall_speed = fall_speed * BOMB_FALL_MULTIPLIER bomb.hit_player.connect(_on_bomb_hit_player) add_child(bomb) randf() gives a number from 0 to 1, so < BOMB_CHANCE with 0.35 means 35% bombs. Same code for the coin, just with the “collected” signal instead. the difficulty system This is the part i’m most proud of. There’s one value called difficulty that goes from 0 to 1, and everything reads from it. It’s computed like this: func _compute_difficulty() -> float: var time_progress := time_alive / RAMP_DURATION var milestones := int(float(score) / SCORE_STEP) var score_progress := milestones * SCORE_STEP_BONUS return minf(time_progress + score_progress, 1.0) Two things feed it: the clock (maxes out on its own after RAMP_DURATION, which is 300 seconds = 5 minutes) and your score (every SCORE_STEP = 10 coins adds a permanent 0.04 bump). The minf(…, 1.0) caps it so nothing gets faster past full difficulty. And then everything scales off that one value with lerp: player.speed = lerpf(PLAYER_SPEED_START, PLAYER_SPEED_MAX, difficulty) spawn_timer.wait_time = lerpf(SPAWN_TIME_START, SPAWN_TIME_MIN, difficulty) var fall_speed := lerpf(FALL_SPEED_START, FALL_SPEED_MAX, difficulty) lerpf(a, b, t) just means “slide from a to b as t goes 0 to 1”. Because the player speed scales off the SAME difficulty value as the coins, it stays fair. The numbers are picked so even at max speed you can still cross the whole screen in the time a coin takes to fall. Bombs are what actually kill you, not unreachable coins. Small trap in that code: see the float(score) part? In GDScript, score / SCORE_STEP with two ints does integer division, so 5 / 10 gives 0 and rounds everything down. Without that float() the milestones just silently don’t work. Tiny thing, cost me a while. connecting everything with signals Main connects to the signal right when it spawns each object. That way the coin doesn’t know the score exists and the bomb doesn’t know there’s a game over screen. Main is the only one who knows everything. This is where I lost the most time honestly. Chain of pain: Got “Class Bomb hides a global script class”. Turned out there were basically two scripts fighting over the same class_name. Had to find the duplicate and kill it. Then got a Nil crash when spawning. The as Bomb cast in the spawn code was quietly returning null because after fixing #1 the scene’s script situation was messed up. Godot doesn’t crash on a failed cast, it just hands you nothing and lets you crash one line later. THEN “script inherits from Area2D, can’t be assigned to CollisionShape2D”. While re-attaching the script I put it on the wrong node lol. extra The logic is done, but the game still looks like colored triangles and squares. I’ll ask my friend(BIG shoutout to an artist @ wild_roe in tiktok and youtube, I’ll ask her to use her character I like a lot) to make the sprites and the background, and the music i’m gonna make myself.
Basically, what I did today was just seeing what window sizes would look better + uploading different bgs/sprites, while talking to my friend artist who was kindly drawing all that for me(@ wild_roe in tiktok/youtube/discord, I think she’s opened in commissions!). The only coding stuff I did was mirroring the player animation when turning left and making the player change to standing sprite when not moving. I was making the sound effects and the song in fl studio, but I wasn’t pleased with what came out, so I’m going to do it later/just grab free one from the internet. Also, I’ll add a different font in the game, cuz this one doesn’t really match the stuff going on..
I added sound effects when player touches the bomb/star, but because I didn’t like any of the sound effects, I just deleted it all, including a sound manager and only added calm background song in main.tscn. I also uploaded “game over” font, so the game would have more pixelated vibe and basically that’s all. It was a nice experience, even though I started this to just be more familiar with everything in godot for making a rhythm game.
Ships:
I made a simple Godot coin catcher game to gain experience in making games, because I’ve already watched a few long youtube courses. I’m proud that I almost didn’t use the internet, because a lot of stuff was just written in my notebook. Huge shoutout to @ wild_roe for sprites and it was a nice experience....
|
1792878838.8656237
|
1793742838.8656237
|
|
10534
|
Tic-Tac-Toe by @k_nilesh | Stardance
|
k_nilesh
|
1
|
0.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-07T07:34:50Z", "hours": 0.0, "multiplier": 4.1, "payout": 1, "blessing": "neutral", "text": "I built a Tic-Tac-Toe game using HTML, CSS, and JavaScript, featuring two-player gameplay, winner detection, draw detection, and sound effects to make the experience more engaging. The most challenging part was implementing the game logic correctly and ensuring all winning and draw conditions worked smoothly without bugs. I’m proud of taking the project from an idea to a fully functional game and publishing it online, which helped me strengthen my JavaScript skills and understanding of web development. To test the project, simply open the live link in any modern web browser and start playing by taking turns on the grid until a winner is declared or the game ends in a draw.", "repo": "https://github.com/k-nilesh04/tic-tac-toe", "demo": "https://k-nilesh04.github.io/tic-tac-toe/"}]...
|
[{"post_id": 4055, "ts": "2026 [{"post_id": 4055, "ts": "2026-06-07T07:29:26Z", "hours": 0.3042, "text": "🎮 Just shipped my Tic-Tac-Toe Game! Built using HTML, CSS, and JavaScript, this project helped me practice DOM manipulation, game logic, event handling, and responsive web design. ✨ Features: • Interactive gameplay • Win & Draw detection • Sound effects • Restart functionality • Responsive design This is one of the projects I’ve built while learning web development, and I’m excited to keep improving it with new features in future updates. 🔗 GitHub: [https://github.com/k-nilesh04/tic-tac-toe] 🎮 Live Demo: [https://k-nilesh04.github.io/tic-tac-toe/] Feedback is always welcome!"}]...
|
Title: Tic-Tac-Toe by @k_nilesh | Stardance
Devlo Title: Tic-Tac-Toe by @k_nilesh | Stardance
Devlogs:
🎮 Just shipped my Tic-Tac-Toe Game! Built using HTML, CSS, and JavaScript, this project helped me practice DOM manipulation, game logic, event handling, and responsive web design. ✨ Features: • Interactive gameplay • Win & Draw detection • Sound effects • Restart functionality • Responsive design This is one of the projects I’ve built while learning web development, and I’m excited to keep improving it with new features in future updates. 🔗 GitHub: [https://github.com/k-nilesh04/tic-tac-toe] 🎮 Live Demo: [https://k-nilesh04.github.io/tic-tac-toe/] Feedback is always welcome!
Ships:
I built a Tic-Tac-Toe game using HTML, CSS, and JavaScript, featuring two-player gameplay, winner detection, draw detection, and sound effects to make the experience more engaging. The most challenging part was implementing the game logic correctly and ensuring all winning and draw conditions worked smoothly without bugs. I’m proud of taking the project from an idea to a fully functional game and publishing it online, which helped me strengthen my JavaScript skills and understanding of web development. To test the project, simply open the live link in any modern web browser and start playing by taking turns on the grid until a winner is declared or the game ends in a draw....
|
1793123327.3445349
|
1793209727.3445349
|
|
10540
|
SolarEcho by @Requiem | Stardance
|
Requiem
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-08T11:10:47Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built SolarEcho, an open-source Python DSP app that turns live NASA space weather data into ambient electronic audio. It polls NASA’s DONKI CME data, extracts values like speed, half-angle, latitude, and longitude, and maps them into synth parameters such as pitch, volume, tremolo, and stereo movement in real time. The hardest part was getting the full real-time pipeline working end to end: NASA API ingestion, async data handling, DSP mapping, and live audio output. I also had to solve practical issues around NASA API rate limits, missing DONKI fields in some CME records, and correctly recording system audio for the live demo on Linux. I’m proud that SolarEcho is not just a concept — it is a working prototype that uses real NASA data and turns it into a live sensory experience. I’m also proud that I debugged the full chain from API polling to audio synthesis and then figured out how to capture the actual output for a demo video instead of just showing code on screen. To test SolarEcho, people need Python, the dependencies in requirements.txt, a free NASA API key from api.nasa.gov, and an audio setup that supports sounddevice. They should add their key as an environment variable, run python main.py, and note that NASA keys are rate-limited, with the default personal limit at 1,000 requests per hour and DEMO_KEY much lower, so slower polling is better for demos", "repo": "https://github.com/Adityachavhan339/SolarEcho", "demo": "https://drive.google.com/file/d/1NAJEPO0QepzsFgoGxCGQ3cXCHccJ_-NB/view?usp=drive_link"}]...
|
[{"post_id": 4802, "ts": "2026 [{"post_id": 4802, "ts": "2026-06-08T09:30:33Z", "hours": 2.3722, "text": "Devlog 01 — SolarEcho foundation built Today I started building SolarEcho, a Python DSP project that turns live NASA space weather data into ambient electronic sound. What I finished: Set up NASA API access with my official api.nasa.gov key Built the async ingestion pipeline for NASA DONKI CME data Parsed CME values like speed, halfAngle, latitude, and longitude Connected the NASA data pipeline to a real-time audio synthesizer Fixed callback and field-name bugs in the Python code Verified the full pipeline through terminal logs: NASA fetch -> queue bridge -> synth update -> audio callback Current stack: aiohttp asyncio numpy sounddevice NASA DONKI API Result: SolarEcho now successfully receives live CME telemetry and maps it into audio parameters in real time. I Am Quite Interested On Improving It More Maybe Even Making It Live On Cloud But API Limits Are Troublesome You Can See Code At GitHub ( Project Bio ) ( The Project Is Not Live Yet But You Can Try Hearing Audio From Mp4 Video Check Google Drive Link )"}]...
|
Title: SolarEcho by @Requiem | Stardance
Devlogs: Title: SolarEcho by @Requiem | Stardance
Devlogs:
Devlog 01 — SolarEcho foundation built Today I started building SolarEcho, a Python DSP project that turns live NASA space weather data into ambient electronic sound. What I finished: Set up NASA API access with my official api.nasa.gov key Built the async ingestion pipeline for NASA DONKI CME data Parsed CME values like speed, halfAngle, latitude, and longitude Connected the NASA data pipeline to a real-time audio synthesizer Fixed callback and field-name bugs in the Python code Verified the full pipeline through terminal logs: NASA fetch -> queue bridge -> synth update -> audio callback Current stack: aiohttp asyncio numpy sounddevice NASA DONKI API Result: SolarEcho now successfully receives live CME telemetry and maps it into audio parameters in real time. I Am Quite Interested On Improving It More Maybe Even Making It Live On Cloud But API Limits Are Troublesome You Can See Code At GitHub ( Project Bio ) ( The Project Is Not Live Yet But You Can Try Hearing Audio From Mp4 Video Check Google Drive Link )
Ships:
I built SolarEcho, an open-source Python DSP app that turns live NASA space weather data into ambient electronic audio. It polls NASA’s DONKI CME data, extracts values like speed, half-angle, latitude, and longitude, and maps them into synth parameters such as pitch, volume, tremolo, and stereo movement in real time. The hardest part was getting the full real-time pipeline working end to end: NASA API ingestion, async data handling, DSP mapping, and live audio output. I also had to solve practical issues around NASA API rate limits, missing DONKI fields in some CME records, and correctly recording system audio for the live demo on Linux. I’m proud that SolarEcho is not just a concept — it is a working prototype that uses real NASA data and turns it into a live sensory experience. I’m also proud that I debugged the full chain from API polling to audio synthesis and then figured out how to capture the actual output for a demo video instead of just showing code on screen. To test SolarEcho, people need Python, the dependencies in requirements.txt, a free NASA API key from api.nasa.gov, and an audio setup that supports sounddevice. They should add their key as an environment variable, run python main.py, and note that NASA keys are rate-limited, with the default personal limit at 1,000 requests per hour and DEMO_KEY much lower, so slower polling is better for demos...
|
1793127050.923294
|
1793213450.923294
|
|
10556
|
SuperiorTab by @nathanielramirez | Stardance
|
nathanielramirez
|
1
|
9.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-15T07:15:25Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "It’s a new tab alternative which removes AI features and overview from Google, DuckDuckGo, and Bing, it allows you to change engines and change your background color in the editor tab that opens when you press the edit button in the bottom left.", "repo": "https://github.com/nathanieljramirez/superiortab", "demo": "https://nathanieljramirez.github.io/superiortab/"}]...
|
[{"post_id": 28752, "ts": "202 [{"post_id": 28752, "ts": "2026-07-15T06:48:52Z", "hours": 1.0, "text": "Devlog 2 I made an pencil icon in Figma and added it to a button I made in the bottom left. When it’s clicked it should open a sidebar allowing you to edit the background color and search engine which was originally under the search bar."}, {"post_id": 28622, "ts": "2026-07-14T23:48:57Z", "hours": 6.0, "text": "Devlog 1 I began by setting up my project with Vite set up my own styling and custom dropdown to select which search engine to use and I modified GitHub’s static workflow to build my project from source into distributable web files and publish to GitHub pages every commit. The styling looks minimal but I spent most of the time setting up how it’ll work internally."}]...
|
Title: SuperiorTab by @nathanielramirez | Stardanc Title: SuperiorTab by @nathanielramirez | Stardance
Devlogs:
Devlog 1 I began by setting up my project with Vite set up my own styling and custom dropdown to select which search engine to use and I modified GitHub’s static workflow to build my project from source into distributable web files and publish to GitHub pages every commit. The styling looks minimal but I spent most of the time setting up how it’ll work internally.
Devlog 2 I made an pencil icon in Figma and added it to a button I made in the bottom left. When it’s clicked it should open a sidebar allowing you to edit the background color and search engine which was originally under the search bar.
Ships:
It’s a new tab alternative which removes AI features and overview from Google, DuckDuckGo, and Bing, it allows you to change engines and change your background color in the editor tab that opens when you press the edit button in the bottom left....
|
1792878828.6088684
|
1793742828.6088684
|
|
10562
|
Random Wikipedia Article Generator by @yellowissuc Random Wikipedia Article Generator by @yellowissuchanoverratedcolor | Stardance...
|
yellowissuchanoverratedcolor
|
1
|
3.42
|
12
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-07T11:53:17Z", "hours": 3.0, "multiplier": 3.98, "payout": 12, "blessing": "neutral", "text": "I programmed a website that shows you random Wikipedia articles at the press of a button :)) Why did I make this? Wikipedia has a built in function to show you a random article, but to use it you will have to visit the corresponding link each time so there is no way to “spam” it. Also I am currently working on another project I will need the Wikipedia API for so I used this as a quick introduction to the API for myself. I kinda forgot how annoying CSS is to deal with but building a webpage again was kinda fun :)", "repo": "https://github.com/floopus44/random-wikipedia-generator", "demo": "https://floopus44.github.io/random-wikipedia-generator/"}]...
|
[{"post_id": 16233, "ts": "202 [{"post_id": 16233, "ts": "2026-06-26T11:35:24Z", "hours": 0.4231, "text": "I am currently building a website that shows you random Wikipedia articles as a preparation for another project :) Today, I spent like twenty minutes implementing a language system which allows the user to select their target content language. It was kinda annoying because I chose to stick to html select and option elements. The problem is that the styling options for option elements are limited. Like really really insanely limited. So it looks kinda.. not good rn That’s why I plan on switching to an alternative that does not rely on these HTML elements in the future"}, {"post_id": 4165, "ts": "2026-06-07T11:40:57Z", "hours": 3.0314, "text": "Today, I wanted to gain some familiarity with the Wikipedia API in preparation for another project I am working on. So I programmed this little website that shows you a random Wikipedia article with the press of a button. Today I wrote all the basic HTML, CSS and JavaScript code, added functionality to actually show you the article and pushed to GitHub. I then spend what feels like an eternity trying to make the website work for mobile users (was relatively easy tho once I figured out how lol) The project is almost finished, I just need to implement some functionality to show articles in other languages :)"}]...
|
Title: Random Wikipedia Article Generator by @yell Title: Random Wikipedia Article Generator by @yellowissuchanoverratedcolor | Stardance
Devlogs:
Today, I wanted to gain some familiarity with the Wikipedia API in preparation for another project I am working on. So I programmed this little website that shows you a random Wikipedia article with the press of a button. Today I wrote all the basic HTML, CSS and JavaScript code, added functionality to actually show you the article and pushed to GitHub. I then spend what feels like an eternity trying to make the website work for mobile users (was relatively easy tho once I figured out how lol) The project is almost finished, I just need to implement some functionality to show articles in other languages :)
I am currently building a website that shows you random Wikipedia articles as a preparation for another project :) Today, I spent like twenty minutes implementing a language system which allows the user to select their target content language. It was kinda annoying because I chose to stick to html select and option elements. The problem is that the styling options for option elements are limited. Like really really insanely limited. So it looks kinda.. not good rn That’s why I plan on switching to an alternative that does not rely on these HTML elements in the future
Ships:
I programmed a website that shows you random Wikipedia articles at the press of a button :)) Why did I make this? Wikipedia has a built in function to show you a random article, but to use it you will have to visit the corresponding link each time so there is no way to “spam” it. Also I am currently working on another project I will need the Wikipedia API for so I used this as a quick introduction to the API for myself. I kinda forgot how annoying CSS is to deal with but building a webpage again was kinda fun :)...
|
1793267614.4863815
|
1793354014.4863815
|
|
10564
|
ZeroX - Cute Slack Bot! by @AuraZod | Stardance
|
AuraZod
|
1
|
3.3
|
5
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-08T19:53:55Z", "hours": 3.0, "multiplier": 1.64, "payout": 5, "blessing": "neutral", "text": "A Simple Slack bot, Overall development was more of a fun than challenging but still had some issues with understanding the multiple token and slashes being registered separetly. I’m proud of how i handled the project even tho it was my first time working with bolt js (where i work mostly in python). you can test out the bot in HackClub Slack Communiy with cmnds specified in readme or use /zr-help.", "repo": "https://github.com/AuraZod/ZeroX-SlackBot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0B95V123TQ"}]...
|
[{"post_id": 5444, "ts": "2026 [{"post_id": 5444, "ts": "2026-06-09T06:57:42Z", "hours": 0.2961, "text": "Updated Bot’s repo & project to contain link to directly try out bot instead of just youtube video. Updated deployment method to also contain guide for pm2. Specified ai usage in readme. you can try the bot here : https://app.slack.com/client/E09V59WQY1E/C0B95V123TQ"}, {"post_id": 5096, "ts": "2026-06-08T19:44:54Z", "hours": 3.2167, "text": "been working on the zerox slack bot transition. struggled with event subscriptions and socket mode on the dashboard since it kept asking for a request url — had to toggle socket mode first to bypass it. also had to invite the bot to the channel manually to get app_mention to trigger. rewrote the parser to clean the mention tag, colons, and spaces because it was throwing a fit and fallbacking to help menu. ran into background instances of node load balancing socket mode connection, killed them with stop-process to get it working. ask and roast commands updated to show the original prompt at the top. cleaned up deploy.md and slackbot.service for root systemd deployment. Finally made the first draft for it. bot is up and working. I was clueless at first on what to create for project on hackclub & then just made slack bot as it will give me idea on how things work. It was different and unique experience compared to discord bot developing (Which I mostly works on)."}]...
|
Title: ZeroX - Cute Slack Bot! by @AuraZod | Stard Title: ZeroX - Cute Slack Bot! by @AuraZod | Stardance
Devlogs:
been working on the zerox slack bot transition. struggled with event subscriptions and socket mode on the dashboard since it kept asking for a request url — had to toggle socket mode first to bypass it. also had to invite the bot to the channel manually to get app_mention to trigger. rewrote the parser to clean the mention tag, colons, and spaces because it was throwing a fit and fallbacking to help menu. ran into background instances of node load balancing socket mode connection, killed them with stop-process to get it working. ask and roast commands updated to show the original prompt at the top. cleaned up deploy.md and slackbot.service for root systemd deployment. Finally made the first draft for it. bot is up and working. I was clueless at first on what to create for project on hackclub & then just made slack bot as it will give me idea on how things work. It was different and unique experience compared to discord bot developing (Which I mostly works on).
Updated Bot’s repo & project to contain link to directly try out bot instead of just youtube video. Updated deployment method to also contain guide for pm2. Specified ai usage in readme. you can try the bot here : https://app.slack.com/client/E09V59WQY1E/C0B95V123TQ
Ships:
A Simple Slack bot, Overall development was more of a fun than challenging but still had some issues with understanding the multiple token and slashes being registered separetly. I’m proud of how i handled the project even tho it was my first time working with bolt js (where i work mostly in python). you can test out the bot in HackClub Slack Communiy with cmnds specified in readme or use /zr-help....
|
1793116373.390038
|
1793202773.390038
|
|
10581
|
I-S-S Tracker! by @mikhailnotfish | Stardance
|
mikhailnotfish
|
1
|
0.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T00:52:37Z", "hours": 0.0, "multiplier": 2.15, "payout": 1, "blessing": "neutral", "text": "so its out for you guys to try right now! in the future i think ill use a library to make the globe 3d and have the position of the iss as a dot be updated in realtime as well as the coordinates", "repo": "https://github.com/mikhailnotfish/isstracker", "demo": "https://mikhailnotfish.github.io/isstracker/"}]...
|
[{"post_id": 4076, "ts": "2026 [{"post_id": 4076, "ts": "2026-06-07T08:31:52Z", "hours": 0.29, "text": "guess what, guys? its done! well, not really… but you can try it out right now!"}]...
|
Title: I-S-S Tracker! by @mikhailnotfish | Stardan Title: I-S-S Tracker! by @mikhailnotfish | Stardance
Devlogs:
guess what, guys? its done! well, not really… but you can try it out right now!
Ships:
so its out for you guys to try right now! in the future i think ill use a library to make the globe 3d and have the position of the iss as a dot be updated in realtime as well as the coordinates...
|
1793202629.5044103
|
1793289029.5044103
|
|
10616
|
retro video game by @tlevi | Stardance
|
tlevi
|
1
|
3.0
|
5
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-08T18:20:19Z", "hours": 3.0, "multiplier": 1.47, "payout": 5, "blessing": "neutral", "text": "I created a simple browser-based runner game using HTML, CSS, and JavaScript where players use the arrow keys to dodge obstacles, earn points, and try to beat their high score. One of the most challenging parts was handling smooth player movement, obstacle spawning, collision detection, and score tracking while keeping the gameplay enjoyable. I’m especially proud of building a complete playable game from scratch with clean controls and a black and white design that runs directly in the browser. When trying it, you should know that timing and quick reactions are key! Good luck and enjoy :) I hope you like it!", "repo": "https://github.com/TLevi74/retrbw", "demo": "https://tlevi74.github.io/retrbw/"}]...
|
[{"post_id": 5036, "ts": "2026 [{"post_id": 5036, "ts": "2026-06-08T18:11:40Z", "hours": 2.8703, "text": "Project done! A simple flappy bird style video game!"}, {"post_id": 4091, "ts": "2026-06-07T09:00:58Z", "hours": 0.2753, "text": "Started working on a retro game"}]...
|
Title: retro video game by @tlevi | Stardance
Dev Title: retro video game by @tlevi | Stardance
Devlogs:
Started working on a retro game
Project done! A simple flappy bird style video game!
Ships:
I created a simple browser-based runner game using HTML, CSS, and JavaScript where players use the arrow keys to dodge obstacles, earn points, and try to beat their high score. One of the most challenging parts was handling smooth player movement, obstacle spawning, collision detection, and score tracking while keeping the gameplay enjoyable. I’m especially proud of building a complete playable game from scratch with clean controls and a black and white design that runs directly in the browser. When trying it, you should know that timing and quick reactions are key! Good luck and enjoy :) I hope you like it!...
|
1793245976.2343786
|
1793332376.2343786
|
|
10668
|
Mini Jam 212 submission by @ViceVersa | Stardance
|
ViceVersa
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-26T06:26:13Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Small puzzle game where you have to help a spider kill the child. This was a long time ago so I don’t really remember the process but I’m sure it was good", "repo": "https://github.com/ViceVersa-09/Mini-Jam-212", "demo": "https://villeecool.itch.io/the-forest-of-control"}]...
|
[{"post_id": 14296, "ts": "202 [{"post_id": 14296, "ts": "2026-06-23T11:10:10Z", "hours": 1.7842, "text": "Game for the game jam “mini jam 212”, the picture is from an early version, the game is done"}]...
|
Title: Mini Jam 212 submission by @ViceVersa | Sta Title: Mini Jam 212 submission by @ViceVersa | Stardance
Devlogs:
Game for the game jam “mini jam 212”, the picture is from an early version, the game is done
Ships:
Small puzzle game where you have to help a spider kill the child. This was a long time ago so I don’t really remember the process but I’m sure it was good...
|
1793141663.0810492
|
1793228063.0810492
|
|
10684
|
Solve It by @Shish | Stardance
|
Shish
|
1
|
46.0
|
843
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-19T08:10:55Z", "hours": 46.0, "multiplier": 18.48, "payout": 843, "blessing": "neutral", "text": "As students, we all require notes and questions when we are practicing for any competitive exams, whenever I wanted the same, I had to ask my friends or I had to buy PYQs online. So to tackle that, I made a website where you can easily post notes and PYQs FOR FREE without even signing up. The website is called SolveIt. There are many things that can be done on the website like uploading PYQs or Notes or any other study related material for a specific competitive examination in a PDF format. If the exam is state specific, you can select the state too. Currently it is only available for India, USA, China, United Kingdom and Australia. It also includes many exams like Gaokao, NEET, JEE, SAT, ACT, QCE, etc. While uploading you can specify your country, state, examination name, year, class/grade and subject. In the settings page, you can make your own avatar (it is inspired by skribbl.io) and yes, the scribbles are hand drawn. You can also delete your account if you wish to, and many other things like changing the password, email and deleting previously uploaded papers. You can navigate easily on the browse page by using the searchbar as well as the filters. Filters will only show those options which are available. You can click on a card and view the paper inside the site itself if you don’t wish to download it. Moreover, you can see more details like uploaded by, uploaded on, length and size of the document and much more. The most challenging part of this project was the backend as always. Routes didn’t work initially when I started off, I couldn’t figure out a way to make scribbled borders so I took help of AI for that. MOST ANNOYING part was the avatar builder, I had to make hand drawn scribbles and convert it into svg paths and then modify those paths according to the container. I also took help of AI to encrypt the passwords of the user. I am very proud of the fact that I have self hosted this website, with the raspberry pi 5 that I received from Hackclub this year. I used Cloudflared private tunnel. Entire backend and database is on RPI. I really wanted to add more things to the project but due to academics and school work, I have to ship it now or else I won’t get time for my upcoming examinations. Before you test it, I would like to make a request that if you face any problem, please report it by going to Report a Bug page so that I come to know about it and can fix it as soon as possible. For more details about the project and if you want to know about it in detail, please read the README file.", "repo": "https://github.com/C0nfu5ing-5pring/SolveIt", "demo": "https://solve-it-nine.vercel.app"}]...
|
[{"post_id": 70459, "ts": "202 [{"post_id": 70459, "ts": "2026-09-19T07:27:32Z", "hours": 1.5328, "text": "v (0.7.0-Beta) Continue as Guest + README + more Updates Added hand drawn images to the home page reducing the white space that was looking ugly earlier Added continue as guest feature, if a user continues as guest, they won’t be able to delete their account or change their email address as well as password Wrote the README file I still do not consider this project as completely done, I will be adding more features to it once I am done with my academics What next? I’ll ship it most probably"}, {"post_id": 70419, "ts": "2026-09-19T04:55:34Z", "hours": 0.6714, "text": "v(0.6.0-Beta) Password change Updates I have decided not to include themes as I can no longer work on this project due to school work academics I just want to finish this project as soon as I can. Next devlog might be the last devlog of this project where I’ll add “Continue as guest” feature for shipwrights SO, in this update, I’ve just basically copy pasted the change email logic and made a change password feature. I literally copy pasted it and then modified it for password hence it took less time What next? I’ll be summing up this project by adding continue as guest feature"}, {"post_id": 69546, "ts": "2026-09-17T08:45:17Z", "hours": 4.2175, "text": "v(0.5.0-Beta) Avatar builder + bug fixes Updates Now you can make your own avatar just like skribbl.io!!!!! It took so much of my time tbh, I had to hand draw every doodle, I wanted to record it on lapse but couldn’t as screen recording wasn’t working on iPad for some reason and also when I screenshared, the screen went black for some reason. I contacted lapse-help on slack but didn’t find any solution so I decided not to let it go Added a new updateavatar component which lets you make your own avatar and update it if you want to!! Did layout fixes on large screen devices as only horizontal scroll was allowed and vertical scroll was disabled (my friend told me, I didn’t even notice it lol) Fixed frontend as well as backend bugs during the making of this avatar feature This devlog is toooooo big ik but i couldn’t find time daily due to school and assignments and all What next? I’ll work on themes, black white and system themes. The basic ones I’ll also work on “Continue as guest” so that shipwrights don’t have to login when they go through the project I’ll most probably end the project for now after these features are implemented as I need to prepare for upcoming examinations and also stardance is coming to an end :("}, {"post_id": 64001, "ts": "2026-09-08T03:22:18Z", "hours": 1.3669, "text": "v(0.4.4-Beta) Session expiry bug fix + responsiveness fixed Updates Fixed the responsiveness issue on small screen devices I also faced another issue, My friends were unable to download papers and it displayed “Error during downloading” So I took help of AI to know what the problem is and it said that It was because their token had expired SOOOOO…. I increased the token expiry limit to 30 days AND if the token is expired, you will be asked to login again. I applied this throughout the website, upload, browse, report and download I’ll also be switching to nest as I don’t fully trust my ISP and also because shipwright’s review policy said so. BUT i’ll do it towards the end once every feature is almost well built. I’ve applied to nest and hope they accept it as soon as possible! What next? Next, I’ll work on Avatar maker like skribbl.io (this is going to be tuffffffffff)"}, {"post_id": 62200, "ts": "2026-09-05T13:50:17Z", "hours": 1.7614, "text": "v(0.4.3-Beta) See uploads and delete them Updates Now you can see your uploads in the settings page and delete them if you wish to If you click on the card, it’ll redirect you to a separate page where you can see the paper in detail What next? Next, I’ll work on fixing the responsiveness issue on small screen devices"}, {"post_id": 62041, "ts": "2026-09-05T08:10:07Z", "hours": 0.8733, "text": "v(0.4.1-Beta) Delete account Updates Now you can permanently delete your account. Once you delete your account, all the posts from that account will be removed from the website. For this, I made /delete-me route What next? Next, I’ll make a section where users can manage their papers, they can delete their papers if they want After that, I’ll be working on fixing the responsiveness issue on small screen devices"}, {"post_id": 61935, "ts": "2026-09-05T03:30:17Z", "hours": 1.3983, "text": "v(0.4.1-Beta) Update Email address + Errors Updates Added errors and toasts throughout the website Added update email address feature I’ll be keeping next few devlogs small as I will be working on each feature one by one What next? Next, I’ll work on Delete account feature"}, {"post_id": 61644, "ts": "2026-09-04T17:18:43Z", "hours": 3.3133, "text": "(0.4.0-Beta) Settings page + 404 handling Updates Handled 404 error (I had to because my WiFi was down several times today. Many of my friends thought that it was my mistake but actually WiFi was down so my rpi couldn’t serve data) Made settings page and displayed user data on it. I have added an easter egg when the site is down, so basically when there’s an 404 err, you can see an easter can which I’ve added to the site. On the settings page, I have Apprearance settings, Account settings, Preference settings and Delete account. None of them are functional yet. Took a lot of time to create a route (/me). As I faced a lot of bugs while doing so. What next? I know i’ve again delayed making doodles, I WILL MAKE THEM istg I’ll also fix the resonsiveness issue on small screen devices I’ll work on making the settings page functional I have 2 days off at school so I am going yo use them very efficiently!!"}, {"post_id": 59537, "ts": "2026-09-01T12:41:50Z", "hours": 2.4753, "text": "v(0.3.0-Beta) Separate paper view + Searchbar Updates Added a searchbar (finally Now, you can view each paper separately inside the website itself Made very very very small changes in the design of the website Now you can click on the logo to direcly go back to the browse page (Yeah, I know it’s not something genius) What next? I REALLY want to add doodles but I have been delaying it TOO much now! I think I might be working on it (not sure tho) I also need to make a pfp maker, where users can make their own pfp kinda like the one on skribbl.io. Actually this entire design is inspired by skribbl.io I’ll also be adding user settings page and all where they can change theme, fonts and… okay, just font and themes for now."}, {"post_id": 57954, "ts": "2026-08-30T09:07:53Z", "hours": 3.155, "text": "v(0.2-Beta) Deployed + Reviews + More Updates Soooooo, the site it live. andithasalotofproblems!!! I made the site live and asked my friends to use it and fill it with notes. many of them complained about bugs so, I fixed some of them and NOW, I need to add a search bar on the site (I completely forgot lol). In these 3 hours, I deployed the website (this time didn’t get counted as I was working on the terminal. But it took around 1 and a half hour). So in 3 hours, I handled bugs and fixed some of them, enhanced responsiveness as some of my friends complained that they couldn’t scroll on the website or smthng. Added more information on the card, Added 2 new columns named description and type (as requested by a friend). Changed the layout of lower part of the card a little bit (made it a little bit clean). Made the upload code a bit efficient by removing repetitive code. What next? Next, I’ll work on making a search bar on the website so it is easy to use and navigate I’ll be taking inputs from friends and working on them I will be making a separate page where the user can see the pdf each separately insite the site Next devlog is going to be CHUNKY!!!"}, {"post_id": 55439, "ts": "2026-08-27T08:29:00Z", "hours": 2.7292, "text": "v(0.1.3-Alpha) Report bug feature and it’s backend + Enhanced responsiveness across the website + colours Updates Enhanced responsivess across the site Added colours and sketchy borders and colours wherever I could Added new report bug feature along with it’s backend (this one took time as WiFi went off and I couldn’t ssh into my rpi) What next? I’ll be making doodles (YES, i’ll be hand drawing them) I haven’t thought about anything else yet! BUT, I might be making the website public and push it into the beta version, for that, I’ll need to setup a cloudflare connection via my rpi (aghh i’ll look into it once I am fully convinced with the frontend."}, {"post_id": 55023, "ts": "2026-08-26T13:27:40Z", "hours": 2.46, "text": "v(0.1.2-Alpha) Scribbly Borders + New countries Updates Added scribbly lines/borders (used AI’s help) Added new countries and their examinations (UK, USA, Australia, China) Added mansory layout so that i don’t have to worry about responsiveness later What next? Next, i’ll work on adding colours to the site and add doodle"}, {"post_id": 54456, "ts": "2026-08-25T14:03:23Z", "hours": 3.4747, "text": "(v.0.1.1-Alpha) New UI + Notifications+ More info about the file Updates Added new design inspired by scribbles and doodles. (Still figuring out how to make scribbled borders) Enhanced responsiveness for new design Displayed more information about the file uploaded by the user such as File size and no. of pages file contains. Fixed a few bugs related to login and logout pages Added notifications (Yet to design it, atp, it’s just a basic design and not synced to the project design) Deleted unwanted files that I had made earlier during setting up the folder structure. What next? Next, I’ll work on adding design to the notification componentk Then, I’ll be adding doodles and stuff to fill up the white space I also wish to add more countries like The USA, Canada, UK, which have competitive exams."}, {"post_id": 48046, "ts": "2026-08-16T10:24:38Z", "hours": 1.7575, "text": "(v0.1.0-Alpha) Responsiveness + Fixed a loop hole + Showing more details in the card Updates Enhanced responsivess (sidebar, header, browse page for mob iles and large screen devices) Displayed more info like region, year, subject, uploaded by, uploaded at, exam name, etc. to the card Fixed loop hole, earlier, a user could access the browse page, basically entire website without logging in lol. Added a new field to the database in papers table which stores the user’s name instead of just storing the id number of that person What next? I am thinking of adding notifications using react-toastify and sound effects I’ll work on designing the card. I am considering to change the entire design and lean more towards a brutalist design Next update is going to be a major one Where was I since last 12 days? I have been busy with school work and also my mid-terms are commencing from 1st of September so, I couldn’t give more time to thr project. This could also happen in the near future until my exams are completed (11th Sept)"}, {"post_id": 40839, "ts": "2026-08-04T16:56:36Z", "hours": 1.3603, "text": "(v0.0.8-Alpha) Sidebar and Responsivenes Updates Added responsiveness to the login, signup, upload, home pages and header component Made the sidebar functional, you can now filter data based on year, country, state, exam i think currently, on smaller devices, the font size is a lot smaller, if you guys feel the same please give me a review so that I can improve it! What next? Next, I’ll work on enhancing the responsiveness And also, i’ll start designing the card which will contain details of the papers I also need to handle edge cases like not showing upload button to guest users and so many loop holes that are still there in this project."}, {"post_id": 40157, "ts": "2026-08-03T15:48:18Z", "hours": 1.5133, "text": "v(0.0.7-Alpha) Download Feature Updates Added the download feature. you can click on the card to open the PDF file on the browser What next? Next, I’ll work on responsiveness"}, {"post_id": 38911, "ts": "2026-08-01T14:31:53Z", "hours": 0.6728, "text": "v(0.0.6-Alpha) Log out + Showing data from db Update Added log out feature (it was quite easy just had to apply some display conditions to the buttons and remove the user’s token from the localStorage) Added data from the db in the form of cards on /browse. It is not at all good-looking. I’ll work on it once I implement the download feature in it. What next? I’ll be implementing the download files feature I’ll start working on making the website responsive"}, {"post_id": 38751, "ts": "2026-08-01T09:45:07Z", "hours": 2.0417, "text": "v(0.0.5) Frontend revamp Updates Revamped the frontend design Added drag and drop file submission feature The site is not yet responsive Log in and sign up pages are also changed Browse and home pages are changed (there are some white spaces that I hate rn but i’ll tackle that some other time) really loving working on this project can’t stop thinking about ideas!! Next steps Will enhance the functionality of the header (now it is static meaning even if the user is logged in, it will show login/sign up buttons) I’ll add a logout button or smthng. Currently, all the uploaded files don’t appear on the /browse section so i’ll have to deal with that too!"}, {"post_id": 38700, "ts": "2026-08-01T07:01:18Z", "hours": 0.6944, "text": "v(0.0.4-Alpha) Upload Feature - Frontend Updates Completed the frontend part of upload feature Added tags so that navigation is smoother Currently, i have only added india in the future, i’ll other countries too. I am not focusing much on design as well as responsiveness. I will tackle that towards the end. What next? Next, I’ll work on the home page + browse page Browse page will display all the files uploaded by people"}, {"post_id": 38679, "ts": "2026-08-01T05:58:47Z", "hours": 2.3167, "text": "v(0.0.4-Alpha) Upload Feature - Backend Updates Upload feature is working!!! (backend for now) that too smoothly! Used multer middleware to handle PDF uploads. Files up to 25MB are acceptable for now. PDFs are saved on /uploads folder on the server Only logged in logged in users can upload files Built /api/papers with filters like class, subject, exam_name, country, state, year and file_path. What next? Now i’ll work on the frontend part of this feature"}, {"post_id": 38386, "ts": "2026-07-31T18:48:52Z", "hours": 2.6156, "text": "v(0.0.3-Alpha) Layout Design Updates Making layouts is not a one time thing so I made a temporary layout which took a lot of trial and errors Don’t mind the colours/text size or fonts and all as it is still under development Currently it’s working only locally as the project is still in alpha version and also, nothing is responsive for smaller screen sizes What Next? Most probably next I will be working on the Upload feature along with it’s backend"}, {"post_id": 38145, "ts": "2026-07-31T12:00:46Z", "hours": 1.7397, "text": "v(0.0.2) Login and Sign up - Frontend Updates Almost lost the project (accidently deleted the repo Writing the logic for login/sign up for the first was kind of tough hence took more time! It works smoothly now What next? Most probably i’ll work on the landing page and the designing part"}, {"post_id": 38074, "ts": "2026-07-31T08:44:11Z", "hours": 0.8119, "text": "(v0.0.2-Alpha) Login and Sign up - Backend Updates Login and signup functionality completed and is functional I also used bcrypt to encrypt the user’s password What next? I will now work on the frontend part of the website so i will be making the dashboard, login and signup pages. I might have to look for good designs too"}, {"post_id": 38048, "ts": "2026-07-31T07:18:49Z", "hours": 0.6389, "text": "v(0.0.1-Alpha) Initial Setup Made a database on rpi with tables and their schemas Frontend basic setup completed with file structure What next? First I’ll work on the backend and then come to frontend so next few devlogs might be boring for some people :("}]...
|
Title: Solve It by @Shish | Stardance
Devlogs:
v( Title: Solve It by @Shish | Stardance
Devlogs:
v(0.0.1-Alpha) Initial Setup Made a database on rpi with tables and their schemas Frontend basic setup completed with file structure What next? First I’ll work on the backend and then come to frontend so next few devlogs might be boring for some people :(
(v0.0.2-Alpha) Login and Sign up - Backend Updates Login and signup functionality completed and is functional I also used bcrypt to encrypt the user’s password What next? I will now work on the frontend part of the website so i will be making the dashboard, login and signup pages. I might have to look for good designs too
v(0.0.2) Login and Sign up - Frontend Updates Almost lost the project (accidently deleted the repo Writing the logic for login/sign up for the first was kind of tough hence took more time! It works smoothly now What next? Most probably i’ll work on the landing page and the designing part
v(0.0.3-Alpha) Layout Design Updates Making layouts is not a one time thing so I made a temporary layout which took a lot of trial and errors Don’t mind the colours/text size or fonts and all as it is still under development Currently it’s working only locally as the project is still in alpha version and also, nothing is responsive for smaller screen sizes What Next? Most probably next I will be working on the Upload feature along with it’s backend
v(0.0.4-Alpha) Upload Feature - Backend Updates Upload feature is working!!! (backend for now) that too smoothly! Used multer middleware to handle PDF uploads. Files up to 25MB are acceptable for now. PDFs are saved on /uploads folder on the server Only logged in logged in users can upload files Built /api/papers with filters like class, subject, exam_name, country, state, year and file_path. What next? Now i’ll work on the frontend part of this feature
v(0.0.4-Alpha) Upload Feature - Frontend Updates Completed the frontend part of upload feature Added tags so that navigation is smoother Currently, i have only added india in the future, i’ll other countries too. I am not focusing much on design as well as responsiveness. I will tackle that towards the end. What next? Next, I’ll work on the home page + browse page Browse page will display all the files uploaded by people
v(0.0.5) Frontend revamp Updates Revamped the frontend design Added drag and drop file submission feature The site is not yet responsive Log in and sign up pages are also changed Browse and home pages are changed (there are some white spaces that I hate rn but i’ll tackle that some other time) really loving working on this project can’t stop thinking about ideas!! Next steps Will enhance the functionality of the header (now it is static meaning even if the user is logged in, it will show login/sign up buttons) I’ll add a logout button or smthng. Currently, all the uploaded files don’t appear on the /browse section so i’ll have to deal with that too!
v(0.0.6-Alpha) Log out + Showing data from db Update Added log out feature (it was quite easy just had to apply some display conditions to the buttons and remove the user’s token from the localStorage) Added data from the db in the form of cards on /browse. It is not at all good-looking. I’ll work on it once I implement the download feature in it. What next? I’ll be implementing the download files feature I’ll start working on making the website responsive
v(0.0.7-Alpha) Download Feature Updates Added the download feature. you can click on the card to open the PDF file on the browser What next? Next, I’ll work on responsiveness
(v0.0.8-Alpha) Sidebar and Responsivenes Updates Added responsiveness to the login, signup, upload, home pages and header component Made the sidebar functional, you can now filter data based on year, country, state, exam i think currently, on smaller devices, the font size is a lot smaller, if you guys feel the same please give me a review so that I can improve it! What next? Next, I’ll work on enhancing the responsiveness And also, i’ll start designing the card which will contain details of the papers I also need to handle edge cases like not showing upload button to guest users and so many loop holes that are still there in this project.
(v0.1.0-Alpha) Responsiveness + Fixed a loop hole + Showing more details in the card Updates Enhanced responsivess (sidebar, header, browse page for mob iles and large screen devices) Displayed more info like region, year, subject, uploaded by, uploaded at, exam name, etc. to the card Fixed loop hole, earlier, a user could access the browse page, basically entire website without logging in lol. Added a new field to the database in papers table which stores the user’s name instead of just storing the id number of that person What next? I am thinking of adding notifications using react-toastify and sound effects I’ll work on designing the card. I am considering to change the entire design and lean more towards a brutalist design Next update is going to be a major one Where was I since last 12 days? I have been busy with school work and also my mid-terms are commencing from 1st of September so, I couldn’t give more time to thr project. This could also happen in the near future until my exams are completed (11th Sept)
(v.0.1.1-Alpha) New UI + Notifications+ More info about the file Updates Added new design inspired by scribbles and doodles. (Still figuring out how to make scribbled borders) Enhanced responsiveness for new design Displayed more information about the file uploaded by the user such as File size and no. of pages file contains. Fixed a few bugs related to login and logout pages Added notifications (Yet to design it, atp, it’s just a basic design and not synced to the project design) Deleted unwanted files that I had made earlier during setting up the folder structure. What next? Next, I’ll work on adding design to the notification componentk Then, I’ll be adding doodles and stuff to fill up the white space I also wish to add more countries like The USA, Canada, UK, which have competitive exams.
v(0.1.2-Alpha) Scribbly Borders + New countries Updates Added scribbly lines/borders (used AI’s help) Added new countries and their examinations (UK, USA, Australia, China) Added mansory layout so that i don’t have to worry about responsiveness later What next? Next, i’ll work on adding colours to the site and add doodle
v(0.1.3-Alpha) Report bug feature and it’s backend + Enhanced responsiveness across the website + colours Updates Enhanced responsivess across the site Added colours and sketchy borders and colours wherever I could Added new report bug feature along with it’s backend (this one took time as WiFi went off and I couldn’t ssh into my rpi) What next? I’ll be making doodles (YES, i’ll be hand drawing them) I haven’t thought about anything else yet! BUT, I might be making the website public and push it into the beta version, for that, I’ll need to setup a cloudflare connection via my rpi (aghh i’ll look into it once I am fully convinced with the frontend.
v(0.2-Beta) Deployed + Reviews + More Updates Soooooo, the site it live. andithasalotofproblems!!! I made the site live and asked my friends to use it and fill it with notes. many of them complained about bugs so, I fixed some of them and NOW, I need to add a search bar on the site (I completely forgot lol). In these 3 hours, I deployed the website (this time didn’t get counted as I was working on the terminal. But it took around 1 and a half hour). So in 3 hours, I handled bugs and fixed some of them, enhanced responsiveness as some of my friends complained that they couldn’t scroll on the website or smthng. Added more information on the card, Added 2 new columns named description and type (as requested by a friend). Changed the layout of lower part of the card a little bit (made it a little bit clean). Made the upload code a bit efficient by removing repetitive code. What next? Next, I’ll work on making a search bar on the website so it is easy to use and navigate I’ll be taking inputs from friends and working on them I will be making a separate page where the user can see the pdf each separately insite the site Next devlog is going to be CHUNKY!!!
v(0.3.0-Beta) Separate paper view + Searchbar Updates Added a searchbar (finally Now, you can view each paper separately inside the website itself Made very very very small changes in the design of the website Now you can click on the logo to direcly go back to the browse page (Yeah, I know it’s not something genius) What next? I REALLY want to add doodles but I have been delaying it TOO much now! I think I might be working on it (not sure tho) I also need to make a pfp maker, where users can make their own pfp kinda like the one on skribbl.io. Actually this entire design is inspired by skribbl.io I’ll also be adding user settings page and all where they can change theme, fonts and… okay, just font and themes for now.
(0.4.0-Beta) Settings page + 404 handling Updates Handled 404 error (I had to because my WiFi was down several times today. Many of my friends thought that it was my mistake but actually WiFi was down so my rpi couldn’t serve data) Made settings page and displayed user data on it. I have added an easter egg when the site is down, so basically when there’s an 404 err, you can see an easter can which I’ve added to the site. On the settings page, I have Apprearance settings, Account settings, Preference settings and Delete account. None of them are functional yet. Took a lot of time to create a route (/me). As I faced a lot of bugs while doing so. What next? I know i’ve again delayed making doodles, I WILL MAKE THEM istg I’ll also fix the resonsiveness issue on small screen devices I’ll work on making the settings page functional I have 2 days off at school so I am going yo use them very efficiently!!
v(0.4.1-Beta) Update Email address + Errors Updates Added errors and toasts throughout the website Added update email address feature I’ll be keeping next few devlogs small as I will be working on each feature one by one What next? Next, I’ll work on Delete account feature
v(0.4.1-Beta) Delete account Updates Now you can permanently delete your account. Once you delete your account, all the posts from that account will be removed from the website. For this, I made /delete-me route What next? Next, I’ll make a section where users can manage their papers, they can delete their papers if they want After that, I’ll be working on fixing the responsiveness issue on small screen devices
v(0.4.3-Beta) See uploads and delete them Updates Now you can see your uploads in the settings page and delete them if you wish to If you click on the card, it’ll redirect you to a separate page where you can see the paper in detail What next? Next, I’ll work on fixing the responsiveness issue on small screen devices
v(0.4.4-Beta) Session expiry bug fix + responsiveness fixed Updates Fixed the responsiveness issue on small screen devices I also faced another issue, My friends were unable to download papers and it displayed “Error during downloading” So I took help of AI to know what the problem is and it said that It was because their token had expired SOOOOO…. I increased the token expiry limit to 30 days AND if the token is expired, you will be asked to login again. I applied this throughout the website, upload, browse, report and download I’ll also be switching to nest as I don’t fully trust my ISP and also because shipwright’s review policy said so. BUT i’ll do it towards the end once every feature is almost well built. I’ve applied to nest and hope they accept it as soon as possible! What next? Next, I’ll work on Avatar maker like skribbl.io (this is going to be tuffffffffff)
v(0.5.0-Beta) Avatar builder + bug fixes Updates Now you can make your own avatar just like skribbl.io!!!!! It took so much of my time tbh, I had to hand draw every doodle, I wanted to record it on lapse but couldn’t as screen recording wasn’t working on iPad for some reason and also when I screenshared, the screen went black for some reason. I contacted lapse-help on slack but didn’t find any solution so I decided not to let it go Added a new updateavatar component which lets you make your own avatar and update it if you want to!! Did layout fixes on large screen devices as only horizontal scroll was allowed and vertical scroll was disabled (my friend told me, I didn’t even notice it lol) Fixed frontend as well as backend bugs during the making of this avatar feature This devlog is toooooo big ik but i couldn’t find time daily due to school and assignments and all What next? I’ll work on themes, black white and system themes. The basic ones I’ll also work on “Continue as guest” so that shipwrights don’t have to login when they go through the project I’ll most probably end the project for now after these features are implemented as I need to prepare for upcoming examinations and also stardance is coming to an end :(
v(0.6.0-Beta) Password change Updates I have decided not to include themes as I can no longer work on this project due to school work academics I just want to finish this project as soon as I can. Next devlog might be the last devlog of this project where I’ll add “Continue as guest” feature for shipwrights SO, in this update, I’ve just basically copy pasted the change email logic and made a change password feature. I literally copy pasted it and then modified it for password hence it took less time What next? I’ll be summing up this project by adding continue as guest feature
v (0.7.0-Beta) Continue as Guest + README + more Updates Added hand drawn images to the home page reducing the white space that was looking ugly earlier Added continue as guest feature, if a user continues as guest, they won’t be able to delete their account or change their email address as well as password Wrote the README file I still do not consider this project as completely done, I will be adding more features to it once I am done with my academics What next? I’ll ship it most probably
Ships:
As students, we all require notes and questions when we are practicing for any competitive exams, whenever I wanted the same, I had to ask my friends or I had to buy PYQs online. So to tackle that, I made a website where you can easily post notes and PYQs FOR FREE without even signing up. The website is called SolveIt. There are many things that can be done on the website like uploading PYQs or Notes or any other study related material for a specific competitive examination in a PDF format. If the exam is state specific, you can select the state too. Currently it is only available for India, USA, China, United Kingdom and Australia. It also includes many exams like Gaokao, NEET, JEE, SAT, ACT, QCE, etc. While uploading you can specify your country, state, examination name, year, class/grade and subject. In the settings page, you can make your own avatar (it is inspired by skribbl.io) and yes, the scribbles are hand drawn. You can also delete your account if you wish to, and many other things like changing the password, email and deleting previously uploaded papers. You can navigate easily on the browse page by using the searchbar as well as the filters. Filters will only show those options which are available. You can click on a card and view the paper inside the site itself if you don’t wish to download it. Moreover, you can see more details like uploaded by, uploaded on, length and size of the document and much more. The most challenging part of this project was the backend as always. Routes didn’t work initially when I started off, I couldn’t figure out a way to make scribbled borders so I took help of AI for that. MOST ANNOYING part was the avatar builder, I had to make hand drawn scribbles and convert it into svg paths and then modify those paths according to the container. I also took help of AI to encrypt the passwords of the user. I am very proud of the fact that I have self hosted this website, with the raspberry pi 5 that I received from Hackclub this year. I used Cloudflared private tunnel. Entire backend and database is on RPI. I really wanted to add more things to the project but due to academics and school work, I have to ship it now or else I won’t get time for my upcoming examinations. Before you test it, I would like to make a request that if you face any problem, please report it by going to Report a Bug page so that I come to know about it and can fix it as soon as possible. For more details about the project and if you want to know about it in detail, please read the README file....
|
1793148708.7590725
|
1793235108.7590725
|
|
10691
|
nero ai by @deepm33 | Stardance
|
deepm33
|
1
|
30.0
|
304
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-17T18:56:46Z", "hours": 30.0, "multiplier": 12.69, "payout": 304, "blessing": "neutral", "text": "Nero Ai is like my own AI that i built from scratch with nextjs. It’s got 7 different brains that automatically figure out what you need — like coding, search, creative stuff, etc. there’s even a waifu mode lol where the AI talks like an anime girl. it can write code, do voice, search the web, and remembers stuff about you. basically it’s like having your own personal AI but cooler. The voice part and the ui was the most challenging and nero is a lil shy so she takes 5 to 10 sec to reply by voice (●’◡’●)", "repo": "https://github.com/DeepMane33/nero-ai", "demo": "https://nero-os.vercel.app/"}]...
|
[{"post_id": 30201, "ts": "202 [{"post_id": 30201, "ts": "2026-07-17T16:20:25Z", "hours": 3.0, "text": "I think i have finished working on my personal ai agent AKA NERO, so i made some changes in the voice mode so lemme talk about this because this thing genuinely took forever to build. First theres push-to-talk. u hold the mic button, talk, release, nero processes it. simple right? but then theres continuous mode and in continuous mode is where the chaos begins. When u flip that toggle nero spins up a SECOND speech recognizer in the background that is constantly listening for “hey nero”. like constantly. and when it hears it, it kills that background recognizer and spins up the MAIN recognizer to actually capture what ure saying. TWO recognizers running at the same time. One listening for the trigger, one ready to capture the actual message. the moment the wake word hits, background one dies, main one takes over. About the STT, so originally this thing was using the Web Speech API and bruhhhh the Web Speech API is just unreliable as hell. it only works in Chrome, needs HTTPS or localhost, and half the time it just doesnt fire on result at all. Like u speak, it says “listening…”, then nothing happens. No transcription, no response, nothing. I tried fixing it multiple times — started recognition immediately instead of waiting for mic permission, added error handling, changed the flow… still broken. the Web Speech API is just built different (bad different), so i had to rip it out of nero and then replaced it with MediaRecorder + Gemini for transcription. Now when u tap the orb it records audio using the MediaRecorder API, sends the audio blob to Gemini, and Gemini transcribes it. And tbh its way more reliable because it doesnt depend on browser-specific speech engines. It just works better and the Gemini model used for transcription is gemini-2.5-flash — the same one used for chats so it understands context. And heres the thing — after the addition of the STT the whole sound system changed. LIke before nero’s voice was legit too boring but now she is even able to speak like a waifu. She says hehehe and chuckles and speaks a lot better than before. Also there was a lot of problem for the api keys, cause when anyone was trying to put their api in Nero it was getting stored but nero was unable to run on that api, due to which no one could use that and i also cannot put my gemini api cause it would get rate limit too quick if multiple people used it. So in settings there’s an “Add API Key” button that expands into a form and in that u give it a name (like “My Gemini Key”)and then paste your API key, hit add. Then key get VALIDATED before its stored — nero actually makes a test request to the API to confirm the key works. If the key is invalid it tells u immediately, doesn’t just silently store garbage🥀🥀. Honestly the most impressive thing is that this runs on FREE APIs. The whole point is accessibility like gemini alone gets u pretty far for free , openrouter has free models and groq too has a free tier. Cerebras has a free tier and if u DO have paid keys then insert them in nero so she would use them instead. Its the best of both worlds.."}, {"post_id": 28937, "ts": "2026-07-15T15:33:39Z", "hours": 10.0, "text": "I have finally redesigned the nero ai into looking an more stunning and better look. First it was too plain so i improved it and also improved the cursor as well. Added a new sidebar navigation, glassmorphism everywhere, aurora backgrounds, the whole nine yards,LOL. It actually looks like an operating system now not just a chatbot with a fancy name. dark theme has been set as the default for the whole ai. For the Framework & Build i used, Next.js 16.2.7 with Turbopack for blazing fast dev server and hot reload React 19 with hooks (useState, useEffect, useCallback, lazy, Suspense) TypeScript throughout For Styling up nero i used, Tailwind CSS for utility-first styling CSS custom properties (variables) for the theme system Inline styles for dynamic theming (accent colors, glow effects, glassmorphism) Glassmorphism via backdrop-filter: blur() + semi-transparent backgrounds For the UI Components i used Custom AICore orb with SVG animations and mood-based coloring.Also the Notification Center with badge counts nero also has OnboardingFlow for the first-time users i thought that would be helpful. It also has a coverstion side bar with search and histrory found inside it only. This was a big UX change for me and nero 🥀🥀. And now instead of a separate “API Keys” section buried in settings, nero now lets u pick a model and enter its API key right there. Click a model → it expands → paste ur key → save. The green dot shows up when a key is configured and then stores everything in local storage so keys stay on ur machine never sent anywhere except to the provider u chose and it supports Gemini, GPT, and more ai’s. The home screen in nero now shows all of these, Greeting based on time of day Animated AI core orb with mood indicator Quick actions (chat, research, memory, knowledge) Recent conversations pulled from the actual database System status panel showing nero core health, cause its health 🥀😢 Mostly did the redesign and removed some of the not working sections from Nero and did debugging.. (●’◡’●)"}, {"post_id": 21725, "ts": "2026-07-03T20:18:10Z", "hours": 15.0, "text": "ok so basically i got bored one day and thought “yupp i need my own ai agent” and then i actually did it?? like nero is this whole AI agent thing i built from scratch that actually THINKS. Not like “oh i’m a chatbot i repeat what you say” no no no. nero has like… actual memory and personality. It literally learns from talking to you. It’s unhinged and i love it. So nero has two personalities. you got the normal one which is just a smart professional AI assistant which is quiet boring but useful. THEN there’s the waifu mode. Here’s how it works: there’s a whole personality system in personalities.ts with two modes — normal and waifu. the normal one is straightforward, just a good AI. but the waifu personality? it’s an anime-inspired companion with kaomoji (like (✿◠‿◠) and (◕‿◕)), uses japanese words, gets emotionally attached to you, and has this whole kawaii vibe going on and on. The BEST part is you don’t even need to go to settings to switch. you can just type something like “act like a waifu” or “be normal again” in the chat and nero detects it automatically and there’s literally a function called detectPersonalitySwitch() that scans your message for phrases like “waifu mode”, “be cute”, “act normal” etc and switches on the fly. So you’re just chatting and suddenly nero goes from professional to kawai and it’s hilarious every time.It’s not just a gimmick either — the entire system prompt changes,the waifu gets its own set of rules about how to talk, how to express emotions, how to react, two completely different AI personalities. internet search (it’s… a work in progress) ok so nero HAS web search code which is like actual multi-source search — DuckDuckGo, Wikipedia, Google Custom Search, News API. the needsWebSearch() function detects when you’re asking about current events and auto-triggers a search and the results get fed into the AI’s context so it can answer with real-time info. but here’s the reality — right now it mostly just opens links in new tabs. the ResearchMode shows you a list of results and you click them. The auto-search in chat is supposed to inject results into the conversation so the AI summarizes them for you, but it doesn’t always work as smoothly as i’d like and yeah sometimes the AI just outputs links instead of actually reading and summarizing the search results,sometimes needsWebSearch() doesn’t trigger when it should. It’s like having a search engine that works but doesn’t know how to talk about what it found yet. the plumbing is there, the execution needs polish and still a lot of work to make it feel like a real research assistant instead of a link generator. text-to-speech edge-tts is installed and functional,nero can read responses out loud using Microsoft Edge neural voices.I would like to add new voices, adjust speed and pitch before i ship this project. There are still many places which need a lot of improvements and work, lets see how much further i can upgrade this ai!!!"}]...
|
Title: nero ai by @deepm33 | Stardance
Devlogs:
o Title: nero ai by @deepm33 | Stardance
Devlogs:
ok so basically i got bored one day and thought “yupp i need my own ai agent” and then i actually did it?? like nero is this whole AI agent thing i built from scratch that actually THINKS. Not like “oh i’m a chatbot i repeat what you say” no no no. nero has like… actual memory and personality. It literally learns from talking to you. It’s unhinged and i love it. So nero has two personalities. you got the normal one which is just a smart professional AI assistant which is quiet boring but useful. THEN there’s the waifu mode. Here’s how it works: there’s a whole personality system in personalities.ts with two modes — normal and waifu. the normal one is straightforward, just a good AI. but the waifu personality? it’s an anime-inspired companion with kaomoji (like (✿◠‿◠) and (◕‿◕)), uses japanese words, gets emotionally attached to you, and has this whole kawaii vibe going on and on. The BEST part is you don’t even need to go to settings to switch. you can just type something like “act like a waifu” or “be normal again” in the chat and nero detects it automatically and there’s literally a function called detectPersonalitySwitch() that scans your message for phrases like “waifu mode”, “be cute”, “act normal” etc and switches on the fly. So you’re just chatting and suddenly nero goes from professional to kawai and it’s hilarious every time.It’s not just a gimmick either — the entire system prompt changes,the waifu gets its own set of rules about how to talk, how to express emotions, how to react, two completely different AI personalities. internet search (it’s… a work in progress) ok so nero HAS web search code which is like actual multi-source search — DuckDuckGo, Wikipedia, Google Custom Search, News API. the needsWebSearch() function detects when you’re asking about current events and auto-triggers a search and the results get fed into the AI’s context so it can answer with real-time info. but here’s the reality — right now it mostly just opens links in new tabs. the ResearchMode shows you a list of results and you click them. The auto-search in chat is supposed to inject results into the conversation so the AI summarizes them for you, but it doesn’t always work as smoothly as i’d like and yeah sometimes the AI just outputs links instead of actually reading and summarizing the search results,sometimes needsWebSearch() doesn’t trigger when it should. It’s like having a search engine that works but doesn’t know how to talk about what it found yet. the plumbing is there, the execution needs polish and still a lot of work to make it feel like a real research assistant instead of a link generator. text-to-speech edge-tts is installed and functional,nero can read responses out loud using Microsoft Edge neural voices.I would like to add new voices, adjust speed and pitch before i ship this project. There are still many places which need a lot of improvements and work, lets see how much further i can upgrade this ai!!!
I have finally redesigned the nero ai into looking an more stunning and better look. First it was too plain so i improved it and also improved the cursor as well. Added a new sidebar navigation, glassmorphism everywhere, aurora backgrounds, the whole nine yards,LOL. It actually looks like an operating system now not just a chatbot with a fancy name. dark theme has been set as the default for the whole ai. For the Framework & Build i used, Next.js 16.2.7 with Turbopack for blazing fast dev server and hot reload React 19 with hooks (useState, useEffect, useCallback, lazy, Suspense) TypeScript throughout For Styling up nero i used, Tailwind CSS for utility-first styling CSS custom properties (variables) for the theme system Inline styles for dynamic theming (accent colors, glow effects, glassmorphism) Glassmorphism via backdrop-filter: blur() + semi-transparent backgrounds For the UI Components i used Custom AICore orb with SVG animations and mood-based coloring.Also the Notification Center with badge counts nero also has OnboardingFlow for the first-time users i thought that would be helpful. It also has a coverstion side bar with search and histrory found inside it only. This was a big UX change for me and nero 🥀🥀. And now instead of a separate “API Keys” section buried in settings, nero now lets u pick a model and enter its API key right there. Click a model → it expands → paste ur key → save. The green dot shows up when a key is configured and then stores everything in local storage so keys stay on ur machine never sent anywhere except to the provider u chose and it supports Gemini, GPT, and more ai’s. The home screen in nero now shows all of these, Greeting based on time of day Animated AI core orb with mood indicator Quick actions (chat, research, memory, knowledge) Recent conversations pulled from the actual database System status panel showing nero core health, cause its health 🥀😢 Mostly did the redesign and removed some of the not working sections from Nero and did debugging.. (●’◡’●)
I think i have finished working on my personal ai agent AKA NERO, so i made some changes in the voice mode so lemme talk about this because this thing genuinely took forever to build. First theres push-to-talk. u hold the mic button, talk, release, nero processes it. simple right? but then theres continuous mode and in continuous mode is where the chaos begins. When u flip that toggle nero spins up a SECOND speech recognizer in the background that is constantly listening for “hey nero”. like constantly. and when it hears it, it kills that background recognizer and spins up the MAIN recognizer to actually capture what ure saying. TWO recognizers running at the same time. One listening for the trigger, one ready to capture the actual message. the moment the wake word hits, background one dies, main one takes over. About the STT, so originally this thing was using the Web Speech API and bruhhhh the Web Speech API is just unreliable as hell. it only works in Chrome, needs HTTPS or localhost, and half the time it just doesnt fire on result at all. Like u speak, it says “listening…”, then nothing happens. No transcription, no response, nothing. I tried fixing it multiple times — started recognition immediately instead of waiting for mic permission, added error handling, changed the flow… still broken. the Web Speech API is just built different (bad different), so i had to rip it out of nero and then replaced it with MediaRecorder + Gemini for transcription. Now when u tap the orb it records audio using the MediaRecorder API, sends the audio blob to Gemini, and Gemini transcribes it. And tbh its way more reliable because it doesnt depend on browser-specific speech engines. It just works better and the Gemini model used for transcription is gemini-2.5-flash — the same one used for chats so it understands context. And heres the thing — after the addition of the STT the whole sound system changed. LIke before nero’s voice was legit too boring but now she is even able to speak like a waifu. She says hehehe and chuckles and speaks a lot better than before. Also there was a lot of problem for the api keys, cause when anyone was trying to put their api in Nero it was getting stored but nero was unable to run on that api, due to which no one could use that and i also cannot put my gemini api cause it would get rate limit too quick if multiple people used it. So in settings there’s an “Add API Key” button that expands into a form and in that u give it a name (like “My Gemini Key”)and then paste your API key, hit add. Then key get VALIDATED before its stored — nero actually makes a test request to the API to confirm the key works. If the key is invalid it tells u immediately, doesn’t just silently store garbage🥀🥀. Honestly the most impressive thing is that this runs on FREE APIs. The whole point is accessibility like gemini alone gets u pretty far for free , openrouter has free models and groq too has a free tier. Cerebras has a free tier and if u DO have paid keys then insert them in nero so she would use them instead. Its the best of both worlds..
Ships:
Nero Ai is like my own AI that i built from scratch with nextjs. It’s got 7 different brains that automatically figure out what you need — like coding, search, creative stuff, etc. there’s even a waifu mode lol where the AI talks like an anime girl. it can write code, do voice, search the web, and remembers stuff about you. basically it’s like having your own personal AI but cooler. The voice part and the ui was the most challenging and nero is a lil shy so she takes 5 to 10 sec to reply by voice (●’◡’●)...
|
1792882074.5138695
|
1793746074.5138695
|
|
10730
|
Studbudie by @teteos | Stardance
|
teteos
|
1
|
5.28
|
55
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-07T10:07:55Z", "hours": 5.0, "multiplier": 11.74, "payout": 55, "blessing": "neutral", "text": "Built Study Buddy, a Discord study bot designed to help students stay productive and focused. I added 21 commands including Pomodoro timers, motivational quotes, study tips, brain challenges, breathing exercises, and exam preparation tools. I’ve used railway to make it be online 24/7 I’m happpyyyyyyy that the bot became more than a simple command bot — it feels like an actual study companion. Anyone testing it can use “!help” to explore all commands.", "repo": "https://github.com/swyaeta/studbudie", "demo": "https://discord.gg/QtEcnMrW"}]...
|
[{"post_id": 5447, "ts": "2026 [{"post_id": 5447, "ts": "2026-06-09T07:20:11Z", "hours": 0.2775, "text": "#devlog 2 After receiving feedback from the reviewer, I have made required changes and created a public test server where anyone can try the bot live and added a permanent bot invite link to the README and added the test server link to the README The bot is live 24/7 on Railway. Anyone can now test it by joining the test server or adding it directly to their own server using the invite link in the README."}, {"post_id": 4116, "ts": "2026-06-07T09:45:48Z", "hours": 4.6769, "text": "Devlog 1 — Heyyyy. I’m sweta .Today, I’ve built a discord bot and it’s called studbudie. Basically, the whole point of this is to be a study companion that lives in your discord server. The idea came from the fact that during a study session you’re constantly switching context. you need a timer, you open a tab. you need motivation, you scroll through pinterest or insta. you need to remember to take a break, you forget entirely and return to study hours later. So, I wanted something that just lives in our server Setup: Wrote all the code in Visual Studio Code — in JavaScript, running on Node.js, with Discord.js v14 handling everything on the Discord side. dotenv to keep the token out of the repo, .gitignore set up early so nothing sensitive accidentally made it to github. the actual coding was fine. what took forever was just getting the bot online for the first time. there’s this whole process — create the application on the discord developer portal, generate the token, figure out the permissions, run it and just sit there hoping the terminal doesn’t throw an error. it took a few tries. but when it finally connected and I typed !ping and it actually responded — that was a good moment and again i had to make it work 24/7 so i used railway and officallyyy made it a working bot and i have submitted it in top.gg so others (check it out) can use it. To find it: I have pushed it in github repo: github.com/swyaeta/studbudie with an MIT license so anyone can use or build on it. This is where most of the day went. ended up with 21 commands total. here’s the breakdown: Timers — !shorttimer — 10 min, for quick focused bursts when you don’t have much time !timer — 25 min, the classic pomodoro !longtimer — 50 min, for when you’re properly in flow and don’t want to break early !extralongimer — 90 min, deep work, the serious one Motivation — !motivation — random motivational quote to push through when you’re dragging !quote — inspirational quotes from people who actually did things Knowledge and tips — !tip — random study tip, stuff that’s actually useful !fact — random science fact, good for a brain break without fully zoning out Mental reset — !breathe — walks you through a breathing exercise. underrated how much this helps mid session !stress — stress relief tips for when things are getting to you Session structure — !focus — a checklist to get properly into focus mode before starting !break — reminder of what a real break looks like (not just switching to youtube) !morning — a full morning study routine to start the day right !night — wind down routine for ending a study session properly Exam specific — !exam — exam prep tips, what to actually do in the days before other — !challenge — a small brain challenge, keeps things interesting !celebrate — for when you finish something, because that matters with this u can study without leaving discord!!! !hello, !ping, !help, !introduction, !about — the standard stuff every bot needs and thats all!! This was quite funnnn!!"}]...
|
Title: Studbudie by @teteos | Stardance
Devlogs:
Title: Studbudie by @teteos | Stardance
Devlogs:
Devlog 1 — Heyyyy. I’m sweta .Today, I’ve built a discord bot and it’s called studbudie. Basically, the whole point of this is to be a study companion that lives in your discord server. The idea came from the fact that during a study session you’re constantly switching context. you need a timer, you open a tab. you need motivation, you scroll through pinterest or insta. you need to remember to take a break, you forget entirely and return to study hours later. So, I wanted something that just lives in our server Setup: Wrote all the code in Visual Studio Code — in JavaScript, running on Node.js, with Discord.js v14 handling everything on the Discord side. dotenv to keep the token out of the repo, .gitignore set up early so nothing sensitive accidentally made it to github. the actual coding was fine. what took forever was just getting the bot online for the first time. there’s this whole process — create the application on the discord developer portal, generate the token, figure out the permissions, run it and just sit there hoping the terminal doesn’t throw an error. it took a few tries. but when it finally connected and I typed !ping and it actually responded — that was a good moment and again i had to make it work 24/7 so i used railway and officallyyy made it a working bot and i have submitted it in top.gg so others (check it out) can use it. To find it: I have pushed it in github repo: github.com/swyaeta/studbudie with an MIT license so anyone can use or build on it. This is where most of the day went. ended up with 21 commands total. here’s the breakdown: Timers — !shorttimer — 10 min, for quick focused bursts when you don’t have much time !timer — 25 min, the classic pomodoro !longtimer — 50 min, for when you’re properly in flow and don’t want to break early !extralongimer — 90 min, deep work, the serious one Motivation — !motivation — random motivational quote to push through when you’re dragging !quote — inspirational quotes from people who actually did things Knowledge and tips — !tip — random study tip, stuff that’s actually useful !fact — random science fact, good for a brain break without fully zoning out Mental reset — !breathe — walks you through a breathing exercise. underrated how much this helps mid session !stress — stress relief tips for when things are getting to you Session structure — !focus — a checklist to get properly into focus mode before starting !break — reminder of what a real break looks like (not just switching to youtube) !morning — a full morning study routine to start the day right !night — wind down routine for ending a study session properly Exam specific — !exam — exam prep tips, what to actually do in the days before other — !challenge — a small brain challenge, keeps things interesting !celebrate — for when you finish something, because that matters with this u can study without leaving discord!!! !hello, !ping, !help, !introduction, !about — the standard stuff every bot needs and thats all!! This was quite funnnn!!
#devlog 2 After receiving feedback from the reviewer, I have made required changes and created a public test server where anyone can try the bot live and added a permanent bot invite link to the README and added the test server link to the README The bot is live 24/7 on Railway. Anyone can now test it by joining the test server or adding it directly to their own server using the invite link in the README.
Ships:
Built Study Buddy, a Discord study bot designed to help students stay productive and focused. I added 21 commands including Pomodoro timers, motivational quotes, study tips, brain challenges, breathing exercises, and exam preparation tools. I’ve used railway to make it be online 24/7 I’m happpyyyyyyy that the bot became more than a simple command bot — it feels like an actual study companion. Anyone testing it can use “!help” to explore all commands....
|
1792878708.4488602
|
1793742708.4488602
|
|
10735
|
Surfing Wing by @T0NY | Stardance
|
T0NY
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-26T11:38:19Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a gilder soaring prediction software using Herbie weather data model for Python. This uses vertical wind data to predict the best path for a glider.", "repo": "https://github.com/Ts1BR/SurfingWing", "demo": "https://github.com/Ts1BR/SurfingWing/blob/main/README.md"}]...
|
[{"post_id": 35131, "ts": "202 [{"post_id": 35131, "ts": "2026-07-26T11:36:20Z", "hours": 0.3294, "text": "Working on the visualization in the html files"}, {"post_id": 22043, "ts": "2026-07-04T09:21:26Z", "hours": 0.4589, "text": "Adding the coordinates to a map for visualization of the flight path"}, {"post_id": 20599, "ts": "2026-07-02T07:09:33Z", "hours": 1.1742, "text": "Updating code to work with HRRR model to get higher resolution data, and more usable wind data for the glider."}, {"post_id": 19047, "ts": "2026-06-30T07:06:11Z", "hours": 0.3811, "text": "Using the surrounding wind data to find the coordinate with the highest vertical wind velocity"}]...
|
Title: Surfing Wing by @T0NY | Stardance
Devlogs: Title: Surfing Wing by @T0NY | Stardance
Devlogs:
Using the surrounding wind data to find the coordinate with the highest vertical wind velocity
Updating code to work with HRRR model to get higher resolution data, and more usable wind data for the glider.
Adding the coordinates to a map for visualization of the flight path
Working on the visualization in the html files
Ships:
I made a gilder soaring prediction software using Herbie weather data model for Python. This uses vertical wind data to predict the best path for a glider....
|
1793116262.3718822
|
1793202662.3718822
|
|
10740
|
Calculator by @Lake | Stardance
|
Lake
|
1
|
22.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-13T22:33:53Z", "hours": 22.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a calculator from scratch, no tokenize, no new things, I wanted to see with my knowledge how far I could push my limits to make something. Parsing was difficult but it taught me how to think and how to visual info and how it’s taken in from a computer’s point of view. Every part of this was fun, it may have taken me longer to code it because Im not that great at coding but I will push my self and outwork my code to learn, that’s why I love coding, there’s always something new.", "repo": "https://github.com/acetaunter/Stardance_Calculator_Project", "demo": "https://drive.google.com/file/d/1ZFaGVxiuGqwNTBecUVsuKcYSkYpYYIUr/view?usp=sharing"}]...
|
[{"post_id": 27869, "ts": "202 [{"post_id": 27869, "ts": "2026-07-13T19:30:58Z", "hours": 12.1381, "text": "fixed decimal operations"}, {"post_id": 6969, "ts": "2026-06-11T18:06:30Z", "hours": 10.2928, "text": "DevLog #1 Working on calculator backend Spent most time on making sure that my loops could actually handle what the Ui input was taking, doesn’t work just yet though, I’m finishing up the parts to remove the evaluated parentheses using parsing logic in java as well as hoping to then make the Ui a bit cleaner with javafx."}]...
|
Title: Calculator by @Lake | Stardance
Devlogs:
D Title: Calculator by @Lake | Stardance
Devlogs:
DevLog #1 Working on calculator backend Spent most time on making sure that my loops could actually handle what the Ui input was taking, doesn’t work just yet though, I’m finishing up the parts to remove the evaluated parentheses using parsing logic in java as well as hoping to then make the Ui a bit cleaner with javafx.
fixed decimal operations
Ships:
I made a calculator from scratch, no tokenize, no new things, I wanted to see with my knowledge how far I could push my limits to make something. Parsing was difficult but it taught me how to think and how to visual info and how it’s taken in from a computer’s point of view. Every part of this was fun, it may have taken me longer to code it because Im not that great at coding but I will push my self and outwork my code to learn, that’s why I love coding, there’s always something new....
|
1793253334.839536
|
1793339734.839536
|
|
10759
|
My Mini Pad by @florian | Stardance
|
florian
|
1
|
0.25
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-08T16:36:40Z", "hours": 0.0, "multiplier": 5.0, "payout": 2, "blessing": "neutral", "text": "This is my first time making something like this completely on my own. I gave it my best shot and followed the tutorial. I even added an extra key to the design. I hope everything looks good, but if not, I’d love to get some constructive criticism and a few tips on how to improve. The link pinned by the tutorial did not work so they said I should ship the project. That is why I dont have many photos.", "repo": "https://github.com/KingFlol/King_Flols_Macro_Board", "demo": ""}]...
|
[{"post_id": 5585, "ts": "2026 [{"post_id": 5585, "ts": "2026-06-09T13:11:09Z", "hours": 0.2539, "text": "I now have an Example link where you could download all the assets to recreate the project"}, {"post_id": 4959, "ts": "2026-06-08T16:26:29Z", "hours": 0.3136, "text": "I have now finished the tutorial and looking forward to continue the project"}]...
|
Title: My Mini Pad by @florian | Stardance
Devlog Title: My Mini Pad by @florian | Stardance
Devlogs:
I have now finished the tutorial and looking forward to continue the project
I now have an Example link where you could download all the assets to recreate the project
Ships:
This is my first time making something like this completely on my own. I gave it my best shot and followed the tutorial. I even added an extra key to the design. I hope everything looks good, but if not, I’d love to get some constructive criticism and a few tips on how to improve. The link pinned by the tutorial did not work so they said I should ship the project. That is why I dont have many photos....
|
1792875206.8227158
|
1793739206.8227158
|
|
10873
|
GALAXY SIMULATION by @BIG_JO | Stardance
|
BIG_JO
|
1
|
20.09
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T17:27:32Z", "hours": 17.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made Galaxy Simulation, basically a small physics simulation where you can mess around with planets, gravity, orbits and collisions. You can add planets, change their properties, click on them to see their information and experiment with how gravity affects everything. The hardest part was definitely getting the physics to actually work properly. At first I was just trying to make the planets orbit the sun, but once I started adding gravity and collisions things got way more complicated. I had quite a few bugs where planets would do completely unexpected things, and I also had to work on performance because having too many objects could make it lag. I’m most proud of how much the project developed over time. The first version was really basic compared to what it is now, so seeing the progression through all my devlogs is probably my favourite part. To test it, just add some planets and experiment with their positions, sizes and gravity. Try making normal orbits, unstable orbits and just seeing what happens when planets get too close to each other. There isn’t really one “correct” way to use it — half the fun is breaking the simulation and seeing what happens.", "repo": "https://github.com/joseph777-e/GALAXY-SIMULATION", "demo": "https://galaxy-simulation.vercel.app/"}]...
|
[{"post_id": 77232, "ts": "202 [{"post_id": 77232, "ts": "2026-10-06T06:03:54Z", "hours": 1.1569, "text": "so today i spent most of my time tryin to rewrite all the whle css file and i got to go to scool so i will continue later"}, {"post_id": 67945, "ts": "2026-09-14T08:28:13Z", "hours": 0.7372, "text": "today i was just rewriting some parts of my java script code cause apparently it got more than 30 percent ai usage but like how should u expect me to write a whole physics movement in javascript like bro i genuinly suck at it"}, {"post_id": 62305, "ts": "2026-09-05T16:37:40Z", "hours": 1.1922, "text": "jus realised there was something wrong with the roche limit and had to be fixed i think the comets were very close to the sun so i made them go a bitt further… and i also truly despise javascript :)"}, {"post_id": 59055, "ts": "2026-08-31T17:23:40Z", "hours": 2.1892, "text": "so am finally done with the polishing of this website its not too complicated actually ts simple but can help visually represent gravity and how it work in space with diferrent bodies and like it might not be too much accurate but it still work and is not too laggy as some physics websites tend to be it work on literally any device if it laggs tho it might be becaus too many bodies are show"}, {"post_id": 50241, "ts": "2026-08-19T11:58:25Z", "hours": 1.0178, "text": "so i was checking for buggs and trying to add some features but i think the project is just done and neeeds nothing more or less and its been time i end it so i can concentrate on other projects that i want to finalise too."}, {"post_id": 40222, "ts": "2026-08-03T17:01:04Z", "hours": 1.5722, "text": "so its been long since i made a devlog today i tried to fix the old solar system problem by making them more spaced out and it kinda worked a bitt am still trying to get how to make it really work illbe working onn it with the help of some AI cause am genuinly lost rn"}, {"post_id": 20050, "ts": "2026-07-01T15:43:01Z", "hours": 2.0194, "text": "here is some updates for today i am trying to make the planets orbit the sun correctly in solar system mode without eventually crashing into the sun too quick. and i didnt post a devlog kinda for too long i actually kinda lazy to post them and i always forget about them"}, {"post_id": 9765, "ts": "2026-06-16T06:20:01Z", "hours": 3.2556, "text": "so i am currently working on the bodies limit creation and so far, it’s not going well…. everything lags when the body limit hits and i really don’t know why i think this day will be long but at least am done with the exams so i can spend as much time as i need…btw if u see where the problem is dont hesitate to comment it 😭"}, {"post_id": 8095, "ts": "2026-06-13T14:50:40Z", "hours": 2.9064, "text": "so it been a while since i posted a devlog there was a bug in my java code that was making everything to not work or display but i was finally able to get it and fix it and am also in my exam period so i cant stay on the project for too long unfortunately and yeah. i added some new features too a spawn body limit becuse the more bodies are made the more laggy its and it might even make the animation to stop depends on your computer like mine it was really lagging alot and i had to add that features anyways i hope ill soon be able to finish it and launch it …btw the body limit doesnt work too well just yet i just wanted to make a devlog and infrom of my progress."}, {"post_id": 4835, "ts": "2026-06-08T11:03:50Z", "hours": 2.7894, "text": "you can now click on the bodies and displays their information and can chnage their gravity individually"}, {"post_id": 4158, "ts": "2026-06-07T11:25:30Z", "hours": 1.2694, "text": "i just started, it’s basically a space simulation u can add planets and make black holes with 2stars colliding with gravity effects and stuff"}]...
|
Title: GALAXY SIMULATION by @BIG_JO | Stardance
D Title: GALAXY SIMULATION by @BIG_JO | Stardance
Devlogs:
i just started, it’s basically a space simulation u can add planets and make black holes with 2stars colliding with gravity effects and stuff
you can now click on the bodies and displays their information and can chnage their gravity individually
so it been a while since i posted a devlog there was a bug in my java code that was making everything to not work or display but i was finally able to get it and fix it and am also in my exam period so i cant stay on the project for too long unfortunately and yeah. i added some new features too a spawn body limit becuse the more bodies are made the more laggy its and it might even make the animation to stop depends on your computer like mine it was really lagging alot and i had to add that features anyways i hope ill soon be able to finish it and launch it …btw the body limit doesnt work too well just yet i just wanted to make a devlog and infrom of my progress.
so i am currently working on the bodies limit creation and so far, it’s not going well…. everything lags when the body limit hits and i really don’t know why i think this day will be long but at least am done with the exams so i can spend as much time as i need…btw if u see where the problem is dont hesitate to comment it 😭
here is some updates for today i am trying to make the planets orbit the sun correctly in solar system mode without eventually crashing into the sun too quick. and i didnt post a devlog kinda for too long i actually kinda lazy to post them and i always forget about them
so its been long since i made a devlog today i tried to fix the old solar system problem by making them more spaced out and it kinda worked a bitt am still trying to get how to make it really work illbe working onn it with the help of some AI cause am genuinly lost rn
so i was checking for buggs and trying to add some features but i think the project is just done and neeeds nothing more or less and its been time i end it so i can concentrate on other projects that i want to finalise too.
so am finally done with the polishing of this website its not too complicated actually ts simple but can help visually represent gravity and how it work in space with diferrent bodies and like it might not be too much accurate but it still work and is not too laggy as some physics websites tend to be it work on literally any device if it laggs tho it might be becaus too many bodies are show
jus realised there was something wrong with the roche limit and had to be fixed i think the comets were very close to the sun so i made them go a bitt further… and i also truly despise javascript :)
today i was just rewriting some parts of my java script code cause apparently it got more than 30 percent ai usage but like how should u expect me to write a whole physics movement in javascript like bro i genuinly suck at it
so today i spent most of my time tryin to rewrite all the whle css file and i got to go to scool so i will continue later
Ships:
I made Galaxy Simulation, basically a small physics simulation where you can mess around with planets, gravity, orbits and collisions. You can add planets, change their properties, click on them to see their information and experiment with how gravity affects everything. The hardest part was definitely getting the physics to actually work properly. At first I was just trying to make the planets orbit the sun, but once I started adding gravity and collisions things got way more complicated. I had quite a few bugs where planets would do completely unexpected things, and I also had to work on performance because having too many objects could make it lag. I’m most proud of how much the project developed over time. The first version was really basic compared to what it is now, so seeing the progression through all my devlogs is probably my favourite part. To test it, just add some planets and experiment with their positions, sizes and gravity. Try making normal orbits, unstable orbits and just seeing what happens when planets get too close to each other. There isn’t really one “correct” way to use it — half the fun is breaking the simulation and seeing what happens....
|
1793123720.6755798
|
1793210120.6755798
|
|
10881
|
wheel stand by @rizvifalak216 | Stardance
|
rizvifalak216
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-19T18:17:54Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "ohkayyy so i have made a wheel stand holder which will look cool and yeah it was my first time 3d modeling something and using fusion it was so tough and also having so much academic right now it was tough FOR ME ofcourse", "repo": "https://github.com/falakrizvii/stardance-project-", "demo": ""}]...
|
[{"post_id": 31336, "ts": "202 [{"post_id": 31336, "ts": "2026-07-19T17:20:07Z", "hours": 1.2128, "text": "finally i have completed it all and tried to put all the parts together the representation looks worse but believe me it will turn out good"}, {"post_id": 27082, "ts": "2026-07-12T10:05:48Z", "hours": 2.7325, "text": "today i fixed the appearance of all the parts next time and all of them are now finalised only part assembly is left"}, {"post_id": 15546, "ts": "2026-06-25T08:36:18Z", "hours": 1.6167, "text": "up to finish the wheel which is supposed to be fixed on the bar and will also spin have to use coil instead of threads which absolutely sucks and also having issues in applying the coil internally on the wheel as the offset is being quit thin which is making the coil to get on the outside have to fix it"}, {"post_id": 14999, "ts": "2026-06-24T11:36:48Z", "hours": 2.345, "text": "finally completed the rod which will hold the wheel and fix it to the base ,also figured out how the wheel will be fixed via threads and will also rotate after opening the threads without being disconnected from the whole bar, base thing"}, {"post_id": 5457, "ts": "2026-06-09T07:47:41Z", "hours": 1.8014, "text": "the base is completed now iam working on the bar on which the wheel will be stuck and its stopper. btw its my first time doing cad and using fusion 360, so i deff have gemini on my side for concepts and random error iam unable to solve ."}, {"post_id": 4776, "ts": "2026-06-08T08:25:06Z", "hours": 2.3117, "text": "this is a phone case wheel holder right now iam working on its base ."}]...
|
Title: wheel stand by @rizvifalak216 | Stardance
Title: wheel stand by @rizvifalak216 | Stardance
Devlogs:
this is a phone case wheel holder right now iam working on its base .
the base is completed now iam working on the bar on which the wheel will be stuck and its stopper. btw its my first time doing cad and using fusion 360, so i deff have gemini on my side for concepts and random error iam unable to solve .
finally completed the rod which will hold the wheel and fix it to the base ,also figured out how the wheel will be fixed via threads and will also rotate after opening the threads without being disconnected from the whole bar, base thing
up to finish the wheel which is supposed to be fixed on the bar and will also spin have to use coil instead of threads which absolutely sucks and also having issues in applying the coil internally on the wheel as the offset is being quit thin which is making the coil to get on the outside have to fix it
today i fixed the appearance of all the parts next time and all of them are now finalised only part assembly is left
finally i have completed it all and tried to put all the parts together the representation looks worse but believe me it will turn out good
Ships:
ohkayyy so i have made a wheel stand holder which will look cool and yeah it was my first time 3d modeling something and using fusion it was so tough and also having so much academic right now it was tough FOR ME ofcourse...
|
1793245818.8268425
|
1793332218.8268425
|
|
10888
|
Slack Bot by @747elias | Stardance
|
747elias
|
1
|
1.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-07T20:06:14Z", "hours": 1.0, "multiplier": 1.3, "payout": 1, "blessing": "neutral", "text": "I made a working slack bot with several functions.", "repo": "https://github.com/747elias/slack-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0B944F7950"}]...
|
[{"post_id": 4245, "ts": "2026 [{"post_id": 4245, "ts": "2026-06-07T14:20:40Z", "hours": 0.5889, "text": "Hi I just added some new features and a Readme."}, {"post_id": 4201, "ts": "2026-06-07T12:56:03Z", "hours": 0.4411, "text": "I just build my first Slack Bot! It was an amazing experiance with the build in tutorial."}]...
|
Title: Slack Bot by @747elias | Stardance
Devlogs Title: Slack Bot by @747elias | Stardance
Devlogs:
I just build my first Slack Bot! It was an amazing experiance with the build in tutorial.
Hi I just added some new features and a Readme.
Ships:
I made a working slack bot with several functions....
|
1793267572.4302263
|
1793353972.4302263
|
|
10898
|
My awesome macropad! by @raahat | Stardance
|
raahat
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-18T21:00:51Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a 3x3 macropad with an oled screen and a rotary encoder. This was my first time cadding something so it was very cool to see how I could use what I learned to assemble the macropad. I definitely struggled a lot but in that same process I learned as well. I’m glad I got to step out of my comfort zone (coding) and work on hardware. I hope to continue learning and I’m eager to see where stardance takes me! :)", "repo": "https://github.com/RAdev-py/Raahat-s-Macropad", "demo": ""}]...
|
[{"post_id": 11546, "ts": "202 [{"post_id": 11546, "ts": "2026-06-18T20:51:49Z", "hours": 0.3317, "text": "I just finished the assembly for my hackpad. My cad skills need a lot of work but it was cool learning and seeing it all come together."}]...
|
Title: My awesome macropad! by @raahat | Stardance Title: My awesome macropad! by @raahat | Stardance
Devlogs:
I just finished the assembly for my hackpad. My cad skills need a lot of work but it was cool learning and seeing it all come together.
Ships:
I made a 3x3 macropad with an oled screen and a rotary encoder. This was my first time cadding something so it was very cool to see how I could use what I learned to assemble the macropad. I definitely struggled a lot but in that same process I learned as well. I’m glad I got to step out of my comfort zone (coding) and work on hardware. I hope to continue learning and I’m eager to see where stardance takes me! :)...
|
1793134522.7610993
|
1793220922.7610993
|
|
10911
|
SubBake by @reimunyancat | Stardance
|
reimunyancat
|
1
|
32.89
|
411
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-14T00:02:46Z", "hours": 22.0, "multiplier": 18.46, "payout": 411, "blessing": "neutral", "text": "SubBake is a desktop app that embeds subtitles into video files. Drop in a video and a subtitle file, and it muxes the subtitle in as a proper track — colors, timing, and all — without re-encoding anything. There is also a live web demo if you would rather try it in a browser. What it does: It reads SMI, SRT, ASS, SSA, VTT and SUP subtitles and writes MKV, MP4 or WebM. SMI fansubs keep their per-speaker colors, because they get converted to ASS instead of being flattened into SRT. The GUI takes drag and drop or a plain click, auto-matches videos to same-named subtitle files, and shows live per-file progress straight from FFmpeg’s output. FFmpeg comes bundled, so the whole thing is one executable with nothing to install, and the UI speaks English and Korean without a restart. The web demo runs the exact same pipeline on my home server. Upload both files, watch the bar, download the result. Everything you upload is deleted automatically after an hour. The hardest part was invisible. One subtitle cue kept showing a hollow box between two lines, and every character in those lines came back clean. The culprit turned out to be a blank line in the source file, which my converter faithfully translated into an empty subtitle line that the player rendered as a box. The fix was collapsing consecutive newlines into one. Sometimes the bug is a blank line. To test it: grab the release, drop a video and its subtitle onto the window, and hit Start SubBake. Or open reimunyancat.com/subbake and do the same thing with zero install.", "repo": "https://github.com/reimunyancat/SubBake", "demo": "https://reimunyancat.com/subbake/"}]...
|
[{"post_id": 52292, "ts": "202 [{"post_id": 52292, "ts": "2026-08-22T12:29:12Z", "hours": 8.9519, "text": "Devlog #6 Last time ended with the review finally seeing subtitles — burn mode drew them into the pixels, and the preview proved the output wasn’t empty. The review came back with a new problem, and this one was in the desktop app. The reviewer dragged a video in, then dragged its subtitle in a moment later, and nothing happened. No pair, no row, no error. Just a log line nobody reads. “I dropped the video, then the subtitle. Nothing happened.” The flow made sense to me. Any sane user would load the video and subtitles together. The app matched files by stem and folder, so the names matched — but the pair never appeared. I reproduced it immediately: drop the .mkv, 0 pairs. Drop the .srt, 0 pairs. Drop them together, 1 pair. The order wasn’t the problem — the batch was. It was by design. That was the problem. The drop handler split the incoming paths into videos and subtitles and matched them within that single batch : Both file types had to arrive in the same drop or the matcher had nothing to join. It wasn’t a bug — it worked exactly as written. My own testing had always dropped both files at once, so I never saw it. The code was correct and exactly wrong. To make it worse, that same logic was copy-pasted in four places: the drop handler, the file dialog, the drop-area click, and the folder scan. Four copies, one flaw. Deferred matching The fix was to stop matching batches and start matching state. Files now accumulate into pending queues, and every drop re-runs the matcher against everything pending. Drop the video, drop the subtitle five minutes later — the second drop finds the first and pairs them. All four entry points now route through one _ingest() method, so the deferred-matching rule can’t drift between copies again. Then I almost made it worse My first pass at leftovers had a shortcut: sort the unmatched files by name and zip them into pairs. Five videos and two subtitles? Two pairs, formed by name order, not by any actual correspondence. The names could be completely unrelated — the wrong subtitle would get muxed in silently. That’s the exact failure class I was trying to kill. So the shortcut got a guard: auto-pairing only happens when exactly one video and one subtitle are left unmatched, and everything else stays in the pending queue where the user can see it. While I was in there: dropping the same file twice no longer stacks duplicates in the queue, and the waiting notice now shows whenever anything is still pending — not just when a drop matched nothing. The log panel expands on its own so the “waiting for a matching subtitle” state is visible instead of hidden. TMI It was quite a struggle at first; I hadn’t properly watched the review video, so while testing it myself, I kept wondering, “Wait, it works fine—why do people say it doesn’t?” It turned out the issue was incredibly simple. I made a few minor quality-of-life improvements, but since they were so small, I decided to skip mentioning them. I actually wanted to do more, but I’ve already spent nine hours on this, so I’m wrapping things up now."}, {"post_id": 50793, "ts": "2026-08-20T05:49:47Z", "hours": 1.9336, "text": "Devlog #5 SubBake was released, the web demo went live, and then the review came back: “can’t see no subtitles.” That’s a bug report against a shipped product — the whole point of the app is subtitles, and the review had no way to see them. I couldn’t argue with it: the output carried no visible proof. This devlog is about hunting that bug down and making sure the subtitles can never be invisible again. The fix two There was no rendering at all, nothing to prove a subtitle existed. So the fix attacked both sides. Burn mode re-encodes the video with subtitles drawn into the frames, so the text becomes part of the picture — impossible to miss. And the preview gives real playback with a VTT attached to the <video> element, so muxed output shows its subtitles too. The web API grew a mode parameter ( mux | burn ), the burn path got progress and cancel wired through the existing worker machinery, and the GUI picked up a matching checkbox. Burn mode also rejects SUP input outright — bitmap subtitles can’t be rasterized by libass, and a silent fallback would just recreate the “nothing visible” bug. The output file was empty, and nobody noticed While testing burn with a +1s offset, the job failed with a cryptic libass error: Unable to open /tmp/... . The real cause was in the remux step. The remux command — the one that shifts timestamps with itsoffset before burning — was missing -y . The output path already existed because it came from NamedTemporaryFile , and ffmpeg refuses to overwrite without -y . Worse, it exited with returncode 0 while writing nothing, so the “did it succeed?” check passed. A zero-byte file then went into libass. Two small ordering bugs The preview VTT was extracted with a hardcoded \"ffmpeg\" while the rest of the server resolves a bundled binary via find_ffmpeg() . On a machine without ffmpeg on PATH, preview breaks exactly where the reviewer looks. Switched to the shared resolver. The <track> element was appended after video.load() . The track never registered, so even correct VTT extraction showed nothing. Order matters: attach the track, set the source, then load. Proof The bug report was about visibility, so the fix had to be verified the same way. I burned two different subtitle files into the same video and compared raw RGB. Everything above the subtitle band matched; rows 174–239 differed by ~14,000 pixels — the only difference between the two outputs was the burned text. Then an offset burn: at t=0.5s the frame matched the original (subtitle hadn’t appeared yet), at t=2.5s the text was present. Korean needed one more thing in production: the server had no CJK fonts, so Korean subtitles would burn as tofu boxes. Installed noto-fonts-cjk , re-ran the Korean burn — 12,152 pixels of band difference, and the black outline count jumped from 1385 to 1581. Real glyphs, not boxes."}, {"post_id": 46613, "ts": "2026-08-13T23:46:01Z", "hours": 7.2458, "text": "Devlog #4 Last time SubBake had a face and working hands. This time it learned to speak two languages, moved into a real server, and nearly broke me on the way in. The deployment deserves its own section, because nothing about it went right the first time. One language became two Every user-facing string had been hardcoded in English while I built the thing. Now it all funnels through one translation table — t(\"btn.start\") instead of \"Start SubBake\" — with a language combo in the corner that re-renders the whole window live, no restart. The trick that makes it work: widgets register a callback on a global listener list, and flipping the language calls every one of them. One slight downside is that the font changes when using Korean, which alters the layout; however, I was already so exhausted from dealing with the language settings that I didn’t have the energy to tweak it. I might adjust it later if I have the time, but I trust it will be fine since most people will likely be viewing it in English. Click, not just drag The drop zone now opens a file picker on click, with mixed multi-select for files and folders. Qt’s native dialog refuses to do that, so the code forces the Qt built-in dialog, switches it to directory mode, and then flips every internal list view to extended selection. It feels like a hack because it is one. It works beautifully. The web demo To ensure you can easily test and enjoy the project, I have deployed it using a domain in addition to providing the build files. SubBake now lives at a public URL — a FastAPI wrapper around the same core/ modules (imported, not copied), served from my home server VM, fronted by nginx, reached through a Cloudflare tunnel. Upload a video and a subtitle, watch the progress bar, download the result. Files vanish on a timer. So, the bottom line is that while you can download the Windows and Linux-compatible executables from GitHub to run the project, you can also test it using the URL provided here (the code is identical in both cases)."}, {"post_id": 45534, "ts": "2026-08-12T02:31:32Z", "hours": 8.4511, "text": "Devlog #3 Last time SubBake could mux subtitles with colors intact, but only through python -c one-liners. This time it got a face. It also got that face redesigned, because the first one looked like it was generated by an AI. More on that later. The shell The GUI is PySide6: a drag-and-drop area, a queue table, options row, a progress bar, and a collapsible log panel. Dropping a folder scans it recursively and pairs videos with same-named subtitles. The pairing is just (parent folder, lowercase stem) as a dictionary key, which quietly handles nested folders with identical filenames. Everything is a thread problem FFmpeg muxing is blocking, and a Qt window must never block. So every job is a QRunnable on a QThreadPool capped at 4. The catch: worker threads cannot touch widgets, at all, or the app crashes. So workers never see the UI — they emit signals ( progress , file_progress , finished , log ) and the GUI thread applies them. One trap cost me a real headache: the pool auto-deletes finished runnables by default. My cancel button keeps references to running tasks so it can flag them — which becomes a dangling pointer the moment auto-delete kicks in. The fix is one line you only learn by crashing: self.setAutoDelete(False) Cancel itself is two different operations pretending to be one button. thread_pool.clear() drops queued tasks, but anything already running needs a cancel() flag that FFmpeg checks between progress updates. The progress bar’s total also has to be recalculated mid-flight, or cancelling leaves the bar lying about how much is left. The tray icon that isn’t a file I didn’t want to ship an icon asset for a tray icon nobody looks at, so the app paints one at runtime — a 32×32 QPixmap filled with one flat color. Zero files, zero resource management, and honestly nobody can tell. Where SubBake stands A real window: drag-and-drop, queue table, live per-file progress, cancel, tray notification when done Four files mux in parallel without freezing the UI, and cancelling mid-run doesn’t corrupt anything Flat neutral theme, zero emoji, no gradients Still English-only, still launched from a terminal Next up Two things remain before this is a product: a language toggle (every string already funnels through one translation table, so it’s a refactor, not a rewrite), and PyInstaller packaging so normal humans can double-click it. Then the web demo, which is a story of its own."}, {"post_id": 43308, "ts": "2026-08-08T14:36:11Z", "hours": 3.5961, "text": "Devlog #2 Last time: a parser pipeline that couldn’t bake anything. Now SubBake actually muxes subtitles into video — and I collected three of the dumbest bugs I’ve ever fought along the way. The muxer was the easy part core/muxer.py runs FFmpeg as a subprocess with -progress pipe:1 and reads out_time_us lines off stdout for live progress. Video and audio are stream-copied, so a 24-minute episode remuxes in seconds. The sharp edges were plumbing: stderr needs its own drain thread or the pipe buffer fills and FFmpeg just stops, and the container picks your subtitle codec — MKV copies the track as-is, MP4 demands mov_text , WebM demands webvtt . One ffmpeg -i later: Stream #0:2(kor): Subtitle: subrip (default) , title “Korean”. It works. SRT ate my colors Then I actually watched the result. The original fansub had per-speaker colors; my output was all white. Of course — my SMI parser stripped every HTML tag, including <font color=\"#FF80C0\"> , and SRT has no styling anyway. So the plan changed: SMI now converts to ASS. The parser keeps font tags, and a new core/ass_converter.py writes a proper ASS document. Writing the font regex by hand nearly broke me This regex took longer than the entire muxer: _FONT_COLOR_RE = re.compile( r'<font\\s+[^>]*color\\s*=\\s*[\"\\']?([^\"\\'>\\s]+)[\"\\']?[^>]*>', re.IGNORECASE, ) The job sounds trivial: find opening <font> tags, capture the color. My first draft, <font color=\"(.*?)\"> , fell apart immediately — real fansub files write color=\"Red\" (a name, not hex), color=#FF80C0 (no quotes), and <font face=\"Arial\" color=\"...\"> (color isn’t the first attribute). The class [^\"\\'>\\s]+ exists because the value must stop at a quote, a space, or the tag end — and nesting quote escapes inside a Python raw string is its own hell. I built it the way everyone builds regexes: one character class at a time in a tester, pasting real SMI lines until nothing exploded. Nobody writes this in one shot; anyone who claims otherwise is lying. Then the colors came out wrong — red and blue swapped. ASS stores colors as &HBBGGRR& , a byte order from the 80s, so every RGB value gets flipped first. That cost me a long “why is the pink line blue” stare. The giant subtitle First ASS render: billboard-sized subtitles. Fontsize 36 sounds fine until you learn what PlayResX / PlayResY do — ASS declares a design resolution and the renderer scales it to the real video. I designed for 640×360 and played at 1080p: a 3× upscale, 108-pixel letters. Now I declare PlayRes 1920×1080 and the size holds at any resolution. I verified by burning test frames, because I no longer trust my own reasoning about this format. The mystery box Last ghost: a hollow rectangle between the pink Japanese line and the Korean translation. Every codepoint in those lines was clean, and re-rendering the same structure in isolation showed nothing. The culprit was the blank line — the SMI source separates the two languages with an empty line, my converter turned it into \\N\\N , and my player draws an empty subtitle line as a hollow box. Collapsing consecutive newlines fixed it, and as a bonus the output now looks exactly like the original presentation. Sometimes the bug is a blank line. That sentence is going on my gravestone. Where SubBake stands Muxing works end to end: stream copy, live progress, clean cancel, per-container codecs SMI→ASS with per-speaker colors, verified on a real episode Sane subtitle size at any resolution; phantom box gone Still no GUI — everything runs through python -c one-liners Next up The interface: a PySide6 shell with drag-and-drop, a queue table, and worker threads — the point where this becomes an app instead of modules I poke from a terminal. Qt will be perfectly calm and reasonable. (It will not be.)"}, {"post_id": 41919, "ts": "2026-08-06T13:11:24Z", "hours": 2.9786, "text": "Devlog #1 SubBake is a desktop app I’m building that embeds subtitle files (SMI / SRT / ASS / SSA / VTT / SUP) into MKV, MP4 and WebM as real subtitle tracks. Python + PySide6, FFmpeg bundled, GPL v3. This devlog covers the first stretch: empty repo to a working conversion pipeline. What I did Repo scaffold, GPL license, and a .gitignore that keeps the 300 MB ffmpeg/ folder out of git download_ffmpeg.py — downloads a static FFmpeg build for Windows / Linux / macOS, unpacks it, deletes the leftovers core/ffmpeg_locator.py — finds that binary later (bundled, PyInstaller temp dir, or PATH) Parsers for SMI and VTT, an SRT writer, encoding detection, and a matcher that pairs videos with their subtitle files Problems The SMI parser found 12 cues in a whole episode. I’d forgotten re.DOTALL , so any dialogue with a line break killed the match early. One flag later, hundreds of cues. Opened my test subtitle in VS Code and panicked - the entire file was mojibake. Took me a minute to realize the file is CP949 and the editor was just displaying it as UTF-8. The converter had already decoded it correctly. Editor lied, pipeline didn’t. The “throw it at the converter” test Grabbed a real SMI off the internet (a K-ON episode) and ran it through. 385 cues, first one at 00:00 31,458, Korean perfectly intact. The side-by-side screenshot says it best: left is the mojibake original, right is the clean SRT that came out. That’s the encoding fallback doing its job. Where SubBake stands FFmpeg downloads and gets located on all three OSes SMI / VTT → SRT conversion verified on real data No muxer, no GUI — it still can’t bake anything Next up core/muxer.py : run FFmpeg as a subprocess, stream the progress output, handle cancel, and pick the right subtitle codec per container (mov_text / webvtt / copy). Devlog #2 should have actual player screenshots instead of terminal text."}]...
|
Title: SubBake by @reimunyancat | Stardance
Devlo Title: SubBake by @reimunyancat | Stardance
Devlogs:
Devlog #1 SubBake is a desktop app I’m building that embeds subtitle files (SMI / SRT / ASS / SSA / VTT / SUP) into MKV, MP4 and WebM as real subtitle tracks. Python + PySide6, FFmpeg bundled, GPL v3. This devlog covers the first stretch: empty repo to a working conversion pipeline. What I did Repo scaffold, GPL license, and a .gitignore that keeps the 300 MB ffmpeg/ folder out of git download_ffmpeg.py — downloads a static FFmpeg build for Windows / Linux / macOS, unpacks it, deletes the leftovers core/ffmpeg_locator.py — finds that binary later (bundled, PyInstaller temp dir, or PATH) Parsers for SMI and VTT, an SRT writer, encoding detection, and a matcher that pairs videos with their subtitle files Problems The SMI parser found 12 cues in a whole episode. I’d forgotten re.DOTALL , so any dialogue with a line break killed the match early. One flag later, hundreds of cues. Opened my test subtitle in VS Code and panicked - the entire file was mojibake. Took me a minute to realize the file is CP949 and the editor was just displaying it as UTF-8. The converter had already decoded it correctly. Editor lied, pipeline didn’t. The “throw it at the converter” test Grabbed a real SMI off the internet (a K-ON episode) and ran it through. 385 cues, first one at 00:00 31,458, Korean perfectly intact. The side-by-side screenshot says it best: left is the mojibake original, right is the clean SRT that came out. That’s the encoding fallback doing its job. Where SubBake stands FFmpeg downloads and gets located on all three OSes SMI / VTT → SRT conversion verified on real data No muxer, no GUI — it still can’t bake anything Next up core/muxer.py : run FFmpeg as a subprocess, stream the progress output, handle cancel, and pick the right subtitle codec per container (mov_text / webvtt / copy). Devlog #2 should have actual player screenshots instead of terminal text.
Devlog #2 Last time: a parser pipeline that couldn’t bake anything. Now SubBake actually muxes subtitles into video — and I collected three of the dumbest bugs I’ve ever fought along the way. The muxer was the easy part core/muxer.py runs FFmpeg as a subprocess with -progress pipe:1 and reads out_time_us lines off stdout for live progress. Video and audio are stream-copied, so a 24-minute episode remuxes in seconds. The sharp edges were plumbing: stderr needs its own drain thread or the pipe buffer fills and FFmpeg just stops, and the container picks your subtitle codec — MKV copies the track as-is, MP4 demands mov_text , WebM demands webvtt . One ffmpeg -i later: Stream #0:2(kor): Subtitle: subrip (default) , title “Korean”. It works. SRT ate my colors Then I actually watched the result. The original fansub had per-speaker colors; my output was all white. Of course — my SMI parser stripped every HTML tag, including <font color="#FF80C0"> , and SRT has no styling anyway. So the plan changed: SMI now converts to ASS. The parser keeps font tags, and a new core/ass_converter.py writes a proper ASS document. Writing the font regex by hand nearly broke me This regex took longer than the entire muxer: _FONT_COLOR_RE = re.compile( r'<font\s+[^>]*color\s*=\s*["\']?([^"\'>\s]+)["\']?[^>]*>', re.IGNORECASE, ) The job sounds trivial: find opening <font> tags, capture the color. My first draft, <font color="(.*?)"> , fell apart immediately — real fansub files write color="Red" (a name, not hex), color=#FF80C0 (no quotes), and <font face="Arial" color="..."> (color isn’t the first attribute). The class [^"\'>\s]+ exists because the value must stop at a quote, a space, or the tag end — and nesting quote escapes inside a Python raw string is its own hell. I built it the way everyone builds regexes: one character class at a time in a tester, pasting real SMI lines until nothing exploded. Nobody writes this in one shot; anyone who claims otherwise is lying. Then the colors came out wrong — red and blue swapped. ASS stores colors as &HBBGGRR& , a byte order from the 80s, so every RGB value gets flipped first. That cost me a long “why is the pink line blue” stare. The giant subtitle First ASS render: billboard-sized subtitles. Fontsize 36 sounds fine until you learn what PlayResX / PlayResY do — ASS declares a design resolution and the renderer scales it to the real video. I designed for 640×360 and played at 1080p: a 3× upscale, 108-pixel letters. Now I declare PlayRes 1920×1080 and the size holds at any resolution. I verified by burning test frames, because I no longer trust my own reasoning about this format. The mystery box Last ghost: a hollow rectangle between the pink Japanese line and the Korean translation. Every codepoint in those lines was clean, and re-rendering the same structure in isolation showed nothing. The culprit was the blank line — the SMI source separates the two languages with an empty line, my converter turned it into \N\N , and my player draws an empty subtitle line as a hollow box. Collapsing consecutive newlines fixed it, and as a bonus the output now looks exactly like the original presentation. Sometimes the bug is a blank line. That sentence is going on my gravestone. Where SubBake stands Muxing works end to end: stream copy, live progress, clean cancel, per-container codecs SMI→ASS with per-speaker colors, verified on a real episode Sane subtitle size at any resolution; phantom box gone Still no GUI — everything runs through python -c one-liners Next up The interface: a PySide6 shell with drag-and-drop, a queue table, and worker threads — the point where this becomes an app instead of modules I poke from a terminal. Qt will be perfectly calm and reasonable. (It will not be.)
Devlog #3 Last time SubBake could mux subtitles with colors intact, but only through python -c one-liners. This time it got a face. It also got that face redesigned, because the first one looked like it was generated by an AI. More on that later. The shell The GUI is PySide6: a drag-and-drop area, a queue table, options row, a progress bar, and a collapsible log panel. Dropping a folder scans it recursively and pairs videos with same-named subtitles. The pairing is just (parent folder, lowercase stem) as a dictionary key, which quietly handles nested folders with identical filenames. Everything is a thread problem FFmpeg muxing is blocking, and a Qt window must never block. So every job is a QRunnable on a QThreadPool capped at 4. The catch: worker threads cannot touch widgets, at all, or the app crashes. So workers never see the UI — they emit signals ( progress , file_progress , finished , log ) and the GUI thread applies them. One trap cost me a real headache: the pool auto-deletes finished runnables by default. My cancel button keeps references to running tasks so it can flag them — which becomes a dangling pointer the moment auto-delete kicks in. The fix is one line you only learn by crashing: self.setAutoDelete(False) Cancel itself is two different operations pretending to be one button. thread_pool.clear() drops queued tasks, but anything already running needs a cancel() flag that FFmpeg checks between progress updates. The progress bar’s total also has to be recalculated mid-flight, or cancelling leaves the bar lying about how much is left. The tray icon that isn’t a file I didn’t want to ship an icon asset for a tray icon nobody looks at, so the app paints one at runtime — a 32×32 QPixmap filled with one flat color. Zero files, zero resource management, and honestly nobody can tell. Where SubBake stands A real window: drag-and-drop, queue table, live per-file progress, cancel, tray notification when done Four files mux in parallel without freezing the UI, and cancelling mid-run doesn’t corrupt anything Flat neutral theme, zero emoji, no gradients Still English-only, still launched from a terminal Next up Two things remain before this is a product: a language toggle (every string already funnels through one translation table, so it’s a refactor, not a rewrite), and PyInstaller packaging so normal humans can double-click it. Then the web demo, which is a story of its own.
Devlog #4 Last time SubBake had a face and working hands. This time it learned to speak two languages, moved into a real server, and nearly broke me on the way in. The deployment deserves its own section, because nothing about it went right the first time. One language became two Every user-facing string had been hardcoded in English while I built the thing. Now it all funnels through one translation table — t("btn.start") instead of "Start SubBake" — with a language combo in the corner that re-renders the whole window live, no restart. The trick that makes it work: widgets register a callback on a global listener list, and flipping the language calls every one of them. One slight downside is that the font changes when using Korean, which alters the layout; however, I was already so exhausted from dealing with the language settings that I didn’t have the energy to tweak it. I might adjust it later if I have the time, but I trust it will be fine since most people will likely be viewing it in English. Click, not just drag The drop zone now opens a file picker on click, with mixed multi-select for files and folders. Qt’s native dialog refuses to do that, so the code forces the Qt built-in dialog, switches it to directory mode, and then flips every internal list view to extended selection. It feels like a hack because it is one. It works beautifully. The web demo To ensure you can easily test and enjoy the project, I have deployed it using a domain in addition to providing the build files. SubBake now lives at a public URL — a FastAPI wrapper around the same core/ modules (imported, not copied), served from my home server VM, fronted by nginx, reached through a Cloudflare tunnel. Upload a video and a subtitle, watch the progress bar, download the result. Files vanish on a timer. So, the bottom line is that while you can download the Windows and Linux-compatible executables from GitHub to run the project, you can also test it using the URL provided here (the code is identical in both cases).
Devlog #5 SubBake was released, the web demo went live, and then the review came back: “can’t see no subtitles.” That’s a bug report against a shipped product — the whole point of the app is subtitles, and the review had no way to see them. I couldn’t argue with it: the output carried no visible proof. This devlog is about hunting that bug down and making sure the subtitles can never be invisible again. The fix two There was no rendering at all, nothing to prove a subtitle existed. So the fix attacked both sides. Burn mode re-encodes the video with subtitles drawn into the frames, so the text becomes part of the picture — impossible to miss. And the preview gives real playback with a VTT attached to the <video> element, so muxed output shows its subtitles too. The web API grew a mode parameter ( mux | burn ), the burn path got progress and cancel wired through the existing worker machinery, and the GUI picked up a matching checkbox. Burn mode also rejects SUP input outright — bitmap subtitles can’t be rasterized by libass, and a silent fallback would just recreate the “nothing visible” bug. The output file was empty, and nobody noticed While testing burn with a +1s offset, the job failed with a cryptic libass error: Unable to open /tmp/... . The real cause was in the remux step. The remux command — the one that shifts timestamps with itsoffset before burning — was missing -y . The output path already existed because it came from NamedTemporaryFile , and ffmpeg refuses to overwrite without -y . Worse, it exited with returncode 0 while writing nothing, so the “did it succeed?” check passed. A zero-byte file then went into libass. Two small ordering bugs The preview VTT was extracted with a hardcoded "ffmpeg" while the rest of the server resolves a bundled binary via find_ffmpeg() . On a machine without ffmpeg on PATH, preview breaks exactly where the reviewer looks. Switched to the shared resolver. The <track> element was appended after video.load() . The track never registered, so even correct VTT extraction showed nothing. Order matters: attach the track, set the source, then load. Proof The bug report was about visibility, so the fix had to be verified the same way. I burned two different subtitle files into the same video and compared raw RGB. Everything above the subtitle band matched; rows 174–239 differed by ~14,000 pixels — the only difference between the two outputs was the burned text. Then an offset burn: at t=0.5s the frame matched the original (subtitle hadn’t appeared yet), at t=2.5s the text was present. Korean needed one more thing in production: the server had no CJK fonts, so Korean subtitles would burn as tofu boxes. Installed noto-fonts-cjk , re-ran the Korean burn — 12,152 pixels of band difference, and the black outline count jumped from 1385 to 1581. Real glyphs, not boxes.
Devlog #6 Last time ended with the review finally seeing subtitles — burn mode drew them into the pixels, and the preview proved the output wasn’t empty. The review came back with a new problem, and this one was in the desktop app. The reviewer dragged a video in, then dragged its subtitle in a moment later, and nothing happened. No pair, no row, no error. Just a log line nobody reads. “I dropped the video, then the subtitle. Nothing happened.” The flow made sense to me. Any sane user would load the video and subtitles together. The app matched files by stem and folder, so the names matched — but the pair never appeared. I reproduced it immediately: drop the .mkv, 0 pairs. Drop the .srt, 0 pairs. Drop them together, 1 pair. The order wasn’t the problem — the batch was. It was by design. That was the problem. The drop handler split the incoming paths into videos and subtitles and matched them within that single batch : Both file types had to arrive in the same drop or the matcher had nothing to join. It wasn’t a bug — it worked exactly as written. My own testing had always dropped both files at once, so I never saw it. The code was correct and exactly wrong. To make it worse, that same logic was copy-pasted in four places: the drop handler, the file dialog, the drop-area click, and the folder scan. Four copies, one flaw. Deferred matching The fix was to stop matching batches and start matching state. Files now accumulate into pending queues, and every drop re-runs the matcher against everything pending. Drop the video, drop the subtitle five minutes later — the second drop finds the first and pairs them. All four entry points now route through one _ingest() method, so the deferred-matching rule can’t drift between copies again. Then I almost made it worse My first pass at leftovers had a shortcut: sort the unmatched files by name and zip them into pairs. Five videos and two subtitles? Two pairs, formed by name order, not by any actual correspondence. The names could be completely unrelated — the wrong subtitle would get muxed in silently. That’s the exact failure class I was trying to kill. So the shortcut got a guard: auto-pairing only happens when exactly one video and one subtitle are left unmatched, and everything else stays in the pending queue where the user can see it. While I was in there: dropping the same file twice no longer stacks duplicates in the queue, and the waiting notice now shows whenever anything is still pending — not just when a drop matched nothing. The log panel expands on its own so the “waiting for a matching subtitle” state is visible instead of hidden. TMI It was quite a struggle at first; I hadn’t properly watched the review video, so while testing it myself, I kept wondering, “Wait, it works fine—why do people say it doesn’t?” It turned out the issue was incredibly simple. I made a few minor quality-of-life improvements, but since they were so small, I decided to skip mentioning them. I actually wanted to do more, but I’ve already spent nine hours on this, so I’m wrapping things up now.
Ships:
SubBake is a desktop app that embeds subtitles into video files. Drop in a video and a subtitle file, and it muxes the subtitle in as a proper track — colors, timing, and all — without re-encoding anything. There is also a live web demo if you would rather try it in a browser. What it does: It reads SMI, SRT, ASS, SSA, VTT and SUP subtitles and writes MKV, MP4 or WebM. SMI fansubs keep their per-speaker colors, because they get converted to ASS instead of being flattened into SRT. The GUI takes drag and drop or a plain click, auto-matches videos to same-named subtitle files, and shows live per-file progress straight from FFmpeg’s output. FFmpeg comes bundled, so the whole thing is one executable with nothing to install, and the UI speaks English and Korean without a restart. The web demo runs the exact same pipeline on my home server. Upload both files, watch the bar, download the result. Everything you upload is deleted automatically after an hour. The hardest part was invisible. One subtitle cue kept showing a hollow box between two lines, and every character in those lines came back clean. The culprit turned out to be a blank line in the source file, which my converter faithfully translated into an empty subtitle line that the player rendered as a box. The fix was collapsing consecutive newlines into one. Sometimes the bug is a blank line. To test it: grab the release, drop a video and its subtitle onto the window, and hit Start SubBake. Or open reimunyancat.com/subbake and do the same thing with zero install....
|
1792878570.6959496
|
1793742570.6959496
|
|
10947
|
legacytide by @simonproyt | Stardance
|
simonproyt
|
1
|
3.2
|
7
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-07T19:54:49Z", "hours": 2.0, "multiplier": 3.47, "payout": 7, "blessing": "neutral", "text": "I made a tidal client for legacy android devices. It was hard because old android and by extension blackberry 10 do not support modern tls libraries and they need to be backported.", "repo": "https://github.com/simonproyt/legacytide", "demo": "https://user-cdn.hackclub-assets.com/019f2493-4118-7486-9d28-6df0569ba19e/PXL_20260607_154311711%20(1).mp4"}]...
|
[{"post_id": 4948, "ts": "2026 [{"post_id": 4948, "ts": "2026-06-08T16:06:20Z", "hours": 0.9003, "text": "We added a download queue system to the app for better dl management"}, {"post_id": 4522, "ts": "2026-06-07T21:14:29Z", "hours": 0.2953, "text": "I added the queue system now and moved on to adding offline playback support"}, {"post_id": 4465, "ts": "2026-06-07T19:51:49Z", "hours": 1.7022, "text": "We managed to make playback home screen and most of the other stuff hooked up"}, {"post_id": 4191, "ts": "2026-06-07T12:40:45Z", "hours": 0.3592, "text": "I got TLS 1.3 finally working on android 4.3"}]...
|
Title: legacytide by @simonproyt | Stardance
Devl Title: legacytide by @simonproyt | Stardance
Devlogs:
I got TLS 1.3 finally working on android 4.3
We managed to make playback home screen and most of the other stuff hooked up
I added the queue system now and moved on to adding offline playback support
We added a download queue system to the app for better dl management
Ships:
I made a tidal client for legacy android devices. It was hard because old android and by extension blackberry 10 do not support modern tls libraries and they need to be backported....
|
1793112701.2138846
|
1793199101.2138846
|
|
10959
|
Ephemeris by @reimunyancat | Stardance
|
reimunyancat
|
1
|
4.34
|
51
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-14T13:55:19Z", "hours": 4.0, "multiplier": 14.56, "payout": 51, "blessing": "neutral", "text": "🪐 Ephemeris — a real-time 3D solar system simulator, built from scratch What I made: A desktop app (Tauri + TypeScript + Three.js) that simulates the solar system from real NASA JPL Horizons initial conditions. Instead of faking the orbits, it actually integrates Newtonian gravity in real time. I hand-implemented three classic computational-physics algorithms: a Velocity Verlet symplectic integrator for stable long-term orbits, a 3D Barnes-Hut octree for O(N log N) gravity, and a Newton-Raphson solver for Kepler’s equation to read out live orbital elements. What was challenging: The trickiest part was the tension between the symplectic integrator and the Barnes-Hut approximation — every time the octree rebuilds, tiny force discontinuities break symplecticity and energy drift creeps back in. Getting the numerical stability right (gravity softening near close encounters, sub-stepping at high time-acceleration, and removing barycenter drift) and killing GC frame spikes with an octree node memory pool took a lot of iteration. What I’m proud of: It genuinely runs on real NASA data and the orbits come out physically correct — the unit tests recover the actual JPL inclinations. And it looks nice too: procedural planet textures, age-faded orbit trails, Saturn’s rings, Earth’s atmospheric glow, and real axial tilt + rotation. How to test it: Open it and the 8 planets load automatically. Drag the time slider to speed things up (1 day/s → 1 year/s), click any planet to see its 6 live orbital elements, then toggle the asteroid belt on (1k–10k particles) and switch between naive O(N²) and Barnes-Hut to watch the FPS difference. You can also pause, reverse, and jump through time.", "repo": "https://github.com/reimunyancat/Ephemeris", "demo": "https://reimunyancat.github.io/Ephemeris/"}]...
|
[{"post_id": 9282, "ts": "2026 [{"post_id": 9282, "ts": "2026-06-15T16:11:33Z", "hours": 0.3367, "text": "I really agonized over how to add UI elements to meet the requirements. I originally intended to create this for display purposes, and the HUD I had made for a school assignment was already somewhat inconvenient. It was quite challenging due to the requirement to add more UI, but I found a way to incorporate features without compromising the aesthetics. I modified the code so that clicking the key descriptions located below the HUD immediately activates the functions. Additionally, instead of using the automatically generated readme.md, I wrote it myself based on my own ideas. While the content might seem AI-driven, I wrote it out by hand since it is also being used for a school assignment presentation."}, {"post_id": 8707, "ts": "2026-06-14T13:51:59Z", "hours": 1.0228, "text": "I added details, removed minor bugs, and made it prettier."}, {"post_id": 4932, "ts": "2026-06-08T15:19:46Z", "hours": 1.8544, "text": "Initially, I designed it more simply than planned, but when I modified it to fit the plan, there were so many errors that fixing them was very difficult. I will wrap up here for today and focus on details and optimization tomorrow."}, {"post_id": 4177, "ts": "2026-06-07T12:17:55Z", "hours": 0.6633, "text": "I implemented formulas for the trajectories and masses of the planets, created individual objects to form their orbits, and implemented the UI. The formulas were the most difficult part."}]...
|
Title: Ephemeris by @reimunyancat | Stardance
Dev Title: Ephemeris by @reimunyancat | Stardance
Devlogs:
I implemented formulas for the trajectories and masses of the planets, created individual objects to form their orbits, and implemented the UI. The formulas were the most difficult part.
Initially, I designed it more simply than planned, but when I modified it to fit the plan, there were so many errors that fixing them was very difficult. I will wrap up here for today and focus on details and optimization tomorrow.
I added details, removed minor bugs, and made it prettier.
I really agonized over how to add UI elements to meet the requirements. I originally intended to create this for display purposes, and the HUD I had made for a school assignment was already somewhat inconvenient. It was quite challenging due to the requirement to add more UI, but I found a way to incorporate features without compromising the aesthetics. I modified the code so that clicking the key descriptions located below the HUD immediately activates the functions. Additionally, instead of using the automatically generated readme.md, I wrote it myself based on my own ideas. While the content might seem AI-driven, I wrote it out by hand since it is also being used for a school assignment presentation.
Ships:
🪐 Ephemeris — a real-time 3D solar system simulator, built from scratch What I made: A desktop app (Tauri + TypeScript + Three.js) that simulates the solar system from real NASA JPL Horizons initial conditions. Instead of faking the orbits, it actually integrates Newtonian gravity in real time. I hand-implemented three classic computational-physics algorithms: a Velocity Verlet symplectic integrator for stable long-term orbits, a 3D Barnes-Hut octree for O(N log N) gravity, and a Newton-Raphson solver for Kepler’s equation to read out live orbital elements. What was challenging: The trickiest part was the tension between the symplectic integrator and the Barnes-Hut approximation — every time the octree rebuilds, tiny force discontinuities break symplecticity and energy drift creeps back in. Getting the numerical stability right (gravity softening near close encounters, sub-stepping at high time-acceleration, and removing barycenter drift) and killing GC frame spikes with an octree node memory pool took a lot of iteration. What I’m proud of: It genuinely runs on real NASA data and the orbits come out physically correct — the unit tests recover the actual JPL inclinations. And it looks nice too: procedural planet textures, age-faded orbit trails, Saturn’s rings, Earth’s atmospheric glow, and real axial tilt + rotation. How to test it: Open it and the 8 planets load automatically. Drag the time slider to speed things up (1 day/s → 1 year/s), click any planet to see its 6 live orbital elements, then toggle the asteroid belt on (1k–10k particles) and switch between naive O(N²) and Barnes-Hut to watch the FPS difference. You can also pause, reverse, and jump through time....
|
1792875247.2490745
|
1793739247.2490745
|