|
42528
|
SLASH by @Ippia | Stardance
|
Ippia
|
0
|
31.15
|
0
|
[]
|
[{"post_id": 75396, "ts": "202 [{"post_id": 75396, "ts": "2026-09-29T22:56:12Z", "hours": 3.8106, "text": "SLASH #10 - String player After more than a month, SLASH is back with plenty of work still to do and only 12 days left until the WRO! Today, I refined the overall aesthetics by applying the final color scheme and finally finishing the underside mechanism that plucks the strings using the small screen connected to the Raspberry Pi. All that remains is to complete the stand—which will hold the guitar upright and house all the electronics—and print everything out; then, the project will finally be ready for completion. Zagreb, here we come!"}, {"post_id": 50907, "ts": "2026-08-20T11:41:51Z", "hours": 3.8478, "text": "SLASH #9 - String Player I’ve adjusted the servos and linear actuators for each string based on the precise measurements needed for perfect playability; I’ve also started building the external housing, it looks pretty ugly right now, but the screen and various decorations are still missing (let’s just pretend to believe in it)."}, {"post_id": 50744, "ts": "2026-08-20T03:00:27Z", "hours": 3.4467, "text": "SLASH #8 - Guitar CAD remaking and string player I’ve finished the CAD model for the entire guitar, including the rest of the neck and the body, so I can get a full 1:1 view of the project. I also built a linear actuator from scratch for the MG90S servo used in the string-plucking mechanism; it works really well (I actually made a video of it but forgot to include it in the devlog lol) Now, I just need to finish the housing for the lower servos, adapt it to fit the Raspberry Pi screen, and complete the stand that holds the guitar upright while housing all the electronics."}, {"post_id": 49312, "ts": "2026-08-18T01:51:24Z", "hours": 1.8114, "text": "SLASH #7 - General adjustments I’ve made a few purely aesthetic adjustments to the system and loaded all the parts developed so far into Bambu Studio with the correct print settings to determine how much filament and how many hours of printing we’ll need (spoiler a lot)."}, {"post_id": 46620, "ts": "2026-08-14T00:26:13Z", "hours": 1.0506, "text": "SLASH #6 - Fret CAD Remaking I’ve also finished the mount for attaching the servo system to the guitar neck and made a few general adjustments; the first version of the upper section is now completely finished. Now it’s time for the lower section, the part that plays the strings, which should (in theory) be simpler to build."}, {"post_id": 46225, "ts": "2026-08-13T09:49:10Z", "hours": 7.8544, "text": "SLASH #5 - Fret CAD Remaking I’ve finished the first version of the servo housing unit. I aligned each servo individually to ensure the best possible positioning for pressing the keys. I built a sliding-tray enclosure system: the outer casing opens, allowing the entire assembly of servos to be slid out for maintenance or adjustments. I also created an alternative servo configuration to allow for stacking units on top of one another; I simply extended the piston and its travel range. The next step is to create a magnetic mount to attach the system to the guitar neck, and then to revamp the lower section on the guitar body that plays the strings."}, {"post_id": 46080, "ts": "2026-08-13T01:08:15Z", "hours": 3.7983, "text": "SLASH #4 - Fret CAD Remaking I have, I believe definitively (I hope), completed the connecting-rod-and-crank system for pressing the keys using MG90S servos. It was much more complicated than expected due to the precise, millimeter-scale measurements, but I managed it! Now “all” that remains is to adjust all the servos on the guitar’s 36 keys and build the support housing around them."}, {"post_id": 45536, "ts": "2026-08-12T02:50:53Z", "hours": 3.0375, "text": "SLASH #3 - Fret CAD Remaking I’ve started working on the new key-actuation system; the previous version used electromagnetic solenoids that didn’t generate enough force and were very noisy, so I decided to switch to MG90S servos using a desmodromic cam mechanism. I’ve finished the first version of the servo assembly, but it’s MASSIVE, and I haven’t yet tested whether it actually works in practice. Tomorrow, I plan to continue laying out the servos on the guitar fretboard and running some tests with the initial 3D printed parts."}, {"post_id": 45436, "ts": "2026-08-11T21:32:38Z", "hours": 1.4328, "text": "SLASH #2 - Guitar CAD Remaking I have finished the guitar neck by adding the frets and strings. Installing the strings was tricky because they vary in both height and curvature and they are not perpendicular to the neck. The next step will be to develop the desmodromic cam system to actuate the strings using MG90S servos and to mount all the new motors in their correct positions."}, {"post_id": 41015, "ts": "2026-08-04T22:16:43Z", "hours": 1.0639, "text": "SLASH #1 - Guitar CAD Remaking I remade the guitar neck; the measurements are all irregular, so I used cardboard to create templates to follow. I’m not entirely convinced by the result, but it should work. I’ve mapped out the measurements up to the seventh fret and think I’ll stop there, that’s all we’ll need for our project."}]...
|
Title: SLASH by @Ippia | Stardance
Devlogs:
SLASH Title: SLASH by @Ippia | Stardance
Devlogs:
SLASH #1 - Guitar CAD Remaking I remade the guitar neck; the measurements are all irregular, so I used cardboard to create templates to follow. I’m not entirely convinced by the result, but it should work. I’ve mapped out the measurements up to the seventh fret and think I’ll stop there, that’s all we’ll need for our project.
SLASH #2 - Guitar CAD Remaking I have finished the guitar neck by adding the frets and strings. Installing the strings was tricky because they vary in both height and curvature and they are not perpendicular to the neck. The next step will be to develop the desmodromic cam system to actuate the strings using MG90S servos and to mount all the new motors in their correct positions.
SLASH #3 - Fret CAD Remaking I’ve started working on the new key-actuation system; the previous version used electromagnetic solenoids that didn’t generate enough force and were very noisy, so I decided to switch to MG90S servos using a desmodromic cam mechanism. I’ve finished the first version of the servo assembly, but it’s MASSIVE, and I haven’t yet tested whether it actually works in practice. Tomorrow, I plan to continue laying out the servos on the guitar fretboard and running some tests with the initial 3D printed parts.
SLASH #4 - Fret CAD Remaking I have, I believe definitively (I hope), completed the connecting-rod-and-crank system for pressing the keys using MG90S servos. It was much more complicated than expected due to the precise, millimeter-scale measurements, but I managed it! Now “all” that remains is to adjust all the servos on the guitar’s 36 keys and build the support housing around them.
SLASH #5 - Fret CAD Remaking I’ve finished the first version of the servo housing unit. I aligned each servo individually to ensure the best possible positioning for pressing the keys. I built a sliding-tray enclosure system: the outer casing opens, allowing the entire assembly of servos to be slid out for maintenance or adjustments. I also created an alternative servo configuration to allow for stacking units on top of one another; I simply extended the piston and its travel range. The next step is to create a magnetic mount to attach the system to the guitar neck, and then to revamp the lower section on the guitar body that plays the strings.
SLASH #6 - Fret CAD Remaking I’ve also finished the mount for attaching the servo system to the guitar neck and made a few general adjustments; the first version of the upper section is now completely finished. Now it’s time for the lower section, the part that plays the strings, which should (in theory) be simpler to build.
SLASH #7 - General adjustments I’ve made a few purely aesthetic adjustments to the system and loaded all the parts developed so far into Bambu Studio with the correct print settings to determine how much filament and how many hours of printing we’ll need (spoiler a lot).
SLASH #8 - Guitar CAD remaking and string player I’ve finished the CAD model for the entire guitar, including the rest of the neck and the body, so I can get a full 1:1 view of the project. I also built a linear actuator from scratch for the MG90S servo used in the string-plucking mechanism; it works really well (I actually made a video of it but forgot to include it in the devlog lol) Now, I just need to finish the housing for the lower servos, adapt it to fit the Raspberry Pi screen, and complete the stand that holds the guitar upright while housing all the electronics.
SLASH #9 - String Player I’ve adjusted the servos and linear actuators for each string based on the precise measurements needed for perfect playability; I’ve also started building the external housing, it looks pretty ugly right now, but the screen and various decorations are still missing (let’s just pretend to believe in it).
SLASH #10 - String player After more than a month, SLASH is back with plenty of work still to do and only 12 days left until the WRO! Today, I refined the overall aesthetics by applying the final color scheme and finally finishing the underside mechanism that plucks the strings using the small screen connected to the Raspberry Pi. All that remains is to complete the stand—which will hold the guitar upright and house all the electronics—and print everything out; then, the project will finally be ready for completion. Zagreb, here we come!...
|
1793180957.088954
|
1793785757.088954
|
|
23624
|
Spaceship Game by @joebracken | Stardance
|
joebracken
|
0
|
47.35
|
0
|
[]
|
[{"post_id": 75389, "ts": "202 [{"post_id": 75389, "ts": "2026-09-29T22:11:22Z", "hours": 3.3747, "text": "It sure has been a while and I dont know when this thing even ends so I want to ship soon. All I have done was fix a minor bug that I have had since the game could work and make the UIs for the menu and level selection screens look better."}, {"post_id": 56826, "ts": "2026-08-28T19:18:23Z", "hours": 7.9139, "text": "I have done a lot since my last log. Most of my time was spent adding cracks to the asteroids depending on their health, this part was unreasonably hard. You would think it is as simple as adding lines from random points on the circumference to the centre, no. I had to have three different kinds of lines, create segments of each full crack using 2 or 3 kinds of lines, then only draw them depending on the health. Ok it does not sound as hard as it was, it took ages to get a good enough look. I then changed the ship movement so there is now a thrust and brake upgrade in ship upgrades. I also just added a pause feature while playing to exit back to the menu or just pause it I guess. Thats it for now gotta think of more ideas to add"}, {"post_id": 49849, "ts": "2026-08-18T19:59:52Z", "hours": 4.8997, "text": "I hate AI. I had decided to draw a background using polygons and lines, (very bad idea). I got a general layout done with about 100 lines of code and most of which was just variables of coordinates. Its get very confusing very quick. So I decided why not just give el gpt all of these coordinates and lines and get it to join them into one big polygon to simplify the code. AI sucks, I think I spent about 5 hours just typing prompts to get it to understand (it never did). So I decided to make the polygon myself and just get it to calculate coordinates, it could do them one at a time very easily, but any more and it would make points up. Desmos came to the rescue for intersection points. Other than those polygons I made the stars look better, added turn speed upgrade, made asteroids slower. I still need to finish the home screen and do the others."}, {"post_id": 46020, "ts": "2026-08-12T22:08:34Z", "hours": 3.6975, "text": "I have not been very consistant with coding recently so not much has been done. I started drawing the buttons in the level select screen with a for loop instead of individually. Got a new colour palette ready and some new fonts but have not yet decided on what I should use each colour and font on so the UI look terrible right now. What I spent most of the time on was make stars in the background. I spawn 200 stars randomly across the screen with a random depth as well(makes it look cool), I then calculate the speed using the depth as well and in the future I will make the stars twinkle so size and brightness will depend on depth. The stars look 3d when they move and I also make them move in the opposite direction to the ship when playing to make the ship look like its actually moving. I might change how the ship moves in the future. Sorry for typing so much I wasn’t bothered to think about what I was writing beforehand."}, {"post_id": 42947, "ts": "2026-08-07T22:42:55Z", "hours": 1.535, "text": "I haven’t coded in like a week so I dont remember what changed but I know I made the buy buttons in garage no longer all say max once I max one out."}, {"post_id": 37877, "ts": "2026-07-30T21:16:19Z", "hours": 1.0642, "text": "I changed how the asteroids spawn on the screen. It used to be they just spawn in a random place with a random angle and random speed (all with relevant parameters). Now they spawn at a set x but still the same random y, speed and angle and they spawn one at a time with intervals that change depending on the level. This did make the levels easier so I will be adding harder ones in the future"}, {"post_id": 37717, "ts": "2026-07-30T17:00:18Z", "hours": 3.0053, "text": "Well something happened with my last devlog and it just didn’t post it seems so this one covers me fixing the UI in garage and adding a new upgrade; fireRate. I change the way you shoot lasers. It is no longer click to shoot, you have to hold space and there is an interval between laser shots that gets reduced when you shoot. I was right though with the garage, I made zero changes to garage to make the new upgrade. Also finally added a way to get infinite money to make it easier for me to test."}, {"post_id": 35397, "ts": "2026-07-26T19:28:01Z", "hours": 4.1206, "text": "Ok I was wrong the rest has not been “more relaxing”. I knew I would have to optimise the code in garage but I didn’t know it would take so much effort. I combined the three upgrade states into one function that uses the screen name as the key to each section of the library to get the needed information. I also spent ages on a for loop to make blocks for each upgrade so adding them should be easier. The event handle function also works for every upgrade no more piles of if statements. Now I will be focusing on fixing the UI and adding upgrades."}, {"post_id": 33777, "ts": "2026-07-23T23:16:30Z", "hours": 1.7628, "text": "Upgrades finally work now so the rest should be more relaxing. I had to change all my vars into dictionaries so I could use them in the garage file without any circles. I then just added them into the handle events in a load of if statements which may not be the most optimal but I am lazy. Finally beat level 3 with max upgrades. Getting harder to test now so I might have to do something about that."}, {"post_id": 32533, "ts": "2026-07-21T19:28:27Z", "hours": 2.7306, "text": "Spent absolutely forever making the garage look better and made it capable to be updated with more upgrades. As of now I have the code sorted in garage and I like the design but it needs a lot of work still."}, {"post_id": 30706, "ts": "2026-07-18T14:34:46Z", "hours": 1.6528, "text": "Made buttons look cooler by fixing the colouring and making them slightly smaller when mouse is hovering over. Added a coins system that adds either 100, 200 or 500 for beating level 1, 2 or 3 and a fifth for losing. Still need to add some upgrades and make the game just look better"}, {"post_id": 29689, "ts": "2026-07-16T19:17:54Z", "hours": 2.0786, "text": "Ok I did what I said I was too lazy to do, I put each screen into its own file in a different folder inside the main one. Basically just copied the new functions I made over and I changed the way a new state is called slightly. now main looks very clean I got rid of a lot of functions just to write them again because I got confused. Turns out I didn’t need a whole function. Game finally works again now and hopefully I can just start adding features now."}, {"post_id": 28928, "ts": "2026-07-15T15:16:31Z", "hours": 1.4344, "text": "I have finally fixed all the functions and the layout of the code, game more or less works, need to finalise levels, update screens, and add more to the garage(upgrades). But I am now thinking cause the game is getting much bigger I could have different files for each screen, I probably should do that but I am too lazy."}, {"post_id": 28021, "ts": "2026-07-14T00:44:25Z", "hours": 2.7317, "text": "Fixed collision with the laser and asteroid so it detects the full laser polygon. I then realised I need to completely change the layout of my game again. So I deleted the whole running loop and put in what the layout should be. Now I am in the process of getting all the functions right which will take a while."}, {"post_id": 24901, "ts": "2026-07-08T19:08:45Z", "hours": 1.1375, "text": "the asteroids movement is better now I think, they move left to right with an allowance of 40 degrees up or down. Asteroids can now be shot by laser but only if the back coordinates intersect with the circles of the asteroids. Text displays the level, health and number of asteroids left now."}, {"post_id": 24753, "ts": "2026-07-08T15:10:21Z", "hours": 4.2119, "text": "Ok so I have been very busy with stardance problems so I was just coding when I could. I didn’t want to make a devlog till I had the general game started. I will be working on this game for quite some time and will keep improving the game. So far I have made a spaceship class and a spaceship that can fly and speeds up to a maximum speed and bounces of the walls. I have another asteroid class, there is an x amount of asteroids that fly around the screen from left to right and take 10 health away from the players 100 until they die. I am working on the asteroids getting destroyed now. I made the ship shoot lasers when you press space yesterday, this part probably took the longest cause I’m stupid."}]...
|
Title: Spaceship Game by @joebracken | Stardance
Title: Spaceship Game by @joebracken | Stardance
Devlogs:
Ok so I have been very busy with stardance problems so I was just coding when I could. I didn’t want to make a devlog till I had the general game started. I will be working on this game for quite some time and will keep improving the game. So far I have made a spaceship class and a spaceship that can fly and speeds up to a maximum speed and bounces of the walls. I have another asteroid class, there is an x amount of asteroids that fly around the screen from left to right and take 10 health away from the players 100 until they die. I am working on the asteroids getting destroyed now. I made the ship shoot lasers when you press space yesterday, this part probably took the longest cause I’m stupid.
the asteroids movement is better now I think, they move left to right with an allowance of 40 degrees up or down. Asteroids can now be shot by laser but only if the back coordinates intersect with the circles of the asteroids. Text displays the level, health and number of asteroids left now.
Fixed collision with the laser and asteroid so it detects the full laser polygon. I then realised I need to completely change the layout of my game again. So I deleted the whole running loop and put in what the layout should be. Now I am in the process of getting all the functions right which will take a while.
I have finally fixed all the functions and the layout of the code, game more or less works, need to finalise levels, update screens, and add more to the garage(upgrades). But I am now thinking cause the game is getting much bigger I could have different files for each screen, I probably should do that but I am too lazy.
Ok I did what I said I was too lazy to do, I put each screen into its own file in a different folder inside the main one. Basically just copied the new functions I made over and I changed the way a new state is called slightly. now main looks very clean I got rid of a lot of functions just to write them again because I got confused. Turns out I didn’t need a whole function. Game finally works again now and hopefully I can just start adding features now.
Made buttons look cooler by fixing the colouring and making them slightly smaller when mouse is hovering over. Added a coins system that adds either 100, 200 or 500 for beating level 1, 2 or 3 and a fifth for losing. Still need to add some upgrades and make the game just look better
Spent absolutely forever making the garage look better and made it capable to be updated with more upgrades. As of now I have the code sorted in garage and I like the design but it needs a lot of work still.
Upgrades finally work now so the rest should be more relaxing. I had to change all my vars into dictionaries so I could use them in the garage file without any circles. I then just added them into the handle events in a load of if statements which may not be the most optimal but I am lazy. Finally beat level 3 with max upgrades. Getting harder to test now so I might have to do something about that.
Ok I was wrong the rest has not been “more relaxing”. I knew I would have to optimise the code in garage but I didn’t know it would take so much effort. I combined the three upgrade states into one function that uses the screen name as the key to each section of the library to get the needed information. I also spent ages on a for loop to make blocks for each upgrade so adding them should be easier. The event handle function also works for every upgrade no more piles of if statements. Now I will be focusing on fixing the UI and adding upgrades.
Well something happened with my last devlog and it just didn’t post it seems so this one covers me fixing the UI in garage and adding a new upgrade; fireRate. I change the way you shoot lasers. It is no longer click to shoot, you have to hold space and there is an interval between laser shots that gets reduced when you shoot. I was right though with the garage, I made zero changes to garage to make the new upgrade. Also finally added a way to get infinite money to make it easier for me to test.
I changed how the asteroids spawn on the screen. It used to be they just spawn in a random place with a random angle and random speed (all with relevant parameters). Now they spawn at a set x but still the same random y, speed and angle and they spawn one at a time with intervals that change depending on the level. This did make the levels easier so I will be adding harder ones in the future
I haven’t coded in like a week so I dont remember what changed but I know I made the buy buttons in garage no longer all say max once I max one out.
I have not been very consistant with coding recently so not much has been done. I started drawing the buttons in the level select screen with a for loop instead of individually. Got a new colour palette ready and some new fonts but have not yet decided on what I should use each colour and font on so the UI look terrible right now. What I spent most of the time on was make stars in the background. I spawn 200 stars randomly across the screen with a random depth as well(makes it look cool), I then calculate the speed using the depth as well and in the future I will make the stars twinkle so size and brightness will depend on depth. The stars look 3d when they move and I also make them move in the opposite direction to the ship when playing to make the ship look like its actually moving. I might change how the ship moves in the future. Sorry for typing so much I wasn’t bothered to think about what I was writing beforehand.
I hate AI. I had decided to draw a background using polygons and lines, (very bad idea). I got a general layout done with about 100 lines of code and most of which was just variables of coordinates. Its get very confusing very quick. So I decided why not just give el gpt all of these coordinates and lines and get it to join them into one big polygon to simplify the code. AI sucks, I think I spent about 5 hours just typing prompts to get it to understand (it never did). So I decided to make the polygon myself and just get it to calculate coordinates, it could do them one at a time very easily, but any more and it would make points up. Desmos came to the rescue for intersection points. Other than those polygons I made the stars look better, added turn speed upgrade, made asteroids slower. I still need to finish the home screen and do the others.
I have done a lot since my last log. Most of my time was spent adding cracks to the asteroids depending on their health, this part was unreasonably hard. You would think it is as simple as adding lines from random points on the circumference to the centre, no. I had to have three different kinds of lines, create segments of each full crack using 2 or 3 kinds of lines, then only draw them depending on the health. Ok it does not sound as hard as it was, it took ages to get a good enough look. I then changed the ship movement so there is now a thrust and brake upgrade in ship upgrades. I also just added a pause feature while playing to exit back to the menu or just pause it I guess. Thats it for now gotta think of more ideas to add
It sure has been a while and I dont know when this thing even ends so I want to ship soon. All I have done was fix a minor bug that I have had since the game could work and make the UIs for the menu and level selection screens look better....
|
1793458486.354923
|
1794063286.354923
|
|
59857
|
The Code of the Universe by @Luna1818 | Stardance
|
Luna1818
|
0
|
43.16
|
0
|
[]
|
[{"post_id": 75384, "ts": "202 [{"post_id": 75384, "ts": "2026-09-29T21:58:18Z", "hours": 6.5808, "text": "Today I FINALLY got StellarQuiz fully working!! YAYYY It took me way longer than expected because I had to rework part of the Gemini API integration. The main problem was the 503 error, which kept showing up constantly whenever Gemini was temporarily unavailable or overloaded, plus a few other API-related issues that I had to figure out along the way. So I had to spend some time improving the error (boriiing). It can now recognize different API responses, automatically retry when Gemini is temporarily unavailable, and handle the daily Gemini usage limit separately. If that limit is reached, the user gets a custom screen instead of a random technical error. I also separated StellarQuiz into its own Gemini API project, so the whole system is much more organized and reliable now. Soooo StellarQuiz is officially done!! yippie yippie yippie Extra to that, I already started working on the Space Culture section. It’s actually almost finished tbh, I’m mainly missing the multimedia part and some content before I can call it complete. Later today I’ll show you guys the result of the Missions section too! That one is going to require a little bit of research first because I want the information and structure to actually make sense instead of just filling the page with random stuff lolll Once I work on it, I’ll update you guys on how it went and explain the logic I decided to use for Missions. Getting REEEALLY close to finishing the entire project now let’s goooo"}, {"post_id": 74751, "ts": "2026-09-28T04:23:54Z", "hours": 3.0125, "text": "Today I FINALLY finished uploading and organizing all the images for the STEAM sections, and I also got StellarQuiz working!! Btw, StellarQuiz is the interactive quiz section of the website, where users can answer questions from different STEAM topics, get randomized answer choices, and see their results at the end. P.S. StellarQuiz has definitely been the most complicated part of the project so far 😭 so I did need some help from AI while figuring out parts of the programming, but I still had to test everything, fix bugs, and understand how it all worked. I still want to improve the aesthetics a little, but I’m honestly really happy with the progress. Definitely learned something new today lolllll. I wish I could give you guys a preview of how StellarQuiz looks when it displays the quiz itself, but I ran out of tokens for the free version of Gemini, which is the API I’m currently using for StellarQuiz and Rovertita (the website’s AI space assistant that answers any questions users have about space). So overall, I’m now only missing two sections of my website, Missions section and Space Culture, which I’ll later update about them (tomorrow lol)."}, {"post_id": 74343, "ts": "2026-09-27T06:29:01Z", "hours": 4.1633, "text": "Still working on all the images for the STEAM sections. I’ve been uploading, organizing, and fixing the visual content so everything looks polished. It’s taking forever lol, but I’m finally getting really close to finishing this part (I hope so)"}, {"post_id": 73832, "ts": "2026-09-26T03:43:35Z", "hours": 2.4617, "text": "Today I’ve been working on uploading and organizing the images for the STEAM content sections, which took way longer than I expected, but I’m almost done with them now. The website is finally looking way more complete and everything is starting to come together (wish me luck lol)"}, {"post_id": 72497, "ts": "2026-09-23T02:34:35Z", "hours": 26.9444, "text": "Been working a lot on The Code of the Universe lately, I’ve been improving the website in VS Code, fixing bugs, working on the STEAM sections, animations, navigation, responsive design, and the quiz area. Some parts are taking way longer than expected lol, but the project is finally starting to come together and I’m really happy with the progress :)"}]...
|
Title: The Code of the Universe by @Luna1818 | Sta Title: The Code of the Universe by @Luna1818 | Stardance
Devlogs:
Been working a lot on The Code of the Universe lately, I’ve been improving the website in VS Code, fixing bugs, working on the STEAM sections, animations, navigation, responsive design, and the quiz area. Some parts are taking way longer than expected lol, but the project is finally starting to come together and I’m really happy with the progress :)
Today I’ve been working on uploading and organizing the images for the STEAM content sections, which took way longer than I expected, but I’m almost done with them now. The website is finally looking way more complete and everything is starting to come together (wish me luck lol)
Still working on all the images for the STEAM sections. I’ve been uploading, organizing, and fixing the visual content so everything looks polished. It’s taking forever lol, but I’m finally getting really close to finishing this part (I hope so)
Today I FINALLY finished uploading and organizing all the images for the STEAM sections, and I also got StellarQuiz working!! Btw, StellarQuiz is the interactive quiz section of the website, where users can answer questions from different STEAM topics, get randomized answer choices, and see their results at the end. P.S. StellarQuiz has definitely been the most complicated part of the project so far 😭 so I did need some help from AI while figuring out parts of the programming, but I still had to test everything, fix bugs, and understand how it all worked. I still want to improve the aesthetics a little, but I’m honestly really happy with the progress. Definitely learned something new today lolllll. I wish I could give you guys a preview of how StellarQuiz looks when it displays the quiz itself, but I ran out of tokens for the free version of Gemini, which is the API I’m currently using for StellarQuiz and Rovertita (the website’s AI space assistant that answers any questions users have about space). So overall, I’m now only missing two sections of my website, Missions section and Space Culture, which I’ll later update about them (tomorrow lol).
Today I FINALLY got StellarQuiz fully working!! YAYYY It took me way longer than expected because I had to rework part of the Gemini API integration. The main problem was the 503 error, which kept showing up constantly whenever Gemini was temporarily unavailable or overloaded, plus a few other API-related issues that I had to figure out along the way. So I had to spend some time improving the error (boriiing). It can now recognize different API responses, automatically retry when Gemini is temporarily unavailable, and handle the daily Gemini usage limit separately. If that limit is reached, the user gets a custom screen instead of a random technical error. I also separated StellarQuiz into its own Gemini API project, so the whole system is much more organized and reliable now. Soooo StellarQuiz is officially done!! yippie yippie yippie Extra to that, I already started working on the Space Culture section. It’s actually almost finished tbh, I’m mainly missing the multimedia part and some content before I can call it complete. Later today I’ll show you guys the result of the Missions section too! That one is going to require a little bit of research first because I want the information and structure to actually make sense instead of just filling the page with random stuff lolll Once I work on it, I’ll update you guys on how it went and explain the logic I decided to use for Missions. Getting REEEALLY close to finishing the entire project now let’s goooo...
|
1793029940.630324
|
1793634740.630324
|
|
61921
|
imposter by @taco_taim | Stardance
|
taco_taim
|
1
|
34.45
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-26T19:10:40Z", "hours": 34.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "imposter is a color reaction game made in python. every level has 3 elements rectangles or circles. one of the elements is in a different color, you need to pick your suspect with a time limit. i managed to make a script to read the level files. and a cool tutorial in pygame (its not easy) and I’m really proud of it :3 to play the game you will need to clone the repo ‘git clone https://github.com/thearmadiliking/imposter ’, install python and pygame. to run it run main.py. and don’t forget to give the repo a star :3", "repo": "https://github.com/thearmadiliking/imposter", "demo": "https://github.com/thearmadiliking/imposter/releases"}]...
|
[{"post_id": 75380, "ts": "202 [{"post_id": 75380, "ts": "2026-09-29T21:43:49Z", "hours": 0.4522, "text": "i added a release…."}, {"post_id": 74094, "ts": "2026-09-26T17:38:30Z", "hours": 8.9014, "text": "i did all of the polishing for the game and I’m ready to ship!!!"}, {"post_id": 73302, "ts": "2026-09-24T20:07:01Z", "hours": 1.6467, "text": "i finished the tutorial animation the only thing left for it is the voiceover."}, {"post_id": 73245, "ts": "2026-09-24T17:33:58Z", "hours": 2.9456, "text": "i started working on the totorial"}, {"post_id": 73075, "ts": "2026-09-24T10:12:05Z", "hours": 11.3025, "text": "i added a lvl picker and polished the overall game loop (and repairing the ship)"}, {"post_id": 70785, "ts": "2026-09-19T19:18:20Z", "hours": 1.2122, "text": "making a tui setup menu"}, {"post_id": 70736, "ts": "2026-09-19T17:49:10Z", "hours": 2.8361, "text": "i added the gameplay after you lode the level."}, {"post_id": 70610, "ts": "2026-09-19T13:30:40Z", "hours": 5.5264, "text": "i made a level reading test that takes a .lvl file and extracts the info and format it."}]...
|
Title: imposter by @taco_taim | Stardance
Devlogs Title: imposter by @taco_taim | Stardance
Devlogs:
i made a level reading test that takes a .lvl file and extracts the info and format it.
i added the gameplay after you lode the level.
making a tui setup menu
i added a lvl picker and polished the overall game loop (and repairing the ship)
i started working on the totorial
i finished the tutorial animation the only thing left for it is the voiceover.
i did all of the polishing for the game and I’m ready to ship!!!
i added a release….
Ships:
imposter is a color reaction game made in python. every level has 3 elements rectangles or circles. one of the elements is in a different color, you need to pick your suspect with a time limit. i managed to make a script to read the level files. and a cool tutorial in pygame (its not easy) and I’m really proud of it :3 to play the game you will need to clone the repo ‘git clone https://github.com/thearmadiliking/imposter ’, install python and pygame. to run it run main.py. and don’t forget to give the repo a star :3...
|
1793415197.2342353
|
1793501597.2342353
|
|
60379
|
Ashfall by @x3 | Stardance
|
x3
|
0
|
7.93
|
0
|
[]
|
[{"post_id": 75377, "ts": "202 [{"post_id": 75377, "ts": "2026-09-29T21:37:22Z", "hours": 1.2733, "text": "2 weeks later…. ashfall is finally taking shape It’s been about 2 weeks since my last devlog, and through this time period, I had been contemplating about my decisions and future while things in my irl life were overwhelming me. After coming back from this break, I realised the foundation of ashfall wasnt at all how i imagined it initially when first creating ashfall in stardance. So….. I present to you: Ashfall v2 Whats new: revamp of project architecture built world/zone/location JSON database structure made data.py to dynamically load location data Loading mechanic, and improved error handling At this point most of Ashfall is just a skeleton of what it’s meant to be since almost all the data driven architecture consists of empty JSON files, with a singular populated JSON file for testing loading Getting the loader to work was hellish too… I kept on being unable to return the data within the populated JSON file from the data.py loader, this recurring error “path doesn’t exist?: Errno….” just kept on coming back to haunt me firstly, it was the construction of the file path with the parameters passed into the JSON loader within data.py 🥀 I spent way too long tryna figure out exactly why my game loop couldnt find a file that was literally within my project but after fixing the path post brainstorming, i managed to get the JSON data returned properly as a dictionary instead of ‘None’ it was a small fix but seeing my data.open_location(\"world1\", \"blackwatch\", \"armoury\") actually retrun data felt euphoric for some reason"}, {"post_id": 68853, "ts": "2026-09-15T21:29:04Z", "hours": 2.2411, "text": "4 days. One inventory system. The first real system, ashfall grows Whats new: Persistent inventory storage inventory mechanics Autosaving I seriously thought I had the inventory system sorted on my first commit, until I realised the inventory dictionary was only being changed in memory and wasnt actually being persisted to the JSON save file. Ngl, this whole thing really showed me that just knowing python syntax and how python works isnt enough. That lowkey sent me through a 4 day spiral of hell of figuring out how my game state actually flows between main.py, game_loop.py, and inventory.py, functions, dictionaries and the save files. Once I built a mental model of the data moving through the program everything lowkey just started clicking- I could finally understand why things werent doing running the way they were supposed to instead of changing code and hoping I ended up implemented inventory persistence, item inspection and some basic error handling which also made debugging way easier when i figured out i mismatched parameters somewhere Honestly, this was probably the biggest learning chunk I’ve had with Ashfall so far. I’m starting to feel like I’m actually understanding the architecture behind the game rather than just making individual features work, and I’m proud of that Now i want to keep building it piece by piece until theres an actual playable RPG here truly then i can be hella crazy with the lore and story this is exhilarating, get excited"}, {"post_id": 66213, "ts": "2026-09-11T21:55:34Z", "hours": 2.3925, "text": "What’s new hooked up lootdrops() to fetch a randomised amount of random drops from items.json added a while game loop with an action menu so the game stays running until you quit The current system You pick a class, set up your character with stats based on your class, save your progress to a JSON file, from there you explore the world starting with the outskirts, check your stats, and interact with an NPC. Next steps adding inventory mechanics"}, {"post_id": 65011, "ts": "2026-09-09T20:05:07Z", "hours": 2.0267, "text": "This is my first project, my first devlog. TL;DR : I created a main menu action system, where players can create their characters or load them, characters can have their own classes, and each class has their stats, character stats are stored in a JSON file. lil bit of backstory : I’m learning basic python in school, and for a while I’ve always asked myself “What’s stopping me from being better than everyone else here?”, So after I spent countless hours with that short fuelled motivation in tutorial hell, where i relentlessly watched videos on “how to start my dev journey” etc., while not actually implementing anything, and as a result I didn’t really retain knowledge. So with Stardance, I plan actually doing something productive this time For the past 2 -3 days I’ve been trying to get my head around game loops and file handling and code structure. Honestly, this has probably been the hardest part so far (even though I didnt get far), because I’m starting to realise there’s a big difference between knowing programming concepts than actually putting them into a project 😭😭😭😭😭😭 I had to search a lot of things up, and figure out how to move forward, and for a while, I’ve had this bug where the main action menu would keep looping and after realising it was all because a couple of logic errors. This is only the beginning of Ashfall, Expect a lot better from me soon"}]...
|
Title: Ashfall by @x3 | Stardance
Devlogs:
This i Title: Ashfall by @x3 | Stardance
Devlogs:
This is my first project, my first devlog. TL;DR : I created a main menu action system, where players can create their characters or load them, characters can have their own classes, and each class has their stats, character stats are stored in a JSON file. lil bit of backstory : I’m learning basic python in school, and for a while I’ve always asked myself “What’s stopping me from being better than everyone else here?”, So after I spent countless hours with that short fuelled motivation in tutorial hell, where i relentlessly watched videos on “how to start my dev journey” etc., while not actually implementing anything, and as a result I didn’t really retain knowledge. So with Stardance, I plan actually doing something productive this time For the past 2 -3 days I’ve been trying to get my head around game loops and file handling and code structure. Honestly, this has probably been the hardest part so far (even though I didnt get far), because I’m starting to realise there’s a big difference between knowing programming concepts than actually putting them into a project 😭😭😭😭😭😭 I had to search a lot of things up, and figure out how to move forward, and for a while, I’ve had this bug where the main action menu would keep looping and after realising it was all because a couple of logic errors. This is only the beginning of Ashfall, Expect a lot better from me soon
What’s new hooked up lootdrops() to fetch a randomised amount of random drops from items.json added a while game loop with an action menu so the game stays running until you quit The current system You pick a class, set up your character with stats based on your class, save your progress to a JSON file, from there you explore the world starting with the outskirts, check your stats, and interact with an NPC. Next steps adding inventory mechanics
4 days. One inventory system. The first real system, ashfall grows Whats new: Persistent inventory storage inventory mechanics Autosaving I seriously thought I had the inventory system sorted on my first commit, until I realised the inventory dictionary was only being changed in memory and wasnt actually being persisted to the JSON save file. Ngl, this whole thing really showed me that just knowing python syntax and how python works isnt enough. That lowkey sent me through a 4 day spiral of hell of figuring out how my game state actually flows between main.py, game_loop.py, and inventory.py, functions, dictionaries and the save files. Once I built a mental model of the data moving through the program everything lowkey just started clicking- I could finally understand why things werent doing running the way they were supposed to instead of changing code and hoping I ended up implemented inventory persistence, item inspection and some basic error handling which also made debugging way easier when i figured out i mismatched parameters somewhere Honestly, this was probably the biggest learning chunk I’ve had with Ashfall so far. I’m starting to feel like I’m actually understanding the architecture behind the game rather than just making individual features work, and I’m proud of that Now i want to keep building it piece by piece until theres an actual playable RPG here truly then i can be hella crazy with the lore and story this is exhilarating, get excited
2 weeks later…. ashfall is finally taking shape It’s been about 2 weeks since my last devlog, and through this time period, I had been contemplating about my decisions and future while things in my irl life were overwhelming me. After coming back from this break, I realised the foundation of ashfall wasnt at all how i imagined it initially when first creating ashfall in stardance. So….. I present to you: Ashfall v2 Whats new: revamp of project architecture built world/zone/location JSON database structure made data.py to dynamically load location data Loading mechanic, and improved error handling At this point most of Ashfall is just a skeleton of what it’s meant to be since almost all the data driven architecture consists of empty JSON files, with a singular populated JSON file for testing loading Getting the loader to work was hellish too… I kept on being unable to return the data within the populated JSON file from the data.py loader, this recurring error “path doesn’t exist?: Errno….” just kept on coming back to haunt me firstly, it was the construction of the file path with the parameters passed into the JSON loader within data.py 🥀 I spent way too long tryna figure out exactly why my game loop couldnt find a file that was literally within my project but after fixing the path post brainstorming, i managed to get the JSON data returned properly as a dictionary instead of ‘None’ it was a small fix but seeing my data.open_location("world1", "blackwatch", "armoury") actually retrun data felt euphoric for some reason...
|
1793033456.0330114
|
1793638256.0330114
|
|
66394
|
Domus by @siemvk | Stardance
|
siemvk
|
0
|
3.06
|
0
|
[]
|
[{"post_id": 75376, "ts": "202 [{"post_id": 75376, "ts": "2026-09-29T21:35:56Z", "hours": 0.8083, "text": "It now imports pages from the app/modules/modulename/pages/ dir (screenshot sucks, macos broke )"}, {"post_id": 74873, "ts": "2026-09-28T14:13:41Z", "hours": 0.4614, "text": "added the navbar"}, {"post_id": 74669, "ts": "2026-09-27T23:17:22Z", "hours": 1.795, "text": "got auth and stuff"}]...
|
Title: Domus by @siemvk | Stardance
Devlogs:
got Title: Domus by @siemvk | Stardance
Devlogs:
got auth and stuff
added the navbar
It now imports pages from the app/modules/modulename/pages/ dir (screenshot sucks, macos broke )...
|
1793098299.643536
|
1793703099.643536
|
|
66875
|
isInBibleBot by @siemvk | Stardance
|
siemvk
|
0
|
0.79
|
0
|
[]
|
[{"post_id": 75375, "ts": "202 [{"post_id": 75375, "ts": "2026-09-29T21:33:19Z", "hours": 0.7892, "text": "I got a bible imported! i would make a better screenshot but my macos screenshot tool broke"}]...
|
Title: isInBibleBot by @siemvk | Stardance
Devlog Title: isInBibleBot by @siemvk | Stardance
Devlogs:
I got a bible imported! i would make a better screenshot but my macos screenshot tool broke...
|
1793105327.4883914
|
1793710127.4883914
|
|
21678
|
PyDesk by @Gooderswills | Stardance
|
Gooderswills
|
3
|
13.0
|
52
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T21:38:04Z", "hours": 7.0, "multiplier": 4.22, "payout": 28, "blessing": "neutral", "text": "This has been a massive improvement to PyDesk, I have added an itch.io page, a website, many dev features (contributing guide, ticket stats) and a whole load of minor improvements, bug fixes and enhancements, check the github commit history for the full details or check the last devlogs, please look at the website and contributing guide if you want to help.", "repo": "https://github.com/Gooderswills/PyDesk", "demo": "https://github.com/Gooderswills/PyDesk/releases"}, {"ship_num": 2, "ts": "2026-09-13T17:21:08Z", "hours": 3.0, "multiplier": 4.32, "payout": 15, "blessing": "neutral", "text": "I have spent a lot of time over the past days/maybe a week adding features and enhancing the overall game. Some of the stand out features are adding saving and loading of the game, clearing the terminal so it looks more organised, enhancing the readme, adding lots more tickets (around 20 more) and fixing varius bugs. To see the full list of updates checkout the github commits or just look at my previous devlogs. In summary I have enhanced the game and added more features so it is better to play. If you are going to play it then go to the github releases (or click try project below) and download the latest release zip, then extract it and run the exe. It will make a json file containing your save. Hope you enjoy the latest updates!", "repo": "https://github.com/Gooderswills/PyDesk", "demo": "https://github.com/Gooderswills/PyDesk/releases"}, {"ship_num": 3, "ts": "2026-08-01T21:06:38Z", "hours": 3.0, "multiplier": 2.73, "payout": 9, "blessing": "neutral", "text": "This is the initial release of PyDesk, a text based IT simulator, at the moment you can play through one day in the game with a variety of tickets. Hope you enjoy the game. To play go to the github release and follow the instructions there.", "repo": "https://github.com/Gooderswills/PyDesk", "demo": "https://github.com/Gooderswills/PyDesk/releases"}]...
|
[{"post_id": 75374, "ts": "202 [{"post_id": 75374, "ts": "2026-09-29T21:32:32Z", "hours": 3.2956, "text": "I have been back at it again, I have added a contributing guide so now you can help out with PyDesk , I added a stats file for developers/me (with the help of gemini), fixed minor bugs/typos, implemented day logic that saves,added over 15 new tickets so now over 45 tickets in the game. Now one of the biggest updated PyDesk now has a website and an itch.io Store page. On the website you can try out a ticket in the game and many more minor improvements/fixes."}, {"post_id": 72769, "ts": "2026-09-23T18:24:22Z", "hours": 1.4369, "text": "I have been working hard again, here is what I have done. I have added 4 more tickets and added a stats.py file to display how many tickets there are and more! (Gemini helped with this) I also updated the python to exe guide, updated the tickets to display their ID now in the game (major oversight by me) and I have added a contributing guide so if you want to help me make this game then please do! contributing.md"}, {"post_id": 70716, "ts": "2026-09-19T17:17:05Z", "hours": 1.9847, "text": "Over the past couple of days I have been busy, I have added 5 new tickets to the database, fixed a few minor bugs and also attempted to get PyDesk running in the web, this doesn’t work as of now, but I have done something better, we are now on itch.io! https://gooderswills.itch.io/pydesk Please check it out and let me know what you think, see you soon for another devlog coming up soon!"}, {"post_id": 67513, "ts": "2026-09-13T17:08:18Z", "hours": 0.3108, "text": "I have added a guide on how to convert a python file to an exe for anyone that wants to read it, it is also for me so I don’t forget how to do it later lol"}, {"post_id": 67499, "ts": "2026-09-13T16:46:22Z", "hours": 2.1683, "text": "I have been doing a lot over the past couple days/ maybe a week. I have added 17 new tickets to the database, I fixed a case sensitive bug, added an end/close message to the game, updated the clear terminal command because the old one was outdated, I fixed typos in some of the tickets (hopefully all of them) and I also fixed a few minor bugs and added a few quality of life improvements. All these new features are now in the latest release on github so you can play it now. If you do play it make sure to extract the zip before playing so that the game functions correctly and also so that your game can progress and save."}, {"post_id": 60140, "ts": "2026-09-02T10:04:04Z", "hours": 0.4208, "text": "I updated the readme, as I added an image to it and I added a link to my website so people can view more of my work, I then added more tickets to the tickets database and then I made a new release so that the most recent updates are reflected on the github release and so people can play the latest version of PyDesk."}, {"post_id": 55227, "ts": "2026-08-26T21:04:01Z", "hours": 0.5467, "text": "I added saving to a json file so that players can save progress through different playthroughs, I also added so that after every ticket it clears the terminal this is so that it is less cluttered and looks more organised"}, {"post_id": 38902, "ts": "2026-08-01T14:15:27Z", "hours": 1.0564, "text": "I added shift time to the game so that each ticket takes a certain amount of time and in a day you have 8 hours so you have to see how many tickets you can get through in the time, I restructured the ticketing randomiser system so that now there are no repeats, when you get a ticket wrong, now it takes off £5 from your paycheck, I added more summaries to the menus, after your shift is over one big summary, added a random load time between tickets to make it feel more realistic. Getting close to release now, just need to add a few more tickets and maybe a day system and a saving system. :)"}, {"post_id": 29489, "ts": "2026-07-16T13:44:02Z", "hours": 0.3636, "text": "I changed the name of the game so that it is better and sounds more professional. I also added input validation to the main python file to prevent the game breaking if you accidentally type the wrong character. I added another ticket as well. Overall the game is coming together nicely and I just need to add more tickets and maybe tweak the gameplay loop a bit so that it functions better."}, {"post_id": 20851, "ts": "2026-07-02T15:51:09Z", "hours": 0.6531, "text": "I added two more tickets, added a priority level to each ticket to add more depth to game, corrected readme. I also made the game fully functional by ensuring the gameplay loop worked, added score and money so it is more fun and done some playtests to ensure it works as expected"}, {"post_id": 20252, "ts": "2026-07-01T19:59:33Z", "hours": 0.7517, "text": "I realised that custom tkinter is too hard lol so I will just be doing a text based game for now, I might expand to having ui in the future. I also added the ticket file so that the ticket options can be seperate from the rest of the code. I implemented the random ticket functionality so that the game is playable. I added .gitignore so that the pycache is not pushed to github. Tweaked the readme to reflect changes and ensured game has basic functionality."}, {"post_id": 16516, "ts": "2026-06-26T21:23:52Z", "hours": 0.2794, "text": "I have done some research and instead of doing a text based game, I am going to use custom tkinter to have some ui in the game, this will make the game much better and make it look better. I installed custom tkinter and reflected the changes in the read me so that people know how to play the game."}, {"post_id": 16252, "ts": "2026-06-26T12:29:33Z", "hours": 0.3331, "text": "I have started the intro for the game and written the readme so people know how to use it. Basis of the game, still got a long way to go lol"}]...
|
Title: PyDesk by @Gooderswills | Stardance
Devlog Title: PyDesk by @Gooderswills | Stardance
Devlogs:
I have started the intro for the game and written the readme so people know how to use it. Basis of the game, still got a long way to go lol
I have done some research and instead of doing a text based game, I am going to use custom tkinter to have some ui in the game, this will make the game much better and make it look better. I installed custom tkinter and reflected the changes in the read me so that people know how to play the game.
I realised that custom tkinter is too hard lol so I will just be doing a text based game for now, I might expand to having ui in the future. I also added the ticket file so that the ticket options can be seperate from the rest of the code. I implemented the random ticket functionality so that the game is playable. I added .gitignore so that the pycache is not pushed to github. Tweaked the readme to reflect changes and ensured game has basic functionality.
I added two more tickets, added a priority level to each ticket to add more depth to game, corrected readme. I also made the game fully functional by ensuring the gameplay loop worked, added score and money so it is more fun and done some playtests to ensure it works as expected
I changed the name of the game so that it is better and sounds more professional. I also added input validation to the main python file to prevent the game breaking if you accidentally type the wrong character. I added another ticket as well. Overall the game is coming together nicely and I just need to add more tickets and maybe tweak the gameplay loop a bit so that it functions better.
I added shift time to the game so that each ticket takes a certain amount of time and in a day you have 8 hours so you have to see how many tickets you can get through in the time, I restructured the ticketing randomiser system so that now there are no repeats, when you get a ticket wrong, now it takes off £5 from your paycheck, I added more summaries to the menus, after your shift is over one big summary, added a random load time between tickets to make it feel more realistic. Getting close to release now, just need to add a few more tickets and maybe a day system and a saving system. :)
I added saving to a json file so that players can save progress through different playthroughs, I also added so that after every ticket it clears the terminal this is so that it is less cluttered and looks more organised
I updated the readme, as I added an image to it and I added a link to my website so people can view more of my work, I then added more tickets to the tickets database and then I made a new release so that the most recent updates are reflected on the github release and so people can play the latest version of PyDesk.
I have been doing a lot over the past couple days/ maybe a week. I have added 17 new tickets to the database, I fixed a case sensitive bug, added an end/close message to the game, updated the clear terminal command because the old one was outdated, I fixed typos in some of the tickets (hopefully all of them) and I also fixed a few minor bugs and added a few quality of life improvements. All these new features are now in the latest release on github so you can play it now. If you do play it make sure to extract the zip before playing so that the game functions correctly and also so that your game can progress and save.
I have added a guide on how to convert a python file to an exe for anyone that wants to read it, it is also for me so I don’t forget how to do it later lol
Over the past couple of days I have been busy, I have added 5 new tickets to the database, fixed a few minor bugs and also attempted to get PyDesk running in the web, this doesn’t work as of now, but I have done something better, we are now on itch.io! https://gooderswills.itch.io/pydesk Please check it out and let me know what you think, see you soon for another devlog coming up soon!
I have been working hard again, here is what I have done. I have added 4 more tickets and added a stats.py file to display how many tickets there are and more! (Gemini helped with this) I also updated the python to exe guide, updated the tickets to display their ID now in the game (major oversight by me) and I have added a contributing guide so if you want to help me make this game then please do! contributing.md
I have been back at it again, I have added a contributing guide so now you can help out with PyDesk , I added a stats file for developers/me (with the help of gemini), fixed minor bugs/typos, implemented day logic that saves,added over 15 new tickets so now over 45 tickets in the game. Now one of the biggest updated PyDesk now has a website and an itch.io Store page. On the website you can try out a ticket in the game and many more minor improvements/fixes.
Ships:
This is the initial release of PyDesk, a text based IT simulator, at the moment you can play through one day in the game with a variety of tickets. Hope you enjoy the game. To play go to the github release and follow the instructions there.
I have spent a lot of time over the past days/maybe a week adding features and enhancing the overall game. Some of the stand out features are adding saving and loading of the game, clearing the terminal so it looks more organised, enhancing the readme, adding lots more tickets (around 20 more) and fixing varius bugs. To see the full list of updates checkout the github commits or just look at my previous devlogs. In summary I have enhanced the game and added more features so it is better to play. If you are going to play it then go to the github releases (or click try project below) and download the latest release zip, then extract it and run the exe. It will make a json file containing your save. Hope you enjoy the latest updates!
This has been a massive improvement to PyDesk, I have added an itch.io page, a website, many dev features (contributing guide, ticket stats) and a whole load of minor improvements, bug fixes and enhancements, check the github commit history for the full details or check the last devlogs, please look at the website and contributing guide if you want to help....
|
1793328746.6005065
|
1793415146.6005065
|
|
51327
|
rinnieOS by @erin3 | Stardance
|
erin3
|
2
|
17.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T20:58:44Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a WebOS for the WebOS mission, with a bookmarker app for reading notes, a calculator, settings, a calendar, and a small weather feature. It was so fun to make and I have learnt so much!", "repo": "https://github.com/rinnie3/rinnieOS", "demo": "https://rinnie3.github.io/rinnieOS/"}, {"ship_num": 2, "ts": "2026-08-21T18:26:19Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a WebOS for the first time, with 3 apps and some customisable features! I had some difficulty with using CSS for the styles, but overall, I enjoyed making my OS :D.", "repo": "https://github.com/rinnie3/rinnieOS", "demo": "https://rinnie3.github.io/rinnieOS/"}]...
|
[{"post_id": 75360, "ts": "202 [{"post_id": 75360, "ts": "2026-09-29T20:50:29Z", "hours": 3.6728, "text": "I am now finished my OS! I added a calendar app, and on the taskbar, it now shows which apps are open and is a shortcut to access each one (i am not sure how useful this is but I wanted to add a new feature)."}, {"post_id": 74571, "ts": "2026-09-27T17:29:34Z", "hours": 5.0453, "text": "I fixed many problems (which I discovered eventually) on my OS and developed the apps: bookmarker app - I added a search feature, and an edit feature to edit past notes. I also developed the calculator by changing the order of the numbers - i don’t know why I hadn’t already because the numbers were descending from 9 strangely, but… and I also added a percentage and negative/positive number function. In the settings app, I made the window colour editable as an appearance option. I want to add a few more apps, now that I have gotten the hang of creating and developing them but I hope I get it finished before Stardance challenge finishes ><"}, {"post_id": 51789, "ts": "2026-08-21T17:06:32Z", "hours": 3.0625, "text": "I now have three working apps! And a weather/calendar feature. I tried to make it more customisable by adding a settings feature where you can change the background colour, font, and whether or not to have translucent windows for the welcome and calendar windows (as even I wasn’t sure about the translucent ;D). I think I have finished my first OS! I am glad I got to code in 3 different languages as well."}, {"post_id": 50852, "ts": "2026-08-20T09:16:48Z", "hours": 2.0339, "text": "I added my first app! (it doesn’t work yet though…) I also found some problems like when I dragged the window, it kept changing size but I managed to fix them. I also made the background of the window slightly transparent, although I am not completely sure that I like it. :D"}, {"post_id": 50314, "ts": "2026-08-19T14:05:27Z", "hours": 1.0508, "text": "Continuing to improve my OS: I managed to add a door handle and a window header, but I’m not quite sure what the door handle is for… I think the window header makes it look much neater however. (^v^) I also added a close button but for some reason I can’t add an open on the window as well, so I made it come out of the rinnieOS label on the top bar."}, {"post_id": 50249, "ts": "2026-08-19T12:20:46Z", "hours": 1.6039, "text": "Making my first OS: The guide was very helpful so I have been able to develop it. I am glad I was able to work out how to use the dragging feature on my window and get the time to work. I am still working on trying to add a handle and to get it to open and close - I hope I can do it! :D"}]...
|
Title: rinnieOS by @erin3 | Stardance
Devlogs:
Ma Title: rinnieOS by @erin3 | Stardance
Devlogs:
Making my first OS: The guide was very helpful so I have been able to develop it. I am glad I was able to work out how to use the dragging feature on my window and get the time to work. I am still working on trying to add a handle and to get it to open and close - I hope I can do it! :D
Continuing to improve my OS: I managed to add a door handle and a window header, but I’m not quite sure what the door handle is for… I think the window header makes it look much neater however. (^v^) I also added a close button but for some reason I can’t add an open on the window as well, so I made it come out of the rinnieOS label on the top bar.
I added my first app! (it doesn’t work yet though…) I also found some problems like when I dragged the window, it kept changing size but I managed to fix them. I also made the background of the window slightly transparent, although I am not completely sure that I like it. :D
I now have three working apps! And a weather/calendar feature. I tried to make it more customisable by adding a settings feature where you can change the background colour, font, and whether or not to have translucent windows for the welcome and calendar windows (as even I wasn’t sure about the translucent ;D). I think I have finished my first OS! I am glad I got to code in 3 different languages as well.
I fixed many problems (which I discovered eventually) on my OS and developed the apps: bookmarker app - I added a search feature, and an edit feature to edit past notes. I also developed the calculator by changing the order of the numbers - i don’t know why I hadn’t already because the numbers were descending from 9 strangely, but… and I also added a percentage and negative/positive number function. In the settings app, I made the window colour editable as an appearance option. I want to add a few more apps, now that I have gotten the hang of creating and developing them but I hope I get it finished before Stardance challenge finishes ><
I am now finished my OS! I added a calendar app, and on the taskbar, it now shows which apps are open and is a shortcut to access each one (i am not sure how useful this is but I wanted to add a new feature).
Ships:
I made a WebOS for the first time, with 3 apps and some customisable features! I had some difficulty with using CSS for the styles, but overall, I enjoyed making my OS :D.
I made a WebOS for the WebOS mission, with a bookmarker app for reading notes, a calculator, settings, a calendar, and a small weather feature. It was so fun to make and I have learnt so much!...
|
1793486928.5012357
|
1793573328.5012357
|
|
46730
|
Perigee 3D Printer by @reyansh_tyagi12 | Stardance
|
reyansh_tyagi12
|
0
|
33.65
|
0
|
[]
|
[{"post_id": 75358, "ts": "202 [{"post_id": 75358, "ts": "2026-09-29T20:50:23Z", "hours": 1.2167, "text": "Oops… So I forgot to add an important part to my project which was the PSU, but all done now and I am ONCE AGAIN ready to submit. Also added wiring diagrams"}, {"post_id": 71444, "ts": "2026-09-20T20:40:22Z", "hours": 5.3672, "text": "This is even more awkward… Finally submitted after ages but its fine. Fingers crossed they say yes. Kept forgetting parts I needed for my BOM"}, {"post_id": 70668, "ts": "2026-09-19T15:43:29Z", "hours": 10.0489, "text": "NEW NAME I’ve decided to rebrand to Umbris becasue it’s linked to the stars and stuff so I thought it would be more on brand. Well, this is embarassing… So I still haven’t submitted for funding because I spent AGES working on my movement system and now on my BOM but I’m ABOUT to finish I swear. I just need to wrap up what I’m doing rn and submit my design so fingers crossed they approve. Seriously this time, it might be my last ever devlog if I don’t get funds for it. Thanks so much to everyone for the support, especially for my first ever hackclub event"}, {"post_id": 62840, "ts": "2026-09-06T11:29:02Z", "hours": 12.3778, "text": "RIP CUBE What I’ve done So I’m super close to being done now and my project is finally about to leave the CAD phase but I need to log my time because apparently only 10 hours will actually be counted. Anyways so, I’ve removed the frame which I spent 3 hours on 😢 but it’s fine cuz it’s all coming together. I decided on the Apogee FAT toolhead after about 3 hours of debate and I’m pretty happy with how it turned out. Literally all I have left is making the belts and pulleys to move my gantry and choosing a mobo. Thanks again for reading through this, and maybe goodbye, because I don’t know if I’m gonna get approved for my funding. In case I don’t, it’s been great working on this project and I’m really happy I got the chance to try something like this."}, {"post_id": 59477, "ts": "2026-09-01T10:46:01Z", "hours": 3.0175, "text": "CAD IS HARD Devlog 3 I didnt expect this to take so long but the outer frame is FINALLY done. Now I just need to work on adding the hardware which could take another 3-6 hours 😅. What I actually did Pretty self explanatory but I built the frame which my 3d printer will fit in and also did a little research into how I can fit the extrusions together. (Yes, I KNOW I SPENT 3 HOURS MAKING A CUBE, I’m still new to CAD so I haven’t got the hang of it yet) What I’m gonna do I’ll try finish it later today and collect my bill of materials to get my parts in. P.S. Does anyone know if writing a Bill of Materials can be recorded as extra time or not? I’m not sure why it wouldn’t be but I just wanna be careful. Thanks for reading, if you could follow, i’d be insanely grateful and it would really help me stay motivated and speed through this project."}, {"post_id": 54381, "ts": "2026-08-25T11:09:25Z", "hours": 1.0503, "text": "Devlog 2 What I’ve been up to I’ve been REALLY lazy with this project and haven’t done a lot because I can’t be bothered to learn CAD. BUT TRUST ME I’M LOCKED IN NOW. I’ve started to motivate myself a bit more and I’m finally picking up speed. I’ve been using onshape and until 10 minutes ago didnt really get how it worked. I’ve finally figured out the huge mistake I was making which was stopping me from selecting my sketches and I’m really embarrassed that such a big problem came from me not dragging one component down. What I’ve gotta do before next devlog I need to make the frame for outlining my build and figure out how I’ll be connecting everything together. Thanks for everyone reading through all of this and if you have make sure to HIT THAT HEART AND FOLLOW! Okay that was corny… just forget that happened. but seriously please make sure to follow my project, I would be over the moon. Or should I say… over the stars. By the way, BEHOLD THE FRUITS OF MY 1 HOUR OF LABOUR. A SINGLE ALUMINIUM EXTRUSION. Okay seriously done now."}, {"post_id": 45788, "ts": "2026-08-12T14:31:13Z", "hours": 0.5669, "text": "Devlog 1 Intro This is my first devlog of hopefully many as I start work on my design for a 3D Printer. I’ve had this idea for a while now and I’m really excited to finally get the chance to bring this into the real world. I’ve spent a lot of time before joining stardance researching about types of 3d printers and their movement systems for this project which has definitely involved lot of just bouncing my ideas off Gemini to see why it might fail. I also know that AI isn’t the best place to get ideas and a lot of the time it can make mistakes which is why I’d be super grateful if someone more experienced could point out any problems and mistakes I might have made as well as anything I forgot to think about. What I’ve been up to Recently I’ve been working on figuring out how I can attach my lead screws for my Z Axis to the rest of my frame. While I’m still not completely sure about it, I did manage to find a 3D model for a lead screw to linear rail “converter”. If anybody who sees this knows anything about a simpler way to do this, please give a quick reply to this post because that would save my life. I hope I didn’t bore you guys and thanks for reading through all this. Note -I don’t think I can post this without a picture so I’ve attached a super quick design from tinkercad. I need to install the cooling system back in my laptop so haven’t been able to use any CAD software until that’s done."}]...
|
Title: Perigee 3D Printer by @reyansh_tyagi12 | St Title: Perigee 3D Printer by @reyansh_tyagi12 | Stardance
Devlogs:
Devlog 1 Intro This is my first devlog of hopefully many as I start work on my design for a 3D Printer. I’ve had this idea for a while now and I’m really excited to finally get the chance to bring this into the real world. I’ve spent a lot of time before joining stardance researching about types of 3d printers and their movement systems for this project which has definitely involved lot of just bouncing my ideas off Gemini to see why it might fail. I also know that AI isn’t the best place to get ideas and a lot of the time it can make mistakes which is why I’d be super grateful if someone more experienced could point out any problems and mistakes I might have made as well as anything I forgot to think about. What I’ve been up to Recently I’ve been working on figuring out how I can attach my lead screws for my Z Axis to the rest of my frame. While I’m still not completely sure about it, I did manage to find a 3D model for a lead screw to linear rail “converter”. If anybody who sees this knows anything about a simpler way to do this, please give a quick reply to this post because that would save my life. I hope I didn’t bore you guys and thanks for reading through all this. Note -I don’t think I can post this without a picture so I’ve attached a super quick design from tinkercad. I need to install the cooling system back in my laptop so haven’t been able to use any CAD software until that’s done.
Devlog 2 What I’ve been up to I’ve been REALLY lazy with this project and haven’t done a lot because I can’t be bothered to learn CAD. BUT TRUST ME I’M LOCKED IN NOW. I’ve started to motivate myself a bit more and I’m finally picking up speed. I’ve been using onshape and until 10 minutes ago didnt really get how it worked. I’ve finally figured out the huge mistake I was making which was stopping me from selecting my sketches and I’m really embarrassed that such a big problem came from me not dragging one component down. What I’ve gotta do before next devlog I need to make the frame for outlining my build and figure out how I’ll be connecting everything together. Thanks for everyone reading through all of this and if you have make sure to HIT THAT HEART AND FOLLOW! Okay that was corny… just forget that happened. but seriously please make sure to follow my project, I would be over the moon. Or should I say… over the stars. By the way, BEHOLD THE FRUITS OF MY 1 HOUR OF LABOUR. A SINGLE ALUMINIUM EXTRUSION. Okay seriously done now.
CAD IS HARD Devlog 3 I didnt expect this to take so long but the outer frame is FINALLY done. Now I just need to work on adding the hardware which could take another 3-6 hours 😅. What I actually did Pretty self explanatory but I built the frame which my 3d printer will fit in and also did a little research into how I can fit the extrusions together. (Yes, I KNOW I SPENT 3 HOURS MAKING A CUBE, I’m still new to CAD so I haven’t got the hang of it yet) What I’m gonna do I’ll try finish it later today and collect my bill of materials to get my parts in. P.S. Does anyone know if writing a Bill of Materials can be recorded as extra time or not? I’m not sure why it wouldn’t be but I just wanna be careful. Thanks for reading, if you could follow, i’d be insanely grateful and it would really help me stay motivated and speed through this project.
RIP CUBE What I’ve done So I’m super close to being done now and my project is finally about to leave the CAD phase but I need to log my time because apparently only 10 hours will actually be counted. Anyways so, I’ve removed the frame which I spent 3 hours on 😢 but it’s fine cuz it’s all coming together. I decided on the Apogee FAT toolhead after about 3 hours of debate and I’m pretty happy with how it turned out. Literally all I have left is making the belts and pulleys to move my gantry and choosing a mobo. Thanks again for reading through this, and maybe goodbye, because I don’t know if I’m gonna get approved for my funding. In case I don’t, it’s been great working on this project and I’m really happy I got the chance to try something like this.
NEW NAME I’ve decided to rebrand to Umbris becasue it’s linked to the stars and stuff so I thought it would be more on brand. Well, this is embarassing… So I still haven’t submitted for funding because I spent AGES working on my movement system and now on my BOM but I’m ABOUT to finish I swear. I just need to wrap up what I’m doing rn and submit my design so fingers crossed they approve. Seriously this time, it might be my last ever devlog if I don’t get funds for it. Thanks so much to everyone for the support, especially for my first ever hackclub event
This is even more awkward… Finally submitted after ages but its fine. Fingers crossed they say yes. Kept forgetting parts I needed for my BOM
Oops… So I forgot to add an important part to my project which was the PSU, but all done now and I am ONCE AGAIN ready to submit. Also added wiring diagrams...
|
1793145365.2607782
|
1793750165.2607782
|
|
66590
|
Mini Keyboard by @Finley | Stardance
|
Finley
|
0
|
1.77
|
0
|
[]
|
[{"post_id": 75355, "ts": "202 [{"post_id": 75355, "ts": "2026-09-29T20:35:50Z", "hours": 1.7658, "text": "Completed: 1st PCB + 3D Design! :)"}]...
|
Title: Mini Keyboard by @Finley | Stardance
Devlo Title: Mini Keyboard by @Finley | Stardance
Devlogs:
Completed: 1st PCB + 3D Design! :)...
|
1793101704.937592
|
1793706504.937592
|
|
53309
|
Infrared AC Schedular by @Ibrahim-Sayed | Stardanc Infrared AC Schedular by @Ibrahim-Sayed | Stardance...
|
Ibrahim-Sayed
|
1
|
24.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T21:15:31Z", "hours": 24.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made a smart AC controller that is a standalone device that can clone your orignal ac remote signals then you can use the device to control it as a remote with daily schedules,one time events,a global webapp, a offline webapp, emergency cooling system and much more, i had difficulty with hardware as the biggest issue was the IR signals having soo little range, and turns out i plugged in my 2n2222 transistor wrong,and then i decreased the resistance values and set the transistor in correct posistion this time,then added a S8050 transistor in a darlington pair and now the range is more that a orignal remote’s! and CAD designing for the pcb enclosure was also super hard", "repo": "https://github.com/NINJA311-CODE/SMART-INFRARED_AC_SCHEDULER", "demo": ""}]...
|
[{"post_id": 75353, "ts": "202 [{"post_id": 75353, "ts": "2026-09-29T20:26:05Z", "hours": 0.3844, "text": "Devlog#6 THE PCB ARRIVED,but even though i looked forward to it,i decided to test it then the esp32 wont turn on even though all connections seemed fine on pcb,i even checked with multimeter continuity mode,then i checked the standalone esp32 then it worked, so i checked gnd and other connection in continuity mode, MANY DATA PINS WERE LITERALLY SHORTING WITH GND AND FEW OTHER TRACES LIKE 3V3! 😭😭😭😭 i was hoping to finally present it here on stardance,but i have to present the prototype as redesign pcb would take 10 days to arrrive!😭😭 i guess all thats left is to ship my project here’s the protoype working demo: https://youtu.be/KKiCB_PlKlA"}, {"post_id": 68846, "ts": "2026-09-15T21:08:31Z", "hours": 4.525, "text": "Devlog#5 I FINALLY COMPLETED THE HARDEST PART Once it arrives ,i gotta quicly assemble it then test it! im quite excited,this gonna be so cool Next devlog: gonna post a vid of my prototype,as im gonna disassemble it and assemble those parts onto the pcb."}, {"post_id": 63189, "ts": "2026-09-06T21:09:18Z", "hours": 3.5503, "text": "Devlog#4 SO FINALLY after constantly adjusting dimensions and having 0 xp in this kinda cad work and taking help with gemini,i completed 60% of my first ever cad model! which is a great feeling,the gap between the screw holes and pcb edge was troublesome! now i have to make cutouts for the display,ir led,vs1838b receiver and power cable. Now in the next devlog,I MUST COMPLETE THE CAD MODEL AND PLACE THE ORDER! wish me luck for completing this quick, later i gotta assemble everything and show ya’ll the protype vid before that! comment what improvements to add to my product,read the project details on my page as i didnt make any readme file yet."}, {"post_id": 57588, "ts": "2026-08-29T19:38:42Z", "hours": 8.1497, "text": "DEVLOG#3 i was learning to create the enclosure from yt,then i thought of exporting the 3d pcb model with the components from easyeda,when i viewed the pcb on the easyeda,I realised i made quite a fatal miastake that wouldve been a disaster,my dimension calculations were wrong! SO AFTER HOURS OF HEADACHE OF RE-DESIGNING THE PCB LAYOUT ON A COMPLETELY NEW UI OF EASYEDA PRO! I FINALLY ADDED IT INTO THE CART THEN TO CONTINUE THE HEADACHE OF DESIGNING THE ENCLOSURE WITH 0 KNOWLEDGE,took much help from gemini for the pcb re design on the new non-familiar pro version,then yt for some cad modelling,becuz of easyeda pro,i burnt so much time D: TIP: DONT TRUST THE CALCULATIONS OF MODULES U WILL SOLDER ON UR PCB,CROSS-CHECK WITH 3D VIEW IG in the next devlog i’d complete the plastic enclosure atlast!"}, {"post_id": 55201, "ts": "2026-08-26T18:34:17Z", "hours": 2.6669, "text": "Devlog#2 So i have successfully completed phase 2 of designing my pcb,from my previous devlog my design with smt assembly had reached 52$ which was overpriced,so i re-designed the pcb by removing the separate battery holder,resistors,decoupling caps and that expensive RTC chip. since i should be soldering everything myself, i decided to solder all the components from my breadboard onto the pcb which felt like a genius idea! so i updated the footprints so i can solder the ds3231 module directly on the back of the board and the tactile button footprints as well. IDK why designing pcbs gets me nervous that i might make a mistake thatll waste the money and bcuz of tht the process takes hours! so after completing the layout and saving the 5 bare boards in cart with a coupon,NOW THE TOTAL IS 8.7$..AWSOME! :D with that,phase 2 is complete,IN the next devlog i will have completed the CAD design of the outer cover that i will order from the same vendor,unfortunately i had to remove the buzzer from the schematics of my breadboard here cuz i had no space! i wonder how engineers even remember part numbers cuz i have to get all the components infos from gemini"}, {"post_id": 54648, "ts": "2026-08-25T17:58:11Z", "hours": 5.1381, "text": "I shouldve joined stardance before i made the prototype Why I Built This A month ago I was prepping for a 25-day summer vacation, and every time I leave my house, my room literally turns into an oven. Leaving the AC running 24/7 destroys the electricity bill, but turning it completely off means returning to melted stuff, fried electronics, and dead room plants. So I built a smart ESP32 IR controller to manage the AC automatically while I was away—you just plug it into any regular 5V wall adapter to keep it powered continuously, and let it do its thing! Coding the Firmware w/ Claude Since the firmware needed to handle real-time MQTT, an OLED menu, schedule tracking, and saving IR codes, I used Claude to generate and structure the C++/Arduino code.Universal IR Remote Cloning: It has a “Register New AC” option right on the OLED. You point any factory remote at it, it decodes the IR pulses, and saves them straight to flash memory so it stays saved even after a reboot.Global App + Offline Buttons: I built a phone web app using Lovable + MQTT so I can check room temp and toggle settings from anywhere in the world. If the internet drops, there’s a 6-button physical menu on the device to control everything offline. Auto Emergency Cooling: If the room temp hits 33°C, the ESP32 automatically kicks the AC on by itself so things don’t boil. Hardware Fix: The Darlington Pair Boost: During early testing, the IR LEDs couldn’t reach the AC unit across the room. After debugging the circuit w/ Gemini, I found out my transistor wiring was off. I fixed it by pairing the original 2N2222 with an S8050 to make a Darlington Pair. The extra current boost made the IR signal blast even further than the original factory remote! 25-Day Vacation Test & The $16 Price Shock I left this messy breadboard setup plugged into a 5V phone adapter and running unattended for 25 straight days while on vacation, and it worked flawlessly without crashing once.Now I’m turning the prototype into an actual polished PCB (upgrading the cheap DHT11 to an SHT40) and was working for some hours on it and asked the component stock infos from gemini. But right when I went to order, the standalone RTC chip spiked the total bill by $16 cuz of component pricing! Next log: fixing the schematic w/ a cheaper RTC chip and starting the 3D printed case! in the future devlogs,i will post a vid which shows almost all the functions of the prototype."}]...
|
Title: Infrared AC Schedular by @Ibrahim-Sayed | S Title: Infrared AC Schedular by @Ibrahim-Sayed | Stardance
Devlogs:
I shouldve joined stardance before i made the prototype Why I Built This A month ago I was prepping for a 25-day summer vacation, and every time I leave my house, my room literally turns into an oven. Leaving the AC running 24/7 destroys the electricity bill, but turning it completely off means returning to melted stuff, fried electronics, and dead room plants. So I built a smart ESP32 IR controller to manage the AC automatically while I was away—you just plug it into any regular 5V wall adapter to keep it powered continuously, and let it do its thing! Coding the Firmware w/ Claude Since the firmware needed to handle real-time MQTT, an OLED menu, schedule tracking, and saving IR codes, I used Claude to generate and structure the C++/Arduino code.Universal IR Remote Cloning: It has a “Register New AC” option right on the OLED. You point any factory remote at it, it decodes the IR pulses, and saves them straight to flash memory so it stays saved even after a reboot.Global App + Offline Buttons: I built a phone web app using Lovable + MQTT so I can check room temp and toggle settings from anywhere in the world. If the internet drops, there’s a 6-button physical menu on the device to control everything offline. Auto Emergency Cooling: If the room temp hits 33°C, the ESP32 automatically kicks the AC on by itself so things don’t boil. Hardware Fix: The Darlington Pair Boost: During early testing, the IR LEDs couldn’t reach the AC unit across the room. After debugging the circuit w/ Gemini, I found out my transistor wiring was off. I fixed it by pairing the original 2N2222 with an S8050 to make a Darlington Pair. The extra current boost made the IR signal blast even further than the original factory remote! 25-Day Vacation Test & The $16 Price Shock I left this messy breadboard setup plugged into a 5V phone adapter and running unattended for 25 straight days while on vacation, and it worked flawlessly without crashing once.Now I’m turning the prototype into an actual polished PCB (upgrading the cheap DHT11 to an SHT40) and was working for some hours on it and asked the component stock infos from gemini. But right when I went to order, the standalone RTC chip spiked the total bill by $16 cuz of component pricing! Next log: fixing the schematic w/ a cheaper RTC chip and starting the 3D printed case! in the future devlogs,i will post a vid which shows almost all the functions of the prototype.
Devlog#2 So i have successfully completed phase 2 of designing my pcb,from my previous devlog my design with smt assembly had reached 52$ which was overpriced,so i re-designed the pcb by removing the separate battery holder,resistors,decoupling caps and that expensive RTC chip. since i should be soldering everything myself, i decided to solder all the components from my breadboard onto the pcb which felt like a genius idea! so i updated the footprints so i can solder the ds3231 module directly on the back of the board and the tactile button footprints as well. IDK why designing pcbs gets me nervous that i might make a mistake thatll waste the money and bcuz of tht the process takes hours! so after completing the layout and saving the 5 bare boards in cart with a coupon,NOW THE TOTAL IS 8.7$..AWSOME! :D with that,phase 2 is complete,IN the next devlog i will have completed the CAD design of the outer cover that i will order from the same vendor,unfortunately i had to remove the buzzer from the schematics of my breadboard here cuz i had no space! i wonder how engineers even remember part numbers cuz i have to get all the components infos from gemini
DEVLOG#3 i was learning to create the enclosure from yt,then i thought of exporting the 3d pcb model with the components from easyeda,when i viewed the pcb on the easyeda,I realised i made quite a fatal miastake that wouldve been a disaster,my dimension calculations were wrong! SO AFTER HOURS OF HEADACHE OF RE-DESIGNING THE PCB LAYOUT ON A COMPLETELY NEW UI OF EASYEDA PRO! I FINALLY ADDED IT INTO THE CART THEN TO CONTINUE THE HEADACHE OF DESIGNING THE ENCLOSURE WITH 0 KNOWLEDGE,took much help from gemini for the pcb re design on the new non-familiar pro version,then yt for some cad modelling,becuz of easyeda pro,i burnt so much time D: TIP: DONT TRUST THE CALCULATIONS OF MODULES U WILL SOLDER ON UR PCB,CROSS-CHECK WITH 3D VIEW IG in the next devlog i’d complete the plastic enclosure atlast!
Devlog#4 SO FINALLY after constantly adjusting dimensions and having 0 xp in this kinda cad work and taking help with gemini,i completed 60% of my first ever cad model! which is a great feeling,the gap between the screw holes and pcb edge was troublesome! now i have to make cutouts for the display,ir led,vs1838b receiver and power cable. Now in the next devlog,I MUST COMPLETE THE CAD MODEL AND PLACE THE ORDER! wish me luck for completing this quick, later i gotta assemble everything and show ya’ll the protype vid before that! comment what improvements to add to my product,read the project details on my page as i didnt make any readme file yet.
Devlog#5 I FINALLY COMPLETED THE HARDEST PART Once it arrives ,i gotta quicly assemble it then test it! im quite excited,this gonna be so cool Next devlog: gonna post a vid of my prototype,as im gonna disassemble it and assemble those parts onto the pcb.
Devlog#6 THE PCB ARRIVED,but even though i looked forward to it,i decided to test it then the esp32 wont turn on even though all connections seemed fine on pcb,i even checked with multimeter continuity mode,then i checked the standalone esp32 then it worked, so i checked gnd and other connection in continuity mode, MANY DATA PINS WERE LITERALLY SHORTING WITH GND AND FEW OTHER TRACES LIKE 3V3! 😭😭😭😭 i was hoping to finally present it here on stardance,but i have to present the prototype as redesign pcb would take 10 days to arrrive!😭😭 i guess all thats left is to ship my project here’s the protoype working demo: https://youtu.be/KKiCB_PlKlA
Ships:
i made a smart AC controller that is a standalone device that can clone your orignal ac remote signals then you can use the device to control it as a remote with daily schedules,one time events,a global webapp, a offline webapp, emergency cooling system and much more, i had difficulty with hardware as the biggest issue was the IR signals having soo little range, and turns out i plugged in my 2n2222 transistor wrong,and then i decreased the resistance values and set the transistor in correct posistion this time,then added a S8050 transistor in a darlington pair and now the range is more that a orignal remote’s! and CAD designing for the pcb enclosure was also super hard...
|
1793350389.0098867
|
1793436789.0098867
|
|
66446
|
Orbital Chaos by @sadman | Stardance
|
sadman
|
0
|
3.39
|
0
|
[]
|
[{"post_id": 75346, "ts": "202 [{"post_id": 75346, "ts": "2026-09-29T20:04:44Z", "hours": 0.5064, "text": "hi. i js built custom Web Audio API synths for pitch shifting launch sweeps and sub bass collision impacts without having to use any external mp3 files. also updated the physics loop with inelastic collision detection so planets smash, merge mass and conserve momentum instead of overlapping. these damn typos are so annoying man"}, {"post_id": 75328, "ts": "2026-09-29T19:17:38Z", "hours": 0.3475, "text": "finally got orbital pathing working so planets stop teleporting around like ghost vectors and actually leave some cool glowing motion trails on the canvas. i put a trail: [] history array onto every body, clamped the recording to 30 frames inside the physics loop so the canvas doesnt lag into oblivion, drew gradient opacity falloff (ctx.globalAlpha) for every path segment so trails fade out smoothly. also wired up a clean trails toggle in the telemetry sidebar to clear visual clutter whenever it gets too chaotic. the website is still quite laggy and everything just flies away for some reason. gotta fix it."}, {"post_id": 75029, "ts": "2026-09-28T22:21:42Z", "hours": 0.7711, "text": "its 4:18 am and im tired asl. added some more features and now gonna go sleep. added an interactive payload palette directly into the telemetry sidebar so you can toggle between launching standard planets, high-mass stars, and supermassive black holes. also built a purge reset button to wipe the grid clean whenever things get out of hand. ran into some very frustrating layout bugs where vite’s default CSS was locking #root to a fixed width and clipping the UI. reset it completely so now the radar monitor scales edge to edge. goodnight yall <3"}, {"post_id": 75019, "ts": "2026-09-28T21:22:46Z", "hours": 0.9536, "text": "gave orbital chaos a total UI overhaul! swapped out the generic dark background for a clean green telemetry radar layout type thing. added a side panel to track active bodies in real time. oh and also swapped the canvas grid for concentric radar circles + crosshairs. updated all typography to fit the theme of monospace. quite proud of the new design compared to what it was before"}, {"post_id": 74970, "ts": "2026-09-28T18:48:30Z", "hours": 0.8139, "text": "HELLO THIS IS MY FIRST DEVLOG ON MY NEW PROJECT! Got the core 2D N-body gravity simulation up and running in react and html5 canvas! built the physics loop from scratch so the planets pull on each other naturally tho its not quite implemented yet, having sm troubles. added a custom click-and-drag mechanic with trajectory previews so u can slingshot planets straight into orbit. ran into a few annoying typos and bugs while setting up bug controls but got em all sorted out. thinking of adding different object types like stars and black holes next! please let me know what you think of the idea guys, would really appreciate it!"}]...
|
Title: Orbital Chaos by @sadman | Stardance
Devlo Title: Orbital Chaos by @sadman | Stardance
Devlogs:
HELLO THIS IS MY FIRST DEVLOG ON MY NEW PROJECT! Got the core 2D N-body gravity simulation up and running in react and html5 canvas! built the physics loop from scratch so the planets pull on each other naturally tho its not quite implemented yet, having sm troubles. added a custom click-and-drag mechanic with trajectory previews so u can slingshot planets straight into orbit. ran into a few annoying typos and bugs while setting up bug controls but got em all sorted out. thinking of adding different object types like stars and black holes next! please let me know what you think of the idea guys, would really appreciate it!
gave orbital chaos a total UI overhaul! swapped out the generic dark background for a clean green telemetry radar layout type thing. added a side panel to track active bodies in real time. oh and also swapped the canvas grid for concentric radar circles + crosshairs. updated all typography to fit the theme of monospace. quite proud of the new design compared to what it was before
its 4:18 am and im tired asl. added some more features and now gonna go sleep. added an interactive payload palette directly into the telemetry sidebar so you can toggle between launching standard planets, high-mass stars, and supermassive black holes. also built a purge reset button to wipe the grid clean whenever things get out of hand. ran into some very frustrating layout bugs where vite’s default CSS was locking #root to a fixed width and clipping the UI. reset it completely so now the radar monitor scales edge to edge. goodnight yall <3
finally got orbital pathing working so planets stop teleporting around like ghost vectors and actually leave some cool glowing motion trails on the canvas. i put a trail: [] history array onto every body, clamped the recording to 30 frames inside the physics loop so the canvas doesnt lag into oblivion, drew gradient opacity falloff (ctx.globalAlpha) for every path segment so trails fade out smoothly. also wired up a clean trails toggle in the telemetry sidebar to clear visual clutter whenever it gets too chaotic. the website is still quite laggy and everything just flies away for some reason. gotta fix it.
hi. i js built custom Web Audio API synths for pitch shifting launch sweeps and sub bass collision impacts without having to use any external mp3 files. also updated the physics loop with inelastic collision detection so planets smash, merge mass and conserve momentum instead of overlapping. these damn typos are so annoying man...
|
1793098380.932702
|
1793703180.932702
|
|
22612
|
RC car by @Sked | Stardance
|
Sked
|
1
|
58.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T21:57:08Z", "hours": 58.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my own RC car in 1/10 scale because i always wanted one! When i was younger I always liked the idea of vehicles that you can control yourself So i decided to built one. I knew that this is going to be hard because this is my very first project like this and i was ready. It was really hard to start because i didnt know where and how. I used only to find good electronics and hardware for this project. I was deeply inspired by Robak 2 project. I took some ideas from it but every 3d model was made by me. I am very proud of myself because at the start i thought that i am not going to finish this project but i actually did. When i started building it i didn’t know about StarDance so i was building it for myself but now i released all 3D CAD files. It will be very hard to understand and built this car. I know that there is a lot of things that you can modify to make it better but for now i think its fine. I had a lot of fun building this RC car", "repo": "https://github.com/Sked777/RC-car-", "demo": ""}]...
|
[{"post_id": 75338, "ts": "202 [{"post_id": 75338, "ts": "2026-09-29T19:39:10Z", "hours": 10.6006, "text": "I am actually finishing this project. This is the last devlog. I finally printed the body and assembled it."}, {"post_id": 73990, "ts": "2026-09-26T14:07:47Z", "hours": 12.8336, "text": "This car needs a lot of work. one day everything broke and i spent like a week reprinting and reassembling everything. Also differentials were leaking so i took them apart, cleaned everything and reassembled"}, {"post_id": 69735, "ts": "2026-09-17T17:51:13Z", "hours": 10.0503, "text": "still working on the car. fixing a lot of things"}, {"post_id": 65335, "ts": "2026-09-10T12:41:51Z", "hours": 9.7836, "text": "I made it work but it keeps breaking, so Im constantly changing and reprinting a lot of parts. The battery is now fixed in place. I still Dont know what kind of body to give it"}, {"post_id": 59479, "ts": "2026-09-01T10:48:26Z", "hours": 11.0289, "text": "still working on my RC car! soon finishing it but i lost some parts and now im waiting for new ones and also i finally figured out suspension."}, {"post_id": 19577, "ts": "2026-06-30T22:24:11Z", "hours": 1.3336, "text": "I keep working on my car Today i did lower rear arm and it has holes for mounting shocks It will be a double wishbone suspension"}, {"post_id": 17888, "ts": "2026-06-28T20:30:44Z", "hours": 0.8167, "text": "Today i did an upper suspension arm for my RC car cant wait to complete this project and finally drive it"}, {"post_id": 17201, "ts": "2026-06-27T22:12:20Z", "hours": 1.2503, "text": "I am making my own RC car in approximately 1/10 scale i did base of the car before i found out of the Stardance challenge but now i am making rest of the car Today i started making wheel hubs and soon will be making suspension arms"}]...
|
Title: RC car by @Sked | Stardance
Devlogs:
I am Title: RC car by @Sked | Stardance
Devlogs:
I am making my own RC car in approximately 1/10 scale i did base of the car before i found out of the Stardance challenge but now i am making rest of the car Today i started making wheel hubs and soon will be making suspension arms
Today i did an upper suspension arm for my RC car cant wait to complete this project and finally drive it
I keep working on my car Today i did lower rear arm and it has holes for mounting shocks It will be a double wishbone suspension
still working on my RC car! soon finishing it but i lost some parts and now im waiting for new ones and also i finally figured out suspension.
I made it work but it keeps breaking, so Im constantly changing and reprinting a lot of parts. The battery is now fixed in place. I still Dont know what kind of body to give it
still working on the car. fixing a lot of things
This car needs a lot of work. one day everything broke and i spent like a week reprinting and reassembling everything. Also differentials were leaking so i took them apart, cleaned everything and reassembled
I am actually finishing this project. This is the last devlog. I finally printed the body and assembled it.
Ships:
I made my own RC car in 1/10 scale because i always wanted one! When i was younger I always liked the idea of vehicles that you can control yourself So i decided to built one. I knew that this is going to be hard because this is my very first project like this and i was ready. It was really hard to start because i didnt know where and how. I used only to find good electronics and hardware for this project. I was deeply inspired by Robak 2 project. I took some ideas from it but every 3d model was made by me. I am very proud of myself because at the start i thought that i am not going to finish this project but i actually did. When i started building it i didn’t know about StarDance so i was building it for myself but now i released all 3D CAD files. It will be very hard to understand and built this car. I know that there is a lot of things that you can modify to make it better but for now i think its fine. I had a lot of fun building this RC car...
|
1793346781.7642295
|
1793433181.7642295
|
|
16385
|
Desktop Buddy by @Lightfury | Stardance
|
Lightfury
|
0
|
20.28
|
0
|
[]
|
[{"post_id": 75333, "ts": "202 [{"post_id": 75333, "ts": "2026-09-29T19:28:11Z", "hours": 0.9261, "text": "Integrated the custom and pomodoro timer with the main car finally donee!"}, {"post_id": 72770, "ts": "2026-09-23T18:26:35Z", "hours": 8.3636, "text": "⏱️ TimerAdded Pomodoro and Custom timer modes. Implemented countdown, start/pause, work/break phases, and completion alerts. -Added custom duration input with validation. -Added timer selection screen with Pomodoro/Custom options. -Added custom timer UI with background, fonts, and styling. -Implemented draggable timer windows. -Currently working on the right-click Exit menu for the timer window."}, {"post_id": 28836, "ts": "2026-07-15T10:47:32Z", "hours": 4.1825, "text": "Devlog 2 Cinder now slowly wags his tail Looks at what you do as you move your cursor Blinks his eyes periodically Displays different messages when you start using Cinder, based on the time of day Sleeps after 10+ minutes of inactivity In Development: To-do list integration Reminders integration Water reminders integration"}, {"post_id": 22975, "ts": "2026-07-05T17:35:21Z", "hours": 6.8122, "text": "Hi! Making a cute lil cat desktop buddy. Meet Cinder y’all !!!"}]...
|
Title: Desktop Buddy by @Lightfury | Stardance
De Title: Desktop Buddy by @Lightfury | Stardance
Devlogs:
Hi! Making a cute lil cat desktop buddy. Meet Cinder y’all !!!
Devlog 2 Cinder now slowly wags his tail Looks at what you do as you move your cursor Blinks his eyes periodically Displays different messages when you start using Cinder, based on the time of day Sleeps after 10+ minutes of inactivity In Development: To-do list integration Reminders integration Water reminders integration
⏱️ TimerAdded Pomodoro and Custom timer modes. Implemented countdown, start/pause, work/break phases, and completion alerts. -Added custom duration input with validation. -Added timer selection screen with Pomodoro/Custom options. -Added custom timer UI with background, fonts, and styling. -Implemented draggable timer windows. -Currently working on the right-click Exit menu for the timer window.
Integrated the custom and pomodoro timer with the main car finally donee!...
|
1792788546.8229952
|
1793393346.8229952
|
|
40695
|
Agamemnon Armor From The Odyssey by @nejenabinupa Agamemnon Armor From The Odyssey by @nejenabinupa | Stardance...
|
nejenabinupa
|
1
|
46.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-05T22:14:49Z", "hours": 46.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "my Agamemnon Armor From The Odyssey that i make in 3d, all of the details are in the readme", "repo": "https://github.com/binupax6699/AGEMENMNON-ARMOR-3D-MODLE", "demo": "https://sketchfab.com/3d-models/agemenmnon-armor-3d-modle-ddb5b8fa0023412498e85a3ae109d622"}]...
|
[{"post_id": 75331, "ts": "202 [{"post_id": 75331, "ts": "2026-09-29T19:24:31Z", "hours": 3.1283, "text": "Finsh up the stuff and it’s good to go"}, {"post_id": 43114, "ts": "2026-08-08T06:24:45Z", "hours": 1.4717, "text": "Remake the textures with depth and more realistic colors,next will be baking the textures"}, {"post_id": 41351, "ts": "2026-08-05T14:41:59Z", "hours": 4.1028, "text": "I added a Sword to the armor set and make sum tweaks to the rig and now it’s good for animation"}, {"post_id": 38695, "ts": "2026-08-01T06:46:28Z", "hours": 10.6783, "text": "It took around 15h my addon got deactivated for no reason and that 5h got lost 😞, but i completed the armor and the rigging part fully need to add sum normal maps to give it sum small details for everything."}, {"post_id": 37106, "ts": "2026-07-29T16:12:54Z", "hours": 10.58, "text": "After long long time make thing much progress on making the body, now just need to clone up sum polygons Make the face from sculpting because of that there’s around 400k + faces and vertices but make the body light and have only 8.5 K faces and vertices"}, {"post_id": 36401, "ts": "2026-07-28T14:18:30Z", "hours": 9.4525, "text": "Agamemnon Helmet Cleaned up the helmet topology and cheek guards, Added the vertebrae spine, I optimization hair without a particle hair but with a custom alpha png images to make it fast And I Applied the final satin black metal, gold filigree trim. Now moving to the body and armor"}, {"post_id": 35922, "ts": "2026-07-27T17:52:20Z", "hours": 6.6144, "text": "Agamemnon Helmet Complete Base Mesh modeling for the Agamemnon helmet. "}]...
|
Title: Agamemnon Armor From The Odyssey by @nejena Title: Agamemnon Armor From The Odyssey by @nejenabinupa | Stardance
Devlogs:
Agamemnon Helmet Complete Base Mesh modeling for the Agamemnon helmet.
Agamemnon Helmet Cleaned up the helmet topology and cheek guards, Added the vertebrae spine, I optimization hair without a particle hair but with a custom alpha png images to make it fast And I Applied the final satin black metal, gold filigree trim. Now moving to the body and armor
After long long time make thing much progress on making the body, now just need to clone up sum polygons Make the face from sculpting because of that there’s around 400k + faces and vertices but make the body light and have only 8.5 K faces and vertices
It took around 15h my addon got deactivated for no reason and that 5h got lost 😞, but i completed the armor and the rigging part fully need to add sum normal maps to give it sum small details for everything.
I added a Sword to the armor set and make sum tweaks to the rig and now it’s good for animation
Remake the textures with depth and more realistic colors,next will be baking the textures
Finsh up the stuff and it’s good to go
Ships:
my Agamemnon Armor From The Odyssey that i make in 3d, all of the details are in the readme...
|
1793350644.4892883
|
1793437044.4892883
|
|
64516
|
Programme ERIZON by @nejenabinupa | Stardance
|
nejenabinupa
|
0
|
31.12
|
0
|
[]
|
[{"post_id": 75327, "ts": "202 [{"post_id": 75327, "ts": "2026-09-29T19:17:37Z", "hours": 1.7819, "text": "Did the final stuff and it’s ready"}, {"post_id": 74832, "ts": "2026-09-28T12:15:02Z", "hours": 7.9736, "text": "i added textures and martials to the ship and looking good so far need to make sum things and all good"}, {"post_id": 74044, "ts": "2026-09-26T16:14:11Z", "hours": 14.6467, "text": "i make a space ship thing and its look good so far"}, {"post_id": 72200, "ts": "2026-09-22T13:24:15Z", "hours": 6.7183, "text": "Make the earth modle using earth texture NASA have"}]...
|
Title: Programme ERIZON by @nejenabinupa | Stardan Title: Programme ERIZON by @nejenabinupa | Stardance
Devlogs:
Make the earth modle using earth texture NASA have
i make a space ship thing and its look good so far
i added textures and martials to the ship and looking good so far need to make sum things and all good
Did the final stuff and it’s ready...
|
1793065665.668396
|
1793670465.668396
|
|
66858
|
SIFT by @GoldenGhost | Stardance
|
GoldenGhost
|
0
|
1.25
|
0
|
[]
|
[{"post_id": 75325, "ts": "202 [{"post_id": 75325, "ts": "2026-09-29T19:10:05Z", "hours": 1.2475, "text": "Devlog #1 — INTRO & Scaffold and drive scanner HEY PEOPLE, your days of managing storage are over with SIFT What I built now - Project structure with a virtual environment and Git repo Central config file with folders Sift will never touch (VERRY IMP) SQLite database with a table that stores every file’s size and dates A scanner that walks a folder, skips system folders and half-downloaded files, and saves everything to the database A command that prints the 10 biggest files, plus a first automated test What I learned: How os.walk works and how to make it skip folders Why SQL should use placeholders Why try/execute is important Problems I hit: I hit various small syntax and defination problems in almost every file nothing major Next: a journal/log that records every change so any action can be undone."}]...
|
Title: SIFT by @GoldenGhost | Stardance
Devlogs:
Title: SIFT by @GoldenGhost | Stardance
Devlogs:
Devlog #1 — INTRO & Scaffold and drive scanner HEY PEOPLE, your days of managing storage are over with SIFT What I built now - Project structure with a virtual environment and Git repo Central config file with folders Sift will never touch (VERRY IMP) SQLite database with a table that stores every file’s size and dates A scanner that walks a folder, skips system folders and half-downloaded files, and saves everything to the database A command that prints the 10 biggest files, plus a first automated test What I learned: How os.walk works and how to make it skip folders Why SQL should use placeholders Why try/execute is important Problems I hit: I hit various small syntax and defination problems in almost every file nothing major Next: a journal/log that records every change so any action can be undone....
|
1793102084.4874704
|
1793706884.4874704
|
|
14288
|
YashOS by @jasiu25 | Stardance
|
jasiu25
|
0
|
3.98
|
0
|
[]
|
[{"post_id": 7532, "ts": "2026 [{"post_id": 7532, "ts": "2026-06-12T16:03:18Z", "hours": 1.9781, "text": "I’ve redesigned the UI and added the second draggable window!"}, {"post_id": 6107, "ts": "2026-06-10T08:37:37Z", "hours": 2.0022, "text": "I’ve done basic UI and closable window."}]...
|
Title: YashOS by @jasiu25 | Stardance
Devlogs:
I’ Title: YashOS by @jasiu25 | Stardance
Devlogs:
I’ve done basic UI and closable window.
I’ve redesigned the UI and added the second draggable window!...
|
1793195603.015764
|
1793800403.015764
|
|
18811
|
Frutiger OS by @ondy | Stardance
|
ondy
|
2
|
33.0
|
256
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T19:00:33Z", "hours": 23.0, "multiplier": 11.03, "payout": 256, "blessing": "neutral", "text": "A web-based operating system based on the infamous Frutiger Aero aesthetic of the mid 00s to early 10s. The reason i made this is that im big fan of this era and skeuomorphism, which i feel got killed by minimalism. some of the cool features: -working desktop environment(dragging apps, selection box, time, taskbar, window management…) -nostalgic boot animation and login -old stylized browser with nostalgic websites -og paint and notes programs -the nostalgic frutiger music player skins we all liked(i wasnt alive back then lol) -parody xbox app where you can play some of the popular games from back then I dont know what else to write here if you are interested check out the github readme.", "repo": "https://github.com/0ndyy/frutiger-os", "demo": "https://0ndyy.github.io/frutiger-os/"}, {"ship_num": 2, "ts": "2026-07-08T21:33:08Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Web based OS inspired by the Frutiger Aero aesthetic during 10s. I really enjoyed tweaking the CSS values to get the aesthetic just right, it was really fun and i implemented modular system for easy creation of new apps/elements, so i am planning on expanding this inti WebOS 2. If you want you can try it out here - https://0ndyy.github.io/frutiger-os/", "repo": "https://github.com/0ndyy/frutiger-os", "demo": "https://0ndyy.github.io/frutiger-os/"}]...
|
[{"post_id": 75315, "ts": "202 [{"post_id": 75315, "ts": "2026-09-29T18:52:06Z", "hours": 2.4547, "text": "Frutiger OS(Hexagons) Frutiger Aero/y2k aesthetic inspired OS devlog 8(final) This is going to be the final devlog before finally shipping this thing, its been great and i learnt a lot especially how to actually get div where i want it😭 Since ast devlog i added some cool new desktop behaviour, web browser and boot animation, you can check it out all in the final video…"}, {"post_id": 75001, "ts": "2026-09-28T20:19:43Z", "hours": 3.3958, "text": "Frutiger OS(Hexagons) Frutiger Aero/y2k aesthetic inspired OS devlog 7 I finally made the most fun part, games yall. Its basically a parody of xbox, i know some of the games are newer and not from the frutiger era but it still fun to mess around with. The games are saved as .swf files and run through ruffle."}, {"post_id": 73315, "ts": "2026-09-24T20:51:13Z", "hours": 4.4122, "text": "Frutiger OS (Hexagons) Frutiger Aero/y2k aesthetic inspired OS devlog 6 For the past couple weeks i havent made much progress since i have been busy with life n stuff, but atleast i managed to make another music player skin. I feel like this one really fits with the whole aquatic/frutiger aero style - what do you think? Some of the time was also spent on making a new games app - stay tuned, hopefully i can finish this in time😭😭 As always, you can try the live demo on the github linked under the project or here - https://github.com/0ndyy/frutiger-os/tree/main"}, {"post_id": 45429, "ts": "2026-08-11T21:19:13Z", "hours": 4.8044, "text": "Frutiger OS (Hexagons) Frutiger Aero/y2k aesthetic inspired OS devlog 5 For the past week i have been working on bringing the og windows media player skins into my os. It was quite a hassle, but eventually i managed to get a modular system working where i can add more skins in the future(stay tuned). For those who want to know how i pulled this off: there is a website - https://wmpskinsarchive.neocities.org/ with all the og skins in their original .wmz format. As it turns out the .wmz is basically just renamed .zip containing all the assets, although the assets are a mess - there is like 30+ images in .bmp format, some scripts, and magenta masks so you have to manually assemble it in photoshop remove the masks and get it to look good. Then you have to play for a while with your css file to correctly position and scale all of the buttons n stuff and thats it. I dont recommend anyone trying this shi😭 note: the reason some of the songs sound weird is because i used bitmap version not to mess with copyright scanning bots"}, {"post_id": 42582, "ts": "2026-08-07T12:24:29Z", "hours": 4.4, "text": "Frutiger OS (Hexagons) Frutiger Aero/y2k aesthetic inspired OS devlog 4 I kinda forgot that im supposted to posts devlogs here, but long story short a lot new things happen since last devlog. I created a new logo, you can actually see it in the background, its a knock off of the old windows logo but HEXAGON, because hexagons are the bestagons. I made(found) a paint app, i actually didnt code the whole thing it uses a cool project called JSPaint, check it out - https://jspaint.app/ Which fits the aesthetic i was going for really well."}, {"post_id": 26894, "ts": "2026-07-11T22:57:53Z", "hours": 3.4314, "text": "Frutiger OS Frutiger Aero/y2k aesthetic inspired OS devlog 3 Today i created a windows 7 inspired working Control Panel app, you can currently -change wallpaper -disable some elements(menubar, taskbar, icons) I really enjoyed tuning some of the CSS components especially buttons and switches(since i implemented the modular system for the main windows in the last devlog) Im stil trying to submit my ship for WebOS 1 but they still wont accept it😭🙏. Appparently it looks like every othe AI slop and has no personality, i really dont understand how could they say something like this, anyway wish me luck."}, {"post_id": 25996, "ts": "2026-07-10T15:28:36Z", "hours": 0.2947, "text": "After first failed ship i realised i completelt forgot about me README.md. Im not too sure why its needed since this project cant be voted yet but its good to start earlt righ? You can check it out here - https://github.com/0ndyy/frutiger-os/blob/main/README.md"}, {"post_id": 24983, "ts": "2026-07-08T21:28:27Z", "hours": 2.0272, "text": "Frutiger OS Frutiger Aero/y2k aesthetic inspired OS devlog 2 My most recent addition was the taskbar, its heavily inspired by windows 7 era and i find it kind of sleek, it was actually way easier to implement than i originally thought. I also created a new settings/control panel app which was pretty quick using the css classes made in last devlog. If you wanna try it out, its avalible at - https://0ndyy.github.io/frutiger-os/"}, {"post_id": 21062, "ts": "2026-07-02T20:50:37Z", "hours": 3.1067, "text": "Frutiger OS Frutiger Aero/y2k aesthetic inspired OS devlog 1 In this devlog i developen my first proper app, its basically a simple notepad, i developed my own system for app creation in css so i can easily add different sizes of windows, sidebars, topbars, buttons exct. and reuse them all. Its still a little rought around the edges and i might need to start handling the performance issue, since the css blur is pretty resource intensive, but we will see what happens."}, {"post_id": 16585, "ts": "2026-06-26T23:36:04Z", "hours": 4.7756, "text": "Frutiger OS Frutiger Aero/y2k aesthetic inspired OS devlog 0 I implemented the basic steps from the tutorial, though since i didnt like some of the solutions i designed a lot of things to be more modular and future proof, let the video speak for itself. Its been quite fun so far, especially playing with the different css elements of the frutiger aesthetic."}]...
|
Title: Frutiger OS by @ondy | Stardance
Devlogs:
Title: Frutiger OS by @ondy | Stardance
Devlogs:
Frutiger OS Frutiger Aero/y2k aesthetic inspired OS devlog 0 I implemented the basic steps from the tutorial, though since i didnt like some of the solutions i designed a lot of things to be more modular and future proof, let the video speak for itself. Its been quite fun so far, especially playing with the different css elements of the frutiger aesthetic.
Frutiger OS Frutiger Aero/y2k aesthetic inspired OS devlog 1 In this devlog i developen my first proper app, its basically a simple notepad, i developed my own system for app creation in css so i can easily add different sizes of windows, sidebars, topbars, buttons exct. and reuse them all. Its still a little rought around the edges and i might need to start handling the performance issue, since the css blur is pretty resource intensive, but we will see what happens.
Frutiger OS Frutiger Aero/y2k aesthetic inspired OS devlog 2 My most recent addition was the taskbar, its heavily inspired by windows 7 era and i find it kind of sleek, it was actually way easier to implement than i originally thought. I also created a new settings/control panel app which was pretty quick using the css classes made in last devlog. If you wanna try it out, its avalible at - https://0ndyy.github.io/frutiger-os/
After first failed ship i realised i completelt forgot about me README.md. Im not too sure why its needed since this project cant be voted yet but its good to start earlt righ? You can check it out here - https://github.com/0ndyy/frutiger-os/blob/main/README.md
Frutiger OS Frutiger Aero/y2k aesthetic inspired OS devlog 3 Today i created a windows 7 inspired working Control Panel app, you can currently -change wallpaper -disable some elements(menubar, taskbar, icons) I really enjoyed tuning some of the CSS components especially buttons and switches(since i implemented the modular system for the main windows in the last devlog) Im stil trying to submit my ship for WebOS 1 but they still wont accept it😭🙏. Appparently it looks like every othe AI slop and has no personality, i really dont understand how could they say something like this, anyway wish me luck.
Frutiger OS (Hexagons) Frutiger Aero/y2k aesthetic inspired OS devlog 4 I kinda forgot that im supposted to posts devlogs here, but long story short a lot new things happen since last devlog. I created a new logo, you can actually see it in the background, its a knock off of the old windows logo but HEXAGON, because hexagons are the bestagons. I made(found) a paint app, i actually didnt code the whole thing it uses a cool project called JSPaint, check it out - https://jspaint.app/ Which fits the aesthetic i was going for really well.
Frutiger OS (Hexagons) Frutiger Aero/y2k aesthetic inspired OS devlog 5 For the past week i have been working on bringing the og windows media player skins into my os. It was quite a hassle, but eventually i managed to get a modular system working where i can add more skins in the future(stay tuned). For those who want to know how i pulled this off: there is a website - https://wmpskinsarchive.neocities.org/ with all the og skins in their original .wmz format. As it turns out the .wmz is basically just renamed .zip containing all the assets, although the assets are a mess - there is like 30+ images in .bmp format, some scripts, and magenta masks so you have to manually assemble it in photoshop remove the masks and get it to look good. Then you have to play for a while with your css file to correctly position and scale all of the buttons n stuff and thats it. I dont recommend anyone trying this shi😭 note: the reason some of the songs sound weird is because i used bitmap version not to mess with copyright scanning bots
Frutiger OS (Hexagons) Frutiger Aero/y2k aesthetic inspired OS devlog 6 For the past couple weeks i havent made much progress since i have been busy with life n stuff, but atleast i managed to make another music player skin. I feel like this one really fits with the whole aquatic/frutiger aero style - what do you think? Some of the time was also spent on making a new games app - stay tuned, hopefully i can finish this in time😭😭 As always, you can try the live demo on the github linked under the project or here - https://github.com/0ndyy/frutiger-os/tree/main
Frutiger OS(Hexagons) Frutiger Aero/y2k aesthetic inspired OS devlog 7 I finally made the most fun part, games yall. Its basically a parody of xbox, i know some of the games are newer and not from the frutiger era but it still fun to mess around with. The games are saved as .swf files and run through ruffle.
Frutiger OS(Hexagons) Frutiger Aero/y2k aesthetic inspired OS devlog 8(final) This is going to be the final devlog before finally shipping this thing, its been great and i learnt a lot especially how to actually get div where i want it😭 Since ast devlog i added some cool new desktop behaviour, web browser and boot animation, you can check it out all in the final video…
Ships:
Web based OS inspired by the Frutiger Aero aesthetic during 10s. I really enjoyed tweaking the CSS values to get the aesthetic just right, it was really fun and i implemented modular system for easy creation of new apps/elements, so i am planning on expanding this inti WebOS 2. If you want you can try it out here - https://0ndyy.github.io/frutiger-os/
A web-based operating system based on the infamous Frutiger Aero aesthetic of the mid 00s to early 10s. The reason i made this is that im big fan of this era and skeuomorphism, which i feel got killed by minimalism. some of the cool features: -working desktop environment(dragging apps, selection box, time, taskbar, window management…) -nostalgic boot animation and login -old stylized browser with nostalgic websites -og paint and notes programs -the nostalgic frutiger music player skins we all liked(i wasnt alive back then lol) -parody xbox app where you can play some of the popular games from back then I dont know what else to write here if you are interested check out the github readme....
|
1793303650.9417076
|
1793390050.9417076
|
|
66740
|
Python Ollama Chatbot by @GoodAron | Stardance
|
GoodAron
|
0
|
1.46
|
0
|
[]
|
[{"post_id": 75313, "ts": "202 [{"post_id": 75313, "ts": "2026-09-29T18:36:46Z", "hours": 1.1025, "text": "made the ai into a web app, starting now with tool calling setup based on ollama docs"}, {"post_id": 75167, "ts": "2026-09-29T11:03:38Z", "hours": 0.3583, "text": "got started with the project"}]...
|
Title: Python Ollama Chatbot by @GoodAron | Starda Title: Python Ollama Chatbot by @GoodAron | Stardance
Devlogs:
got started with the project
made the ai into a web app, starting now with tool calling setup based on ollama docs...
|
1793101921.9777637
|
1793706721.9777637
|
|
939
|
LUNAR-HAL by @INiNiDS | Stardance
|
INiNiDS
|
1
|
78.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T18:18:07Z", "hours": 78.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Finally shipping this! It honestly took forever and I burned out twice along the way, but I pushed through to get it over the finish line. Try out the live demo or grab the local build. Heads up: the web demo might feel super sluggish since the models are running on Heroku, so expect some delay. Also, all demo sessions share the same persistent worlds! Have Fun!", "repo": "https://github.com/ininids/lunar-hal", "demo": "https://lnhal.ininids.in.rs"}]...
|
[{"post_id": 75310, "ts": "202 [{"post_id": 75310, "ts": "2026-09-29T18:16:50Z", "hours": 5.1756, "text": "Alright, final devlog! Went all-in on bug squashing for this one—crushed a ton of issues, finally got CI completely green and stable, cleared out all the CodeQL alerts, and pushed the demo build. So yeah… I’m officially shipping now!"}, {"post_id": 68044, "ts": "2026-09-14T12:49:45Z", "hours": 12.1378, "text": "DevLog #9: Checkpoint Hardening & Stage 5 GNN Kinematics Convergence * This session was focused on a deep technical milestone: diagnosing a critical engine staging bug in LUNAR-HAL and driving the Stellar GNN-kinematics pipeline through the completion of Stage 5. 1. 🛠️ Staging Architecture & Atomic Checkpoint RCA (Rust) Diagnosed and resolved a critical issue in the --resume workflow where staging logic triggered a self-copy ( src == dst ), truncating output checkpoint weights upon restart. Implemented robust canonical path checking ( std::fs: :canonicalize ) to ensure fully atomic weight persistence across interruption signals ( SIGINT / SIGTERM ). Hardened checkpoint state serialization, eliminating filesystem race conditions during runtime hot-reloads. 2. Stage 5: GNN-Kinematics Training Executed the 200-epoch training run for the galactic velocity prediction model ($v_x, v_y, v_z$ derived from positions + photometry). Validated host telemetry: stable VRAM footprint on local NVIDIA GeForce RTX 5070 (~3.1 GB / 12 GB allocated) with optimal throughput (~30s / epoch). 3. Loss & Convergence Verification Train Loss: Decreased to ~0.7660 . Validation Loss: Reached a clean, stable quasi-stationary plateau at ~0.7694 . Physics Constraint: Invariant equilibrium maintained throughout ( phys_loss ≈ 0.7700 ), demonstrating high generalization without overfitting."}, {"post_id": 45625, "ts": "2026-08-12T07:29:27Z", "hours": 3.5756, "text": "* 🚀 DevLog #8: The Great Pivot — From Game to Technical Stellar Platform * The mission has changed. Following the deployment of the WebOS in DevLog #7, we realized that the “game” mechanics were holding back the true potential of the engine. This update marks our transition from a simulation with combat elements to a high-fidelity technical platform for stellar generation, research, and visualization. We have officially executed the transition plan, gutting the “game” and hardening the “platform.” The Great Purge: lunar-stellar-core The era of lunar-game-backend is over. We have performed a git mv on the heart of the engine to establish a strict architectural boundary. Logic Extraction: We have completely removed all traces of Enemies, Projectiles, HP, Attacks, and the “Attention Map.” The simulation no longer cares if you are “watching” a star; it only cares about the physics. The Core: The new lunar-stellar-core crate is now framework-agnostic. It handles only the technical state: camera math, sector caching, and the pipeline results. Terminology Shift: “World” is now “StarScene.” It’s no longer a level; it’s a coordinate-stable dataset. Unified Multi-Platform Deployment We’ve consolidated our frontend logic. Instead of separate builds, we now have a single Managed Frontend Service with a unified builder. Target Switching: Through the lns utility, we can now hot-swap between web , desktop , and android targets. Android Integration: The platform now supports Android NDK/SDK. We’ve replaced mouse-only logic with Pointer Events , enabling touch-based pan/zoom/selection. Runtime Config: The backend now dynamically injects the correct URL (handling the 10.0.2.2 emulator trap) based on the active platform. Sandbox 2.0: The Admin Overlay The Sandbox is no longer a separate copy of the simulation. It has evolved into a Meta-Management Shell for the real frontend. The Iframe Bridge: The Sandbox now embeds the live lunar-frontend via an iframe. Communication Protocol: We implemented a versioned postMessage protocol in lunar-structures . The Sandbox sends Admin Commands (CreateStar, SetCamera) and receives Scene Events (StarSelected). Permanent SIREN Gallery & Drag-and-Drop We’ve moved from “latest renders” to a persistent filesystem-based catalog . Atomic Persistence: Stars created via AI or manual tools are now saved as GalleryStar DTOs. Each star gets its own directory with metadata, SIREN textures, and thumbnails. True Drag-and-Drop: We’ve implemented a custom drag-session in the WebOS. You can now drag a star from the Gallery into the Sandbox to insert it into the live scene, and vice versa. Found Issues The transition hasn’t been without its casualties. Two “boss-level” bugs have appeared during the implementation of the new WebOS logic: Sandbox Handshake & OS Crash: Currently, the Sandbox is failing to “see” the Frontend service through the iframe bridge. Even worse, attempting to initialize the connection often results in a total OS-level hang , crashing the Testbench entirely. We are currently investigating if this is a circular dependency in the backend or a massive memory leak during the handshake. The “Minimize” Trap: While we implemented WindowLifecycle to keep applications alive in the background using display: none , we hit a critical logic error. Once an app is minimized, the “un-minimize” (maximize) function fails to trigger . The app remains in a state of digital limbo, perfectly preserved but completely inaccessible."}, {"post_id": 41159, "ts": "2026-08-05T06:03:25Z", "hours": 3.4289, "text": "DevLog #7: WebOS Evolution, The Black Room, and “lns” Orchestration This update marks a fundamental shift in how we interact with the simulation ecosystem. We have moved away from static dashboards to a fully dynamic WebOS environment within lunar-testbench , alongside a complete overhaul of our launching utility. Lunar-Testbench: The WebOS Overhaul The Testbench has been reimagined as a “Black Room” —a dark, immersive workspace where everything begins with three spotlights. The Spotlight Mechanic The interface features three dormant flashlights. Service Ignition: Clicking a spotlight “turns it on” and launches its corresponding backend service. Dynamic App Injection: Once a service is active, the specific applications depending on that service manifest below the spotlight. The Sandbox: Our most complex tool, the Sandbox , now requires all three services to be active simultaneously, setting the stage for deep-system integration in future updates. The Dock To manage the chaos of multiple windows, we’ve implemented a Bottom Dock . Every running application is pinned here, allowing for seamless switching between training, validation, and live simulation environments. Orchestration: From “lunar-start” to “lns” The way we boot the engine has been streamlined. We’ve stripped the heavy lifting out of the primary entry point to create a more modular startup flow. lns Utility: lunar-start has been evolved into lns —a lightweight micro-utility. Its sole purpose is to initialize the Testbench and trigger the backend. lunar-start-backend: This is a new, dedicated service that acts as the primary launcher. It monitors and manages the lifecycle of all other applications within the suite, ensuring that when you click a service in the UI, the backend is ready to deploy it."}, {"post_id": 31372, "ts": "2026-07-19T18:15:40Z", "hours": 8.1406, "text": "🚀 DevLog #6: Hyper-Optimization, Core Threat Integration, and New Swarm Archetypes ⚙️ Optimization: The Fight for Nanoseconds With the transition to a full 3D environment and manual entity manipulation, the load on the CPU and memory bus grew exponentially. So we tried to optimize as much as possible. 👾 Integration: Enemies in the Core Loop Previously, hostile entities existed only as isolated test units (testbench). Now, enemy fleets are officially hardcoded into the base simulation loop. Autonomous Background AI: Enemy behavior is no longer bound to the player’s viewport. Strategic fleets live their own lives in the background—conquering systems and harvesting resources—even if you are editing a galaxy millions of light-years away. Dynamic Pathfinding: The toughest challenge was stabilizing AI during manual manipulation. If you grab a planet and toss it in front of an enemy dreadnought, the pathfinding algorithm instantly recalculates a safe bypass vector based on the newly altered gravitational signature of that sector. 🛸 New Threat Archetypes: The Utility-Driven AI Each enemy now operates on a Utility AI system, calculating its next move based on distance, health ratios, and—most importantly—the Player’s Attention . We have categorized the hostile forces into six distinct tactical archetypes: Archetype Role Logic Highlight The Tank Heavy Juggernaut Berserk Logic: Its utility increases as its health drops. It becomes more aggressive the harder you try to kill it. The Thief Rapid Raider Attention-Aware: Only strikes stars when the player is looking away ( t_neglect > 15.0 ). High speed (20.0) allows for quick hit-and-run ops. The Invisible Stealth Saboteur Adaptive Camouflage: Maintains $0.05$ visibility. Only reveals itself when the player’s cursor “scans” over it or during brief power-grid flickers. The Scavenger Opportunistic Parasite Pack Mentality: Heavily prioritizes stars that are already under attack by other units to “steal” the resources. The Backstabber Chaos Agent Infighting: If it detects a fellow enemy with $<35 % $ HP, it will betray its own kind to secure the kill for itself. The Coward Skittish Scout Self-Preservation: Immediately generates an escape vector if the player’s “God-Hand” (cursor) gets too close or a Tank enters its vicinity. 🧠 The “Attention Map” Integration The most advanced part of this integration is how these entities interact with the Lunar-Frontend . We don’t just track positions; we track the player’s focus: d_mouse Factor: Enemies calculate their distance to your cursor. Thieves and Cowards use this to decide when to flee or stay in the shadows. t_neglect Metric: The simulation tracks how long it’s been since you last interacted with a specific star. The longer a sector is neglected, the higher the “utility” for an invasion force to move in. ⚔️ Combat Mechanics: Physical Projectiles vs. Direct Damage To keep the simulation performant while maintaining visual fidelity: Star Assaults: Enemies fire physical Projectile entities. Each has its own speed, radius, and damage value, allowing players to potentially intercept them or warp them with gravitational anomalies. Internal Infighting: When enemies like the Backstabber turn on their allies, the damage is processed via an optimized EnemyDamage buffer, bypassing heavy projectile physics for internal “swarm” calculations. Note: ISP issues and local routing to the Hack Club site still make uploading updates feel like sending signals through a dense asteroid belt."}, {"post_id": 12966, "ts": "2026-06-21T06:54:53Z", "hours": 18.7053, "text": "DevLog #5: God-Mode Editor, Crate Separation, and Stealth Features Following the development of “Mission Control,” the project has transitioned into a full 3D environment. The cosmos is no longer just being generated; it can now be manipulated in real-time. Project “Lunar-Hal”: God-Mode Editor The new 3D editor allows for direct manipulation of the simulation rather than just monitoring metrics through the TestBench. Free-Fly Mode: A fully functional in-engine 3D editor. Users can toggle Creator Mode to navigate through stellar clusters at high speeds. Real-Time Manipulation: Selecting a star allows for immediate overrides of mass, spectral class, and luminosity. The SIREN engine recalculates astrophysics on the fly, updating the frontend visuals without performance drops. Architecture: The Great Crate Separation To manage codebase complexity, the backend has undergone a significant architectural refactor. All core gameplay logic has been isolated into a dedicated, independent Rust crate. Modular Design: Rendering overhead and editor scaffolding are now separated from pure game rules, physics, and state machines. Improved Compilation: Logic changes no longer require recompiling the entire project. Crates now compile in isolation, allowing for faster iteration and cleaner incremental builds. Inventory System and Stealth Mechanics Work has begun on a functional inventory system designed to hold “Creator Tools.” This system moves beyond traditional item management into world manipulation. Drag-and-Drop Reality: Mechanics are being implemented to allow users to grab celestial bodies directly from the viewport to rearrange solar systems manually. Entity Interaction: These telekinetic mechanics are also being tested on combat entities. This allows for manual interaction with hostile fleets, such as testing physics logic by moving units into gravitational anomalies like black hole event horizons. Lunar-Frontend: Enhanced UI The UI has been updated to accommodate the new editor and inventory capabilities: Creator Widgets: The modular sidebar now includes inspection panels for editor controls and inventory management. Optimized Streaming: The frontend provides a seamless bridge between TestBench metrics and the heavy 3D viewport, maintaining high performance during active manipulation. Roadmap The next phase of development will focus on: Running heavy simulations of billions of stars in background threads while maintaining editor stability. Stabilizing enemy pathfinding during manual entity manipulation. Preparing the architecture for multiplayer synchronization. Note: DevLog updates may be sporadic due to local ISP and network routing issues affecting access to the Hack Club site. Space logistics are complex, but terrestrial routing remains a significant challenge."}, {"post_id": 7982, "ts": "2026-06-13T09:54:00Z", "hours": 10.8433, "text": "🚀 DevLog #4: The God Mode Dashboard & Stellar Genesis! If Day 3 was about plugging the matrix straight into the engine’s spine, today we built the ultimate command center around it. No more chaos, no more manual config-wrangling via terminal. We just deployed a full-scale infrastructure for total cosmic control! Here is the tactical breakdown of what just dropped in the engineering bay: ⚙️ Project “TestBench”: Total Control & Validation We got tired of guessing what’s actually happening inside our AI’s digital brains, so we built TestBench—the ultimate proving ground for complete testing, training, and validation of every single AI model in the project. Backend Fusion: The whole thing is hardwired straight into our reactive Rust backend. God-Tier UX: Now, benchmarking a dataset, checking loss curves, validating weights, or fine-tuning a model is a matter of a few clicks without ever leaving the ecosystem. Real-time telemetry monitoring. Honestly? It’s clean, it’s seamless, and it just works. 🌟 Meet SIREN: The Star Architect Our AI fleet just got a massive reinforcement. Say hello to our newest model—SIREN. Her sole, monumental objective is the procedural generation of the stars themselves. No more random glowing spheres. SIREN calculates physics, luminosity, spectral classes, and spawns unique, structured astrophysical objects. The cosmos isn’t just procedural anymore; it’s beautifully complex and scientifically backed. 🎛️ Lunar-Frontend: The Creator’s Control Panel A cosmic backend deserves a killer visual interface. We gave lunar-frontend a massive upgrade to make managing this madness an absolute breeze: The Sidebar: We coded a modular, highly responsive sidebar. All your tools, model toggles, and data streams are now neatly organized and right at your fingertips. Next Stop: Unleashing SIREN onto the global map, syncing its generation directly with TestBench metrics, and forcing the frontend to smoothly render billions of new star systems without dropping a single frame! 🚀"}, {"post_id": 4775, "ts": "2026-06-08T08:22:17Z", "hours": 9.8683, "text": "🚀 DevLog #3: The Neural Awakening & Backend Fusion! 🪐 Day 2 was chaos, but Day 3? We just plugged the matrix straight into the spine of the engine! 🧠✨ Remember that “confused toaster” from the last devlog? Yeah, well, it just evolved into a full-blown stellar intellect. The pipeline is locked, loaded, and absolutely cooking. Here is the tactical breakdown of what just dropped in the engineering bay: 🌌 The Big Brain Upgrade (Model & Data): We didn’t just tweak the model; we completely rebuilt its reality. We scraped, cleaned, and injected a massive new dataset, pushing our local parameter model to the absolute limit. No more hallucinating dead stars — lnai now actually understands the cosmic data it’s processing. 🔗 The Great Backend Fusion: The neural net is officially out of the sandbox and merged with the core Rust backend! We wired the prediction pipelines directly into our engine architecture. It’s fast, it’s memory-safe, and it operates with zero friction. Data is flowing from the neural layers to the backend loops in real-time. 🏎️ Zero Meltdown, Pure Performance: Training and running local models usually turns your rig into a literal space heater, but we optimized the living hell out of the inference pipelines. The memory footprint is clean, the tokens are flying, and your GPU can actually breathe while rendering the cosmos. The foundation is solid, the telemetry is clean, and the local universe finally has a brain that doesn’t just work — it thinks . Next stop: weaponizing this intelligence for procedural generation and forcing that flight physics engine to respect the laws of space! 🛰️🔥"}, {"post_id": 1972, "ts": "2026-06-04T07:13:17Z", "hours": 2.9592, "text": "🚀 DevLog #2: Neural Overdrive & Brainstorming LUNAR-AI! 🪐 Day 1 is in the books, and we are officially cooking! We’re pushing the boundaries of our infinite, local-first universe, and things are getting wild in the engineering bay. Here is the lowdown on what just dropped: 🧠 Project LUNAR-AI (lnai) is ALIVE: We officially laid down the first lines of code for our core AI driver! The mission? Giving your local universe a brain. No external API calls, no corporate clouds—just raw, local intelligence. 📉 Reality Check (The Results): Okay, look… right now, the results are, let’s say, highly questionable . It’s giving “confused toaster” more than “galactic supercomputer,” but hey, Rome wasn’t built in a day, and an infinite universe needs a little chaos first. 🛠️ Absolute Grind Mode: The output might be mid right now, but the workflow is at an all-time high. We are working 25/7, refactoring the neural pipelines, and optimizing the backend to make sure this local LLM integration doesn’t melt your PC. The brain is wired, the bugs are being hunted, and the grind never stops. Next stop: making lnai actually smart and finally getting that flight physics engine to behave! 🛰️✨"}, {"post_id": 717, "ts": "2026-06-02T09:35:55Z", "hours": 3.0953, "text": "🚀 DevLog #1: Ignition & Cosmic Foundations for LUNAR-HAL! 🪐 Day 0 is officially complete. We are building an infinite, AI-driven space sandbox powered completely by your local hardware, and the base is locked down: 🌌 Mission Control: Prepared the repository, set up community standards, and went full open-source under the AGPL v3 license to keep our local engine free forever. 💻 Frontend Setup: Fired up the project using Rust + Dioxus! Built the core architecture and launched the first three foundational viewports: Home, About, and Contact. 🛠️ The Manifesto: Designed a killer glassmorphic UI layout and integrated our “Broke-Tech” framework—proudly rendering procedural worlds directly on your GPU. Zero server costs, zero latency, infinite universe. Next stop: implementing the flight physics and interactive star canvas! 🛰️✨"}]...
|
Title: LUNAR-HAL by @INiNiDS | Stardance
Devlogs: Title: LUNAR-HAL by @INiNiDS | Stardance
Devlogs:
🚀 DevLog #1: Ignition & Cosmic Foundations for LUNAR-HAL! 🪐 Day 0 is officially complete. We are building an infinite, AI-driven space sandbox powered completely by your local hardware, and the base is locked down: 🌌 Mission Control: Prepared the repository, set up community standards, and went full open-source under the AGPL v3 license to keep our local engine free forever. 💻 Frontend Setup: Fired up the project using Rust + Dioxus! Built the core architecture and launched the first three foundational viewports: Home, About, and Contact. 🛠️ The Manifesto: Designed a killer glassmorphic UI layout and integrated our “Broke-Tech” framework—proudly rendering procedural worlds directly on your GPU. Zero server costs, zero latency, infinite universe. Next stop: implementing the flight physics and interactive star canvas! 🛰️✨
🚀 DevLog #2: Neural Overdrive & Brainstorming LUNAR-AI! 🪐 Day 1 is in the books, and we are officially cooking! We’re pushing the boundaries of our infinite, local-first universe, and things are getting wild in the engineering bay. Here is the lowdown on what just dropped: 🧠 Project LUNAR-AI (lnai) is ALIVE: We officially laid down the first lines of code for our core AI driver! The mission? Giving your local universe a brain. No external API calls, no corporate clouds—just raw, local intelligence. 📉 Reality Check (The Results): Okay, look… right now, the results are, let’s say, highly questionable . It’s giving “confused toaster” more than “galactic supercomputer,” but hey, Rome wasn’t built in a day, and an infinite universe needs a little chaos first. 🛠️ Absolute Grind Mode: The output might be mid right now, but the workflow is at an all-time high. We are working 25/7, refactoring the neural pipelines, and optimizing the backend to make sure this local LLM integration doesn’t melt your PC. The brain is wired, the bugs are being hunted, and the grind never stops. Next stop: making lnai actually smart and finally getting that flight physics engine to behave! 🛰️✨
🚀 DevLog #3: The Neural Awakening & Backend Fusion! 🪐 Day 2 was chaos, but Day 3? We just plugged the matrix straight into the spine of the engine! 🧠✨ Remember that “confused toaster” from the last devlog? Yeah, well, it just evolved into a full-blown stellar intellect. The pipeline is locked, loaded, and absolutely cooking. Here is the tactical breakdown of what just dropped in the engineering bay: 🌌 The Big Brain Upgrade (Model & Data): We didn’t just tweak the model; we completely rebuilt its reality. We scraped, cleaned, and injected a massive new dataset, pushing our local parameter model to the absolute limit. No more hallucinating dead stars — lnai now actually understands the cosmic data it’s processing. 🔗 The Great Backend Fusion: The neural net is officially out of the sandbox and merged with the core Rust backend! We wired the prediction pipelines directly into our engine architecture. It’s fast, it’s memory-safe, and it operates with zero friction. Data is flowing from the neural layers to the backend loops in real-time. 🏎️ Zero Meltdown, Pure Performance: Training and running local models usually turns your rig into a literal space heater, but we optimized the living hell out of the inference pipelines. The memory footprint is clean, the tokens are flying, and your GPU can actually breathe while rendering the cosmos. The foundation is solid, the telemetry is clean, and the local universe finally has a brain that doesn’t just work — it thinks . Next stop: weaponizing this intelligence for procedural generation and forcing that flight physics engine to respect the laws of space! 🛰️🔥
🚀 DevLog #4: The God Mode Dashboard & Stellar Genesis! If Day 3 was about plugging the matrix straight into the engine’s spine, today we built the ultimate command center around it. No more chaos, no more manual config-wrangling via terminal. We just deployed a full-scale infrastructure for total cosmic control! Here is the tactical breakdown of what just dropped in the engineering bay: ⚙️ Project “TestBench”: Total Control & Validation We got tired of guessing what’s actually happening inside our AI’s digital brains, so we built TestBench—the ultimate proving ground for complete testing, training, and validation of every single AI model in the project. Backend Fusion: The whole thing is hardwired straight into our reactive Rust backend. God-Tier UX: Now, benchmarking a dataset, checking loss curves, validating weights, or fine-tuning a model is a matter of a few clicks without ever leaving the ecosystem. Real-time telemetry monitoring. Honestly? It’s clean, it’s seamless, and it just works. 🌟 Meet SIREN: The Star Architect Our AI fleet just got a massive reinforcement. Say hello to our newest model—SIREN. Her sole, monumental objective is the procedural generation of the stars themselves. No more random glowing spheres. SIREN calculates physics, luminosity, spectral classes, and spawns unique, structured astrophysical objects. The cosmos isn’t just procedural anymore; it’s beautifully complex and scientifically backed. 🎛️ Lunar-Frontend: The Creator’s Control Panel A cosmic backend deserves a killer visual interface. We gave lunar-frontend a massive upgrade to make managing this madness an absolute breeze: The Sidebar: We coded a modular, highly responsive sidebar. All your tools, model toggles, and data streams are now neatly organized and right at your fingertips. Next Stop: Unleashing SIREN onto the global map, syncing its generation directly with TestBench metrics, and forcing the frontend to smoothly render billions of new star systems without dropping a single frame! 🚀
DevLog #5: God-Mode Editor, Crate Separation, and Stealth Features Following the development of “Mission Control,” the project has transitioned into a full 3D environment. The cosmos is no longer just being generated; it can now be manipulated in real-time. Project “Lunar-Hal”: God-Mode Editor The new 3D editor allows for direct manipulation of the simulation rather than just monitoring metrics through the TestBench. Free-Fly Mode: A fully functional in-engine 3D editor. Users can toggle Creator Mode to navigate through stellar clusters at high speeds. Real-Time Manipulation: Selecting a star allows for immediate overrides of mass, spectral class, and luminosity. The SIREN engine recalculates astrophysics on the fly, updating the frontend visuals without performance drops. Architecture: The Great Crate Separation To manage codebase complexity, the backend has undergone a significant architectural refactor. All core gameplay logic has been isolated into a dedicated, independent Rust crate. Modular Design: Rendering overhead and editor scaffolding are now separated from pure game rules, physics, and state machines. Improved Compilation: Logic changes no longer require recompiling the entire project. Crates now compile in isolation, allowing for faster iteration and cleaner incremental builds. Inventory System and Stealth Mechanics Work has begun on a functional inventory system designed to hold “Creator Tools.” This system moves beyond traditional item management into world manipulation. Drag-and-Drop Reality: Mechanics are being implemented to allow users to grab celestial bodies directly from the viewport to rearrange solar systems manually. Entity Interaction: These telekinetic mechanics are also being tested on combat entities. This allows for manual interaction with hostile fleets, such as testing physics logic by moving units into gravitational anomalies like black hole event horizons. Lunar-Frontend: Enhanced UI The UI has been updated to accommodate the new editor and inventory capabilities: Creator Widgets: The modular sidebar now includes inspection panels for editor controls and inventory management. Optimized Streaming: The frontend provides a seamless bridge between TestBench metrics and the heavy 3D viewport, maintaining high performance during active manipulation. Roadmap The next phase of development will focus on: Running heavy simulations of billions of stars in background threads while maintaining editor stability. Stabilizing enemy pathfinding during manual entity manipulation. Preparing the architecture for multiplayer synchronization. Note: DevLog updates may be sporadic due to local ISP and network routing issues affecting access to the Hack Club site. Space logistics are complex, but terrestrial routing remains a significant challenge.
🚀 DevLog #6: Hyper-Optimization, Core Threat Integration, and New Swarm Archetypes ⚙️ Optimization: The Fight for Nanoseconds With the transition to a full 3D environment and manual entity manipulation, the load on the CPU and memory bus grew exponentially. So we tried to optimize as much as possible. 👾 Integration: Enemies in the Core Loop Previously, hostile entities existed only as isolated test units (testbench). Now, enemy fleets are officially hardcoded into the base simulation loop. Autonomous Background AI: Enemy behavior is no longer bound to the player’s viewport. Strategic fleets live their own lives in the background—conquering systems and harvesting resources—even if you are editing a galaxy millions of light-years away. Dynamic Pathfinding: The toughest challenge was stabilizing AI during manual manipulation. If you grab a planet and toss it in front of an enemy dreadnought, the pathfinding algorithm instantly recalculates a safe bypass vector based on the newly altered gravitational signature of that sector. 🛸 New Threat Archetypes: The Utility-Driven AI Each enemy now operates on a Utility AI system, calculating its next move based on distance, health ratios, and—most importantly—the Player’s Attention . We have categorized the hostile forces into six distinct tactical archetypes: Archetype Role Logic Highlight The Tank Heavy Juggernaut Berserk Logic: Its utility increases as its health drops. It becomes more aggressive the harder you try to kill it. The Thief Rapid Raider Attention-Aware: Only strikes stars when the player is looking away ( t_neglect > 15.0 ). High speed (20.0) allows for quick hit-and-run ops. The Invisible Stealth Saboteur Adaptive Camouflage: Maintains $0.05$ visibility. Only reveals itself when the player’s cursor “scans” over it or during brief power-grid flickers. The Scavenger Opportunistic Parasite Pack Mentality: Heavily prioritizes stars that are already under attack by other units to “steal” the resources. The Backstabber Chaos Agent Infighting: If it detects a fellow enemy with $<35 % $ HP, it will betray its own kind to secure the kill for itself. The Coward Skittish Scout Self-Preservation: Immediately generates an escape vector if the player’s “God-Hand” (cursor) gets too close or a Tank enters its vicinity. 🧠 The “Attention Map” Integration The most advanced part of this integration is how these entities interact with the Lunar-Frontend . We don’t just track positions; we track the player’s focus: d_mouse Factor: Enemies calculate their distance to your cursor. Thieves and Cowards use this to decide when to flee or stay in the shadows. t_neglect Metric: The simulation tracks how long it’s been since you last interacted with a specific star. The longer a sector is neglected, the higher the “utility” for an invasion force to move in. ⚔️ Combat Mechanics: Physical Projectiles vs. Direct Damage To keep the simulation performant while maintaining visual fidelity: Star Assaults: Enemies fire physical Projectile entities. Each has its own speed, radius, and damage value, allowing players to potentially intercept them or warp them with gravitational anomalies. Internal Infighting: When enemies like the Backstabber turn on their allies, the damage is processed via an optimized EnemyDamage buffer, bypassing heavy projectile physics for internal “swarm” calculations. Note: ISP issues and local routing to the Hack Club site still make uploading updates feel like sending signals through a dense asteroid belt.
DevLog #7: WebOS Evolution, The Black Room, and “lns” Orchestration This update marks a fundamental shift in how we interact with the simulation ecosystem. We have moved away from static dashboards to a fully dynamic WebOS environment within lunar-testbench , alongside a complete overhaul of our launching utility. Lunar-Testbench: The WebOS Overhaul The Testbench has been reimagined as a “Black Room” —a dark, immersive workspace where everything begins with three spotlights. The Spotlight Mechanic The interface features three dormant flashlights. Service Ignition: Clicking a spotlight “turns it on” and launches its corresponding backend service. Dynamic App Injection: Once a service is active, the specific applications depending on that service manifest below the spotlight. The Sandbox: Our most complex tool, the Sandbox , now requires all three services to be active simultaneously, setting the stage for deep-system integration in future updates. The Dock To manage the chaos of multiple windows, we’ve implemented a Bottom Dock . Every running application is pinned here, allowing for seamless switching between training, validation, and live simulation environments. Orchestration: From “lunar-start” to “lns” The way we boot the engine has been streamlined. We’ve stripped the heavy lifting out of the primary entry point to create a more modular startup flow. lns Utility: lunar-start has been evolved into lns —a lightweight micro-utility. Its sole purpose is to initialize the Testbench and trigger the backend. lunar-start-backend: This is a new, dedicated service that acts as the primary launcher. It monitors and manages the lifecycle of all other applications within the suite, ensuring that when you click a service in the UI, the backend is ready to deploy it.
* 🚀 DevLog #8: The Great Pivot — From Game to Technical Stellar Platform * The mission has changed. Following the deployment of the WebOS in DevLog #7, we realized that the “game” mechanics were holding back the true potential of the engine. This update marks our transition from a simulation with combat elements to a high-fidelity technical platform for stellar generation, research, and visualization. We have officially executed the transition plan, gutting the “game” and hardening the “platform.” The Great Purge: lunar-stellar-core The era of lunar-game-backend is over. We have performed a git mv on the heart of the engine to establish a strict architectural boundary. Logic Extraction: We have completely removed all traces of Enemies, Projectiles, HP, Attacks, and the “Attention Map.” The simulation no longer cares if you are “watching” a star; it only cares about the physics. The Core: The new lunar-stellar-core crate is now framework-agnostic. It handles only the technical state: camera math, sector caching, and the pipeline results. Terminology Shift: “World” is now “StarScene.” It’s no longer a level; it’s a coordinate-stable dataset. Unified Multi-Platform Deployment We’ve consolidated our frontend logic. Instead of separate builds, we now have a single Managed Frontend Service with a unified builder. Target Switching: Through the lns utility, we can now hot-swap between web , desktop , and android targets. Android Integration: The platform now supports Android NDK/SDK. We’ve replaced mouse-only logic with Pointer Events , enabling touch-based pan/zoom/selection. Runtime Config: The backend now dynamically injects the correct URL (handling the 10.0.2.2 emulator trap) based on the active platform. Sandbox 2.0: The Admin Overlay The Sandbox is no longer a separate copy of the simulation. It has evolved into a Meta-Management Shell for the real frontend. The Iframe Bridge: The Sandbox now embeds the live lunar-frontend via an iframe. Communication Protocol: We implemented a versioned postMessage protocol in lunar-structures . The Sandbox sends Admin Commands (CreateStar, SetCamera) and receives Scene Events (StarSelected). Permanent SIREN Gallery & Drag-and-Drop We’ve moved from “latest renders” to a persistent filesystem-based catalog . Atomic Persistence: Stars created via AI or manual tools are now saved as GalleryStar DTOs. Each star gets its own directory with metadata, SIREN textures, and thumbnails. True Drag-and-Drop: We’ve implemented a custom drag-session in the WebOS. You can now drag a star from the Gallery into the Sandbox to insert it into the live scene, and vice versa. Found Issues The transition hasn’t been without its casualties. Two “boss-level” bugs have appeared during the implementation of the new WebOS logic: Sandbox Handshake & OS Crash: Currently, the Sandbox is failing to “see” the Frontend service through the iframe bridge. Even worse, attempting to initialize the connection often results in a total OS-level hang , crashing the Testbench entirely. We are currently investigating if this is a circular dependency in the backend or a massive memory leak during the handshake. The “Minimize” Trap: While we implemented WindowLifecycle to keep applications alive in the background using display: none , we hit a critical logic error. Once an app is minimized, the “un-minimize” (maximize) function fails to trigger . The app remains in a state of digital limbo, perfectly preserved but completely inaccessible.
DevLog #9: Checkpoint Hardening & Stage 5 GNN Kinematics Convergence * This session was focused on a deep technical milestone: diagnosing a critical engine staging bug in LUNAR-HAL and driving the Stellar GNN-kinematics pipeline through the completion of Stage 5. 1. 🛠️ Staging Architecture & Atomic Checkpoint RCA (Rust) Diagnosed and resolved a critical issue in the --resume workflow where staging logic triggered a self-copy ( src == dst ), truncating output checkpoint weights upon restart. Implemented robust canonical path checking ( std::fs: :canonicalize ) to ensure fully atomic weight persistence across interruption signals ( SIGINT / SIGTERM ). Hardened checkpoint state serialization, eliminating filesystem race conditions during runtime hot-reloads. 2. Stage 5: GNN-Kinematics Training Executed the 200-epoch training run for the galactic velocity prediction model ($v_x, v_y, v_z$ derived from positions + photometry). Validated host telemetry: stable VRAM footprint on local NVIDIA GeForce RTX 5070 (~3.1 GB / 12 GB allocated) with optimal throughput (~30s / epoch). 3. Loss & Convergence Verification Train Loss: Decreased to ~0.7660 . Validation Loss: Reached a clean, stable quasi-stationary plateau at ~0.7694 . Physics Constraint: Invariant equilibrium maintained throughout ( phys_loss ≈ 0.7700 ), demonstrating high generalization without overfitting.
Alright, final devlog! Went all-in on bug squashing for this one—crushed a ton of issues, finally got CI completely green and stable, cleared out all the CodeQL alerts, and pushed the demo build. So yeah… I’m officially shipping now!
Ships:
Finally shipping this! It honestly took forever and I burned out twice along the way, but I pushed through to get it over the finish line. Try out the live demo or grab the local build. Heads up: the web demo might feel super sluggish since the models are running on Heroku, so expect some delay. Also, all demo sessions share the same persistent worlds! Have Fun!...
|
1793350112.5997744
|
1793436512.5997744
|
|
39530
|
Ship Talkers by @SeradedStripes | Stardance
|
SeradedStripes
|
1
|
44.69
|
676
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-17T09:59:54Z", "hours": 41.0, "multiplier": 13.61, "payout": 676, "blessing": "neutral", "text": "I made shiptalkers! A bot that originally allows you to compare your slack time to hackatime time. Previously it was shut down, but I have revived it! With many additions as well. It features a website with a bunch of aggregated stats, a cool api and sweet leaderboards. Even a search system! It processes all messages in hack club slack to calculate slack time. Although if you opt in to it storing your messages as well, it will be way more accurate and will stay updated faster.", "repo": "https://github.com/SeradedStripes/shiptalkers", "demo": "https://shiptalkers.kirze.de"}]...
|
[{"post_id": 75302, "ts": "202 [{"post_id": 75302, "ts": "2026-09-29T18:01:58Z", "hours": 1.6317, "text": "Updates Quite a bit this time that are important. First up I added a link to the github in the header and fixed the bot to actually follow slack rate limtis. Added a board for linked accounts page. Big thing now. Added consent gated slack scraping. Basically fd told me i need people to opt in. And finally the last big thing I added channel blacklisting as a shipwright and a goi linked through OAuth so I had to blacklist all sw channels and goi channel as they have sensitive messages in them"}, {"post_id": 74418, "ts": "2026-09-27T11:00:42Z", "hours": 2.0608, "text": "Update time Been quite a bit since ship and i decided because of the stardance extension I’m going to do more devlogs. Mainly i added an opt out feature and realized the new defaults for scraping speeds were shit so i undid them. I then decided that because there were channels with fucking 3000 thread roots, i lowered the age limit of threads to 7 days instead of 30 days. I nuked opt out/opt in and nuked the manual apps needed for scraping. There is now an OAuth system with slack, you can link your account and it will scrape your messages in private channels you are in. works without this though. Added a max scraping per minute variable so i dont strain my internet connection a bunch. And finally I also added the [PRIVATE] and [ARCHIVED] badges to channels"}, {"post_id": 69557, "ts": "2026-09-17T09:48:52Z", "hours": 2.6625, "text": "Updates Should be final update before I ship Added all users and all channels boards Renamed Leaderboards to just Boards Normalized colum widths for those boards and added pagination We were hammering hackatime, it now has a hard limit of 50k hackatime reqs/day and 1req/sec Massive update to stats page so it displays more info and is more relevant. Changed total time to total hours where the time was hours and added total time in format of years/months/ etc. as well We sped up docker builds a bunch We retry known private hackatime users ever 30 days now Fixed a shared message-scrape lock The response when you ask the bot for time now includes a link to your/person your checking time ofs stats page I think thats about it"}, {"post_id": 68061, "ts": "2026-09-14T13:34:14Z", "hours": 3.9675, "text": "Updates Quite a bunch of updates this time, a lot of work has been done, and i feel like I was nearly killed by fd. Okay so Shiptalkers is now opt in. Most of this devlogs time was spent: Adding a message locator system, basically maps out where every message is instead of storing content of it Process messages without storing message content Backfill message content for users who opt in Add a custom shiptalkers id assigned to messages so we dont store sender id of each message. To opt in you can send “Opt In” in the shiptalkers channel Apart from that I migrated from in file SQL to a proper migrations system. General updates Added mobile support Massive cleanup of AGENTS.md 0 Full fetch and scrape all messages run in parrallel now. Archived channels card for stats page. Now persists thread rescans, added a thread timestamp index, persisted thread high-water marks. Reduced repeated history-wide scans Added durable consent backfill progress and fixed backfills blocking fresh message checks Fixed a per message update of the shared database counter row. It now updates per statement Score recomputation is now hourly instead of passly. I think thats about it. Main point of this is that we got scraping to be way faster, and we got opt in requirement."}, {"post_id": 64872, "ts": "2026-09-09T15:53:56Z", "hours": 2.1342, "text": "Updates Bunch of API related things this time Added api docs API key section in account tab and APIT key account endpoints Added CSRF support (lmao i dont know why i didnt have it before) Made the api key response be a popup in account page and centered it in a later commit Added Stats API endpoint Added Max Age to cookies Website and slack bot now share 1 source of truth for stats (stupid that i didnt have it like this already) Added granting perms to other api keys New user joins are now picked up in real time. Thats about it"}, {"post_id": 62009, "ts": "2026-09-05T06:41:19Z", "hours": 0.9625, "text": "Updates Really short devlog this time. Added Error logging for session_query Resumable channel sweeps Use a new action for build & deploys Workflows are also greatly increased with speed"}, {"post_id": 60402, "ts": "2026-09-02T18:19:48Z", "hours": 3.8992, "text": "Alot of updates this time Updates Brand new scraper crate separate from app, dk if I have mentioned it before in devlogs. It does slack and hackatime scraping all in one so we can have the main app deploys not interrupt scrapes. Updates^2 Added “a” keyword - Alias for “all time” Updated settings.rs and example.env to fit new defaults Fixed refresh_daily_stats failing on a second Fixed a bunch of ::bigint needing to be everywhere a sum() was decoded switched scraper to mimalloc allocator Replaced ts with real message_tis / 1000000 (I dont know if i put enough/too many zeros here) Fixed slack time recomputing in new postgredb Precomputes page stats now Removed a useless half-hourly job ON CONFLICT now only fires when counts actually change Added DB available probe to tests Better logging (disabled timestamps in logger) Added a mark_seen dedupe Updated hackatime sync logging to be less taking up all logs Added zstd + drop duplicate tables Removed zstd as postgre18-alpine does not come with it and I am not rescraping slack Only the scraper can init tables now I don’t think im missing anything else i did, If I am though then sorry gois Also see in one of the images below is total ram and cpu usage. somehow the postgre db is using over 4.5G of ram"}, {"post_id": 55696, "ts": "2026-08-27T17:39:34Z", "hours": 2.3453, "text": "Updates Mighta lowkey forgot to be doing devlogs again… Anyway Updates^2 Basically any keyword for time works now Cargo Chef is now used for docker Updated AGENTS.md No longer requires hackatime data to display slack time data. Ported everything from clickhouse to postgresql but havent deployed that yet You can now mention other people to get their stats I think thats it Might be wrong on that tho. Anyway I got better from being sick last week and im sick again Also used @mahad in screenshot below, def not an excuse just for a random pung"}, {"post_id": 50981, "ts": "2026-08-20T13:52:57Z", "hours": 1.0983, "text": "Updates We still sick (not much better today) but i got some work done Updates^2 Split a bunch of existing code into separate files for maintainability added font caching parallel resyncs (hackatime) More memory/CPU optimizations in the code (I lowkey forgot what i changed for this Thats it for now"}, {"post_id": 50495, "ts": "2026-08-19T17:34:53Z", "hours": 1.4911, "text": "A decent length devlog this time So recently I have been sick so i got less time. (Wish me to get better soon) Anyway enough of that, on to the changes: Updates Fixed authless hackatime syncing Using the spans api of hackatime so we get all data for time specific commands fix SQL and rust helper dividing by 1000000 Wrapped the entire sum(if(…)) in toUInt64(), which fixed the slack bot reporting wrong time from public hackatime syncing change. It makes it so clickhouse sees a single output type regardless of what it infers inside. Thats about it"}, {"post_id": 47761, "ts": "2026-08-15T22:05:51Z", "hours": 1.8011, "text": "Updates We swapped aws-lc-rs for ring futures swapped for futures-util nuked tower crate & lowered what is pulled for tokio Brought back dependabot auto merge Added cool charts Nuked cool charts Stats page changed again (wip) Broke hackatime time syncing when i tried to make it not need auth (tmrw me problem) Added page streaming and incremantal word totals"}, {"post_id": 47444, "ts": "2026-08-15T11:36:12Z", "hours": 2.1614, "text": "Updates improving my devlog to hour ratio Anyway.. New db scrape is completed! Major changes Top words leaderboard Leaderboard search system Updated stats page (see below) Added a combined leaderboard (hackatime + slack time) Added backups in coolify Minor repo restructure (moved shiptalkers-app to its own shiptalkers-app/ dir) Added gzip support for slack api scrapers im lowkey running out of things to add… Drop any suggestions in the comments"}, {"post_id": 45844, "ts": "2026-08-12T15:56:53Z", "hours": 2.9381, "text": "Updates Tad bit of time that i forgot to log progressively. Anyway DB got corrupted We rescraping dis shi rn Added a whole new formula (multiple times actually) Added tests for formula Did a bunch of fixes to try and save corrupted db Afterwards i just nuked it and we started rescraping yesterday Made ini_tables probe slack_messages_by_user first Added default clickhouse values into the rust app Now recomputes stats page cache every 30s Fixed UNKNOWN_IDENTIFIER: ‘chars’ (Yeah i had claude do this one) Added a better system to add new slack keys to the env, instead of 1 big env var, its now, SLACK_BOT_TOKEN_X=xoxb…. Where X is token number made it a shared work queue instead of static round robin sharding for scraper Switched to a mimalloc allocator from glibc It now does backfills for channels and users in parallel Added a system for incase hackatime goes down Did a commit for one new keyboard being “last 2 months” It also now scrapes reactions"}, {"post_id": 43402, "ts": "2026-08-08T16:58:43Z", "hours": 2.14, "text": "Updates Added proper test system More keywords Heavily sped up per user pages & stats page Updates stats ui to mostly show 5 decs for db size in gib added a display load time in ms to footer Nuked the admin panel Dependabot & PR labeler system(s) We now use alpine base for docker We got a tests system now I think thats it, idk tho"}, {"post_id": 43170, "ts": "2026-08-08T09:04:47Z", "hours": 3.83, "text": "Updates May have forgot to be doing devlogs Anyway Actual thread scanning and actually scraping its replies Recconect system for run_socket so the slack bot part stops dying Added an admin panel Is bot and Is Deleted acc tags to make leaderboard better Slack_app_creation script (to scrape with more tokens.. faster) Added error support from slack Proper slack stats time computation for in channel image Scan older threads support (up to 30 days) If slack stops sending periodic pings then slack bot auto reconnects Displays coding time as hours and minutes instead of just minutes DB schema updates"}, {"post_id": 40194, "ts": "2026-08-03T16:25:15Z", "hours": 3.8114, "text": "Oops, forgot to devlog for a bit Anyway Updates its online it works Round robin support for multiple tokens for > speed it replies in channel (ship-talkers channel) downgraded clickhouse to 26.4 for my older server added a proper health check endpoint Optimized slack messages daily Realized conversations.history supports 999 per request instead of just 100 msgs Auto deploy system Limited resources for clickhouse Consistant rescrape checks w/ round robin support ofc Thats about it i think Oh yeah it finished the full slack scrape Next up Changing scrape system for privacy reasons (maybe) more scrape accs QOL features Idk gang"}, {"post_id": 39345, "ts": "2026-08-02T08:05:59Z", "hours": 1.7075, "text": "Updates As usual we got a bunch of features Search system Channel search User Search Per user stats page Per channel stats page Hackatime/HCA login systems Header & Footer Added a cool banner at top of the page to show its scraping for initial scrape Fix docker failing due to forgeting to COPY templates for it Added scopes needed for everything to readme Switched out the purple for a soft pink Still not done scraping"}, {"post_id": 38890, "ts": "2026-08-01T13:41:10Z", "hours": 1.4708, "text": "Updates Docker stuff Better concurrency system Replaced hand rolled bucket Two queue system for need to be scraped and already scraped checking Show total db size in stats page Backfilling for already scraped channels Top chatters and top shiptalkers tables in stats page Move all styling to a css file Add the css file to the repo as i forgot to include it in the move all styling to css file commit Use askama crate for server side rendering to remove javascript in website remove dead code and dead crates Create AGENTS.md Syslink CLAUDE.md to AGENTS.md Create clippy.toml Create a justfile Create CONTRIBUTING.md Add expected environment to contributing file Realize slack api sucks for the millionth time Fix things that i was ignoring and just lint needed me to fix to not error outs Scraping is coming along good too over 1k channels done 14.8k to go"}, {"post_id": 38777, "ts": "2026-08-01T10:43:33Z", "hours": 1.6328, "text": "Updates Archived Channel ID scraping I then reverted that change 2 days later after how stupid it was No more infinite scan loops Message scraping support Auto dedupe Better scraping Better logging Thread Scraping Then better thread scraping Finally Thread reply scraping in background"}, {"post_id": 35126, "ts": "2026-07-26T11:24:54Z", "hours": 1.0536, "text": "Updates We got it scraping total channel count so far Proper list Link up stats page to clickhouse Fix it not pushing to clickhouse often enough Start off with scraping total channel count Docker compose stuff Fun Fact: There is a total of 15,958 channels in Hack Club Slack!"}, {"post_id": 35088, "ts": "2026-07-26T09:20:49Z", "hours": 0.275, "text": "Updates Basic project setup"}]...
|
Title: Ship Talkers by @SeradedStripes | Stardance Title: Ship Talkers by @SeradedStripes | Stardance
Devlogs:
Updates Basic project setup
Updates We got it scraping total channel count so far Proper list Link up stats page to clickhouse Fix it not pushing to clickhouse often enough Start off with scraping total channel count Docker compose stuff Fun Fact: There is a total of 15,958 channels in Hack Club Slack!
Updates Archived Channel ID scraping I then reverted that change 2 days later after how stupid it was No more infinite scan loops Message scraping support Auto dedupe Better scraping Better logging Thread Scraping Then better thread scraping Finally Thread reply scraping in background
Updates Docker stuff Better concurrency system Replaced hand rolled bucket Two queue system for need to be scraped and already scraped checking Show total db size in stats page Backfilling for already scraped channels Top chatters and top shiptalkers tables in stats page Move all styling to a css file Add the css file to the repo as i forgot to include it in the move all styling to css file commit Use askama crate for server side rendering to remove javascript in website remove dead code and dead crates Create AGENTS.md Syslink CLAUDE.md to AGENTS.md Create clippy.toml Create a justfile Create CONTRIBUTING.md Add expected environment to contributing file Realize slack api sucks for the millionth time Fix things that i was ignoring and just lint needed me to fix to not error outs Scraping is coming along good too over 1k channels done 14.8k to go
Updates As usual we got a bunch of features Search system Channel search User Search Per user stats page Per channel stats page Hackatime/HCA login systems Header & Footer Added a cool banner at top of the page to show its scraping for initial scrape Fix docker failing due to forgeting to COPY templates for it Added scopes needed for everything to readme Switched out the purple for a soft pink Still not done scraping
Oops, forgot to devlog for a bit Anyway Updates its online it works Round robin support for multiple tokens for > speed it replies in channel (ship-talkers channel) downgraded clickhouse to 26.4 for my older server added a proper health check endpoint Optimized slack messages daily Realized conversations.history supports 999 per request instead of just 100 msgs Auto deploy system Limited resources for clickhouse Consistant rescrape checks w/ round robin support ofc Thats about it i think Oh yeah it finished the full slack scrape Next up Changing scrape system for privacy reasons (maybe) more scrape accs QOL features Idk gang
Updates May have forgot to be doing devlogs Anyway Actual thread scanning and actually scraping its replies Recconect system for run_socket so the slack bot part stops dying Added an admin panel Is bot and Is Deleted acc tags to make leaderboard better Slack_app_creation script (to scrape with more tokens.. faster) Added error support from slack Proper slack stats time computation for in channel image Scan older threads support (up to 30 days) If slack stops sending periodic pings then slack bot auto reconnects Displays coding time as hours and minutes instead of just minutes DB schema updates
Updates Added proper test system More keywords Heavily sped up per user pages & stats page Updates stats ui to mostly show 5 decs for db size in gib added a display load time in ms to footer Nuked the admin panel Dependabot & PR labeler system(s) We now use alpine base for docker We got a tests system now I think thats it, idk tho
Updates Tad bit of time that i forgot to log progressively. Anyway DB got corrupted We rescraping dis shi rn Added a whole new formula (multiple times actually) Added tests for formula Did a bunch of fixes to try and save corrupted db Afterwards i just nuked it and we started rescraping yesterday Made ini_tables probe slack_messages_by_user first Added default clickhouse values into the rust app Now recomputes stats page cache every 30s Fixed UNKNOWN_IDENTIFIER: ‘chars’ (Yeah i had claude do this one) Added a better system to add new slack keys to the env, instead of 1 big env var, its now, SLACK_BOT_TOKEN_X=xoxb…. Where X is token number made it a shared work queue instead of static round robin sharding for scraper Switched to a mimalloc allocator from glibc It now does backfills for channels and users in parallel Added a system for incase hackatime goes down Did a commit for one new keyboard being “last 2 months” It also now scrapes reactions
Updates improving my devlog to hour ratio Anyway.. New db scrape is completed! Major changes Top words leaderboard Leaderboard search system Updated stats page (see below) Added a combined leaderboard (hackatime + slack time) Added backups in coolify Minor repo restructure (moved shiptalkers-app to its own shiptalkers-app/ dir) Added gzip support for slack api scrapers im lowkey running out of things to add… Drop any suggestions in the comments
Updates We swapped aws-lc-rs for ring futures swapped for futures-util nuked tower crate & lowered what is pulled for tokio Brought back dependabot auto merge Added cool charts Nuked cool charts Stats page changed again (wip) Broke hackatime time syncing when i tried to make it not need auth (tmrw me problem) Added page streaming and incremantal word totals
A decent length devlog this time So recently I have been sick so i got less time. (Wish me to get better soon) Anyway enough of that, on to the changes: Updates Fixed authless hackatime syncing Using the spans api of hackatime so we get all data for time specific commands fix SQL and rust helper dividing by 1000000 Wrapped the entire sum(if(…)) in toUInt64(), which fixed the slack bot reporting wrong time from public hackatime syncing change. It makes it so clickhouse sees a single output type regardless of what it infers inside. Thats about it
Updates We still sick (not much better today) but i got some work done Updates^2 Split a bunch of existing code into separate files for maintainability added font caching parallel resyncs (hackatime) More memory/CPU optimizations in the code (I lowkey forgot what i changed for this Thats it for now
Updates Mighta lowkey forgot to be doing devlogs again… Anyway Updates^2 Basically any keyword for time works now Cargo Chef is now used for docker Updated AGENTS.md No longer requires hackatime data to display slack time data. Ported everything from clickhouse to postgresql but havent deployed that yet You can now mention other people to get their stats I think thats it Might be wrong on that tho. Anyway I got better from being sick last week and im sick again Also used @mahad in screenshot below, def not an excuse just for a random pung
Alot of updates this time Updates Brand new scraper crate separate from app, dk if I have mentioned it before in devlogs. It does slack and hackatime scraping all in one so we can have the main app deploys not interrupt scrapes. Updates^2 Added “a” keyword - Alias for “all time” Updated settings.rs and example.env to fit new defaults Fixed refresh_daily_stats failing on a second Fixed a bunch of ::bigint needing to be everywhere a sum() was decoded switched scraper to mimalloc allocator Replaced ts with real message_tis / 1000000 (I dont know if i put enough/too many zeros here) Fixed slack time recomputing in new postgredb Precomputes page stats now Removed a useless half-hourly job ON CONFLICT now only fires when counts actually change Added DB available probe to tests Better logging (disabled timestamps in logger) Added a mark_seen dedupe Updated hackatime sync logging to be less taking up all logs Added zstd + drop duplicate tables Removed zstd as postgre18-alpine does not come with it and I am not rescraping slack Only the scraper can init tables now I don’t think im missing anything else i did, If I am though then sorry gois Also see in one of the images below is total ram and cpu usage. somehow the postgre db is using over 4.5G of ram
Updates Really short devlog this time. Added Error logging for session_query Resumable channel sweeps Use a new action for build & deploys Workflows are also greatly increased with speed
Updates Bunch of API related things this time Added api docs API key section in account tab and APIT key account endpoints Added CSRF support (lmao i dont know why i didnt have it before) Made the api key response be a popup in account page and centered it in a later commit Added Stats API endpoint Added Max Age to cookies Website and slack bot now share 1 source of truth for stats (stupid that i didnt have it like this already) Added granting perms to other api keys New user joins are now picked up in real time. Thats about it
Updates Quite a bunch of updates this time, a lot of work has been done, and i feel like I was nearly killed by fd. Okay so Shiptalkers is now opt in. Most of this devlogs time was spent: Adding a message locator system, basically maps out where every message is instead of storing content of it Process messages without storing message content Backfill message content for users who opt in Add a custom shiptalkers id assigned to messages so we dont store sender id of each message. To opt in you can send “Opt In” in the shiptalkers channel Apart from that I migrated from in file SQL to a proper migrations system. General updates Added mobile support Massive cleanup of AGENTS.md 0 Full fetch and scrape all messages run in parrallel now. Archived channels card for stats page. Now persists thread rescans, added a thread timestamp index, persisted thread high-water marks. Reduced repeated history-wide scans Added durable consent backfill progress and fixed backfills blocking fresh message checks Fixed a per message update of the shared database counter row. It now updates per statement Score recomputation is now hourly instead of passly. I think thats about it. Main point of this is that we got scraping to be way faster, and we got opt in requirement.
Updates Should be final update before I ship Added all users and all channels boards Renamed Leaderboards to just Boards Normalized colum widths for those boards and added pagination We were hammering hackatime, it now has a hard limit of 50k hackatime reqs/day and 1req/sec Massive update to stats page so it displays more info and is more relevant. Changed total time to total hours where the time was hours and added total time in format of years/months/ etc. as well We sped up docker builds a bunch We retry known private hackatime users ever 30 days now Fixed a shared message-scrape lock The response when you ask the bot for time now includes a link to your/person your checking time ofs stats page I think thats about it
Update time Been quite a bit since ship and i decided because of the stardance extension I’m going to do more devlogs. Mainly i added an opt out feature and realized the new defaults for scraping speeds were shit so i undid them. I then decided that because there were channels with fucking 3000 thread roots, i lowered the age limit of threads to 7 days instead of 30 days. I nuked opt out/opt in and nuked the manual apps needed for scraping. There is now an OAuth system with slack, you can link your account and it will scrape your messages in private channels you are in. works without this though. Added a max scraping per minute variable so i dont strain my internet connection a bunch. And finally I also added the [PRIVATE] and [ARCHIVED] badges to channels
Updates Quite a bit this time that are important. First up I added a link to the github in the header and fixed the bot to actually follow slack rate limtis. Added a board for linked accounts page. Big thing now. Added consent gated slack scraping. Basically fd told me i need people to opt in. And finally the last big thing I added channel blacklisting as a shipwright and a goi linked through OAuth so I had to blacklist all sw channels and goi channel as they have sensitive messages in them
Ships:
I made shiptalkers! A bot that originally allows you to compare your slack time to hackatime time. Previously it was shut down, but I have revived it! With many additions as well. It features a website with a bunch of aggregated stats, a cool api and sweet leaderboards. Even a search system! It processes all messages in hack club slack to calculate slack time. Although if you opt in to it storing your messages as well, it will be way more accurate and will stay updated faster....
|
1793350421.6051116
|
1793436821.6051116
|
|
5879
|
Michigan Roadready Alternative by @yefoi | Stardan Michigan Roadready Alternative by @yefoi | Stardance...
|
yefoi
|
0
|
1.85
|
0
|
[]
|
[{"post_id": 7530, "ts": "2026 [{"post_id": 7530, "ts": "2026-06-12T16:02:08Z", "hours": 0.4917, "text": "created the all drives page, start looking into how to actually use react native so I can start making it for real"}, {"post_id": 6981, "ts": "2026-06-11T18:36:27Z", "hours": 1.3539, "text": "I worked on creating some screens for logging in, migrating, and the home page for the app in figma."}]...
|
Title: Michigan Roadready Alternative by @yefoi | Title: Michigan Roadready Alternative by @yefoi | Stardance
Devlogs:
I worked on creating some screens for logging in, migrating, and the home page for the app in figma.
created the all drives page, start looking into how to actually use react native so I can start making it for real...
|
1793166459.1715229
|
1793771259.1715229
|
|
58066
|
LeadGen by @R10 | Stardance
|
R10
|
0
|
20.2
|
0
|
[]
|
[{"post_id": 75293, "ts": "202 [{"post_id": 75293, "ts": "2026-09-29T17:30:24Z", "hours": 4.4919, "text": "DEVLOG #8 ㅤ It’s been a long time since I wrote my last journal and that is because I just didn’t feel like writing a journal. It just seemed like too much work. I was also busy studying so I could not code and journal as frequently but I have made significant changes to my Lead handling ideas and I would like to share them. ㅤ LEAD GENERATION CHANGES Basically, I have decided on a flow where a user can send multiple queries at the same time to generate leads from and choose the number of leads that they want to generate for each query. This would make work faster if a user wants to target a diverse set of businesses. ㅤ while generating leads, the user will see 2 options. In the first one, the user will be asked to enter their query. In the second one, the user will be asked to add an upper limit to their search. ㅤ There will also be a “+” button at the bottom of each “query box” of “query batch” so that a user can add another query box and mix and match how many leads they want and what queries they want. both questions are required for a query and hence there will be a continue button only when both a re filled. If the user adds a new box then the continue button will again disappear until both of the new questions are filled and so on and so forth. ㅤ BATCHES Every lead generation is now given its own batch. A batch can be managed easily by going to a new “Manage Leads” tab where the user can do all sorts of stuff like view generation history, view all batches, push generated batches to the team, remove batches, break up batches, set deadline on batches, etc. ㅤ LEAD PUBLISHING Earlier, the flow was such that the boss generates the leads and the leads are there for everyone in the team to view immediately. We do not want that. Instead, now the flow is that when the leads are generated, they are only visible to the boss so that they could tune the batch by adding deadlines and stuff. Then, when the boss is ready, they can publish the full batch to the common workspace where all the employees can see the leads and pick them up. ㅤ WORKING ON LEADS once the leads are published, the employees in the team can pick up leads and start working on them. This is the flow that I have decided upon. ㅤ Claim Leads -> Work on Claimed leads -> Log outcome of call -> Complete lead ㅤ It is as simple as that. As per the endpoints we have /leads/{lead_id}/claim to claim a lead, /leads/{lead_id}/log to make a log for a lead and /leads/{lead_id}/complete to complete a lead. There is also an endpoint /leads/{lead_id}/return which is used to return a claimed lead back to the common pool. ㅤ ㅤ code wise there have been a lot of changes like new lead_batches and call_record tables and a lot more stuff so I won’t go in depth about all that because then the journal would be too long and I honestly do not want to spend much time journaling and I would rather spend more time coding. ㅤ While writing this journal, I also thought of a bug for my scraper logic: ㅤ Imagine if a user wants 10 leads for dentists in delhi, the user scrapes and the scraper only looks at the first 10 businesses even though there are 124 businesses. Next, the user wants leads for dentists in Delhi again the next day so the user scrapes again. Now, since the scraper does not know if this business already exists in the database, it will just give the same 10 businesses as before and all get marked as duplicate event though we have other 114 businesses. But, they will never be scraped because the search is linear and the scraper has no context of, this lead exists, leave it. ㅤ So, I think I will be spending my trying to fix this bug somehow as this is pretty serious. ㅤ commit: 45f5e2d4107b23bd4a7609aaf17fd0bafb566bcf"}, {"post_id": 73128, "ts": "2026-09-24T13:22:48Z", "hours": 2.9364, "text": "DEVLOG #7 ㅤ SCRAPER Made a few significant changes to the scraper: Earlier, my scraper was based on the CLI logic where the user will enter their query and then the program will scrape all the businesses for that specific query before asking the user about how many leads they wanted to generate. But, now that I am switching from CLI to web, this logic is broken (even from a CLI perspective this logic was broken). Basically, if there are 124 businesses found for a certain query then the user would have to wait at least 84 seconds (I tested this time and it is not an estimation) for the whole search process and generation. Now this long wait time is because the program is basically asking the user the limit of leads they want to generate but the point of application of that limit is incorrect. For example, if a user only wants 50 leads, then the program would still go through all the 124 businesses and then only generate 50 leads out of those 124. Thus, all the searching and scrolling through the menu takes time. Whereas, now If we instead make it such that the user inputs an upper limit value to their search all along then the time would be significantly improved. For example, If a user only wants 50 leads out of however many there are, we now don’t try to find all the leads and then apply the limit, we instead apply the limit straight at the searching step and then generate all the found leads. Using the same 124 total leads example, now the scraping and lead generation time is only 33 seconds. while randomly talking about my project with gemini (and glazing it), I suddenly got a feedback for it out of nowhere. It said “wow, its great that you are using playwright. Make sure to not make new browsers for each user or else your scraper will burst cause of the ram usage”. This completely unexpected feedback really made me think cause that is exactly what I was doing up until now. So, I asked it how to fix it. It told me to create a single browser for the lifetime for the app and for each user, simply make a new browser.context() . Well, I was going to do that but I found out that to do that, I first have to turn my whole playwright script into async . I do remember why I had to do it but if I explain that right now then it would take too much time and would be too boring. The simplest explanation that I can give is that sync runs on multiple threads, so if 2 requests coincide, the data could get merged or damaged. Hence, async is like the ultra time managing chef which works on a single thread but manages all the coming requests so that it works even when it is waiting for another process to happen. So, after doing all of that, I think my scraper will not blow up now. This was a precautionary step more than an immediate necessity but its good to handle it early than to regret not adding it after the project goes live. /lead/reinstate ENDPOINT: I also made the reinstate endpoint which acts on duplicate leads. There are 4 specific cases that it looks for: If user provides a flag value -> reinstate all leads with that flag by clearing the flag and pushing changes. If user provides a lead ID -> reinstate the lead with that lead ID by clearing the flag and pushing changes. If none are provided -> reinstate all duplicate leads. By default, a user cannot pass both flag and lead_id . Now that all of my basic endpoints are complete with all the tables covered and linked together successfully. I can now move onto the more deeper logic of the program and work on some more features like call records with the ability for the users to mark the status of the call, etc. and other stuff that I have thought of. Also, I made a new frontend.md to store all my fronted ideas as I make the API and ideas.md as I come up with more useful ideas. commit: 2fbba880236ed9644733666de2cfb4dcacba40cb"}, {"post_id": 71343, "ts": "2026-09-20T17:44:45Z", "hours": 2.5428, "text": "DEVLOG #6 I have been working on the leads route for the past 3 days and this has been a lot of slow progress. I have been coding less and more thinking about the design of how leads are generated. Basically, the 2 endpoints that I have made till now are /leads and /leads/generate-leads . /leads: This endpoint is responsible for simply getting all the leads generated for the team. It simply takes the current user, finds their team and query the database to find all the leads for that specific team ID. This was pretty simple to make and there is not much to describe in this. /leads/generate-leads: This is the endpoint that took a lot of iteration and design changing to get right. The basic idea that I had before making this endpoint was that I use my existing scraper function to scrape the businesses, then check the database to see if the lead already exists (this is the point which take a lot of time to design) and then either add the lead or not. Now it was simple in theory, but there were a lot of questions like - what is the parameter to check if a lead exists?, If a lead exists then should the newly generated lead just be dropped?, if we drop the lead then what about the case when something about a business genuinely changed like its name or something?, what if the user wants to still act on duplicate leads?, etc. I will not go in detail about all the failed attempts at designing the structure for lead generation and I will instead just focus on what design I finally decided. It is basically a flag system which flags duplicate leads and the type of duplicate. we make sure that the user requesting for lead generation is a manager of their team and not an employee (cause employees don’t get to generate leads for the team). we use the scraper to generate the leads. we loop through the newly generated leads. In each pass, we query the database to find if there is an existing lead. Now, I realized that a lead is basically just a phone number. Thus, if a phone number for that specific team already exists in the table then we have a duplicate lead. If we do find a duplicate lead then we move onto the Lead Sorting Logic. Else, we simply add the lead to the table as a fresh lead. Finally we commit all the changes to the leads table after the loop completes. Lead Sorting Logic If name and website changed -> Flag = 0 If only name changed -> Flag = 1 If only website changed -> Flag = 2 if completely duplicate (nothing changed) -> flag = 3 This sorting makes it easy for the UI to display duplicate leads to the user and I am planning on adding a feature where the user can decide if they want to reinstate the duplicate leads for assigning quota. Next, I will be working on some bugs that I think are in my current logic. Right now, I am asking the user to prematurely enter the number of leads they want to generate without knowing how many businesses were even scraped for their query. For example, if someone wants 100 leads for their query but we could only scrape 80 then there will be an error according to the current logic. Therefore, I am thinking to split the lead generation into 2 parts. First the scraping part and then the generating part. For that, I simply need to restructure my single scraper function into 2 separate functions. Then I will call the 2 functions one by one in 2 endpoints."}, {"post_id": 69552, "ts": "2026-09-17T09:20:28Z", "hours": 1.7425, "text": "DEVLOG #5 I found out about JSON Web Tokens (JWT) and how they are used to help in user authentication. I learned more about JWT and found out about the python library Pyjwt . What I made is basically this: new auth_utils.py file which contains the following functions: create_access_token , decode_token , get_current_user . Reformed auth routes’ response to carry the JWT inside the response body during the signup/login. .env file with a secret key for the JWT. AUTHENTICATION LOGIC: The basic logic behind the JWT is that we get the access token and provide every user with their own unique access token at login and signup. This token is then stored in the LoclStorage (for now this is the plan but this being a fronted thing, it is subject to changes) but I am currently wondering about the security of the token being stored in the LocalStorage because a simple JS script can retrieve the token. Also, given that I am not utilizing a refresh token for this version of the program and the 30 day expiration of the access token, the token getting leaked is a big safety hazard so I am looking at utilizing httpOnly cookies instead which cannot be accessed by any rogue JS script running in the browser and would insert the token inside the request header automatically without any backend side JS script having to look into LocalStorage first. Next, we have a function whose sole job is to authenticate the token and then return the user from the database. This function would be called by all the endpoints the user has access to so that we first authenticate the session of the user before providing the user with any data. This means that if you are on /home and you want to go to /leads, /leads will first authenticate the token given to you and only then will you be able to access that endpoint. HOW IT WORKS: create_access_token : takes in the user id and uses it along with the secret key to encode the JWT. The payload consists of the user id and the expiration which is set to 30 days from when the token is issued. ㅤㅤㅤㅤㅤ decode_token : simply takes in the token, secret key and the algorithm used for encoding to decode the JWT back into the original payload used during encoding. ㅤㅤㅤㅤㅤ get_current_user : This is the function that authenticates the user session. Basically it has 3 jobs: Use HTTPBearer() to extract the authorization credentials from the Bearer <Authorization> in the request header. Here, the credentials in the header will be the JWT for the user. Decode the extracted token using decode_token function to get the payload back and handle all the errors like ExpiredSignatureError , InvalidTokenError , etc. Finally, use the payload to extract the user ID and query the database to find that user and return the user object. Now, I will be working on making the leads route which finishes off all the current tables that I have made. ㅤ commit: 1ad521f0218e9b6c8f9ebe908e01e6a578c78643"}, {"post_id": 68522, "ts": "2026-09-15T08:03:48Z", "hours": 1.1356, "text": "DEVLOG #4 I reformed the Signup API flow and also made the Login endpoint. The new signup API flow goes something like this: PAGE-1: Enter full name Enter email set password Submit button when submit button is clicked, we query /users/check-email to check if the account already exists. If account exists, the API simply returns a status_code=400, detail=\"email taken\" else it returns {\"available\": True} . PAGE-2: Set Username When submit button is clicked, we query /users/check-username to check if the username is available or not. If username is already taken, the API simply returns a status_code=400, detail=\"username taken\" else it returns {\"available\": True} PAGE-3: Choose if signing up as a business or as an individual. PAGE-4: Set team name if applicable. Finally, we have all the required data and data validation to make a new user so we can POST to /users to make a new user. Now, I had to think about this a bit because what if a there is a scenario that while a user is still making their account, they enter a username and go to the on-boarding step with the team name entering and all that stuff. And meanwhile, another user also enters the same username and creates the account by finishing the on-boarding before the first user who has the same username but did not create the account yet? when the user who is currently on on-boarding finishes all the steps, the server errors if there is no second data validation with all the collected data. Hence, I added validation of username and email in the second step too so that this case is handled correctly. I also made the simple login endpoint which takes the email and password and validates the user and their hashed password. I am planning to keep the login a single page and hence there are no live validations I need to make. Thus, everything lives in a single /login endpoint. Next Steps I am also wondering that in the API response, I do not signify anywhere that if the user is currently logged in or not and I do not know how to keep the user logged in until either they sign out or something else so I need to learn that state management too. I will work on that next."}, {"post_id": 68108, "ts": "2026-09-14T15:03:38Z", "hours": 1.4308, "text": "DEVLOG #3 Today I worked on just the signup endpoint and the password hashing. I basically made an endpoint which would take all the collected data: full_name , username , email , hashed_password , role , team_name and use it to create team and user on the database. I have successfully implemented the basic idea that I had but it currently has no error handling like duplicate user checking or existing username. So, what I thought was to keep a single endpoint and do the data validation at the end when the api call is made by querying the database first to check for unique email and username. But, That was not good user flow according to me, and I was looking for something like this: PAGE-1: Enter full name Enter email set password Submit button Then we will internally check if the email exists or not. If it exists show “account already exists, login instead”. If the email does not exist then move into the next page. PAGE-2: Set Username Check if username exists. If username already exists, show the error “username already taken” else move onto the next page. PAGE-3: Choose if signing up as a business or as an individual. PAGE-4: Set team name if applicable. All the data required for the database entry for user creation is complete so after a few more random onboarding steps, commit all the collected data to the database to make the team and the user. Basically this is the whole signup flow that I want with the most basic data collected from the user initially. Now what I want it some way to check the validity live on every page and I do not know how to do that. I will need to display the error messages and all through JS though I don’t know if I can also query the database live through JS to do some live validation. I will not learn this FastAPI concept and try to implement it in my API"}, {"post_id": 67289, "ts": "2026-09-13T11:13:20Z", "hours": 2.0042, "text": "DEVLOG #2 Created all the database models along with database.py with the boilerplate code for making database and tables. Database models that I made: Team -> id , team_name , created_at User -> id , full_name , username , email , hashed_password , role , team_id , solo_team_id , created_at Lead -> id , team_id , name , phone_number , website , rating , created_at I also made some changes to scraper.py by adding more filtering such that: If business does not have any phone number but has a website, lead is added. If business has a phone number but no website, lead still added. if business does not have any phone number or website, it is basically useless and excluded. I have not faced any major challenges yet as it has mostly been boilerplate code straight from the docs or simple repetitive code. To be honest, this has been boring. But, now I will be starting with the FastAPI stuff and actually start making the API and I am very excited for that."}, {"post_id": 66439, "ts": "2026-09-12T08:36:13Z", "hours": 3.9192, "text": "DEVLOG #1 The scraper is something that I had completed a few months back. I made it for my friend’s business. Now, I am trying to expand the scope of this from just a scraper to a full Business platform where a whole team can collaborate on cold-calling with daily quotas and a manager who can view stats about his employees. I also want to make a live chat option to better increase coordination between the team. It is a pretty basic project but a pretty ambitious for me. Right now, I have completed all the error handling and re-enforcing the scraper logic in the 4 hours that I have spent, to make it ready for a web-UI. I will now start working on making the actual API and database for my project. There are 3 basic tables that I have identified: Teams Users Leads I believe that all other features can build on top of these 3 as these are the basic building blocks. Hence, I will start working on making these right now. This is my first time working with FastAPI (earlier I had only used Flask) so there will be a learning gap but I have experience with Flask so I think that transitioning would be easier."}]...
|
Title: LeadGen by @R10 | Stardance
Devlogs:
DEVLO Title: LeadGen by @R10 | Stardance
Devlogs:
DEVLOG #1 The scraper is something that I had completed a few months back. I made it for my friend’s business. Now, I am trying to expand the scope of this from just a scraper to a full Business platform where a whole team can collaborate on cold-calling with daily quotas and a manager who can view stats about his employees. I also want to make a live chat option to better increase coordination between the team. It is a pretty basic project but a pretty ambitious for me. Right now, I have completed all the error handling and re-enforcing the scraper logic in the 4 hours that I have spent, to make it ready for a web-UI. I will now start working on making the actual API and database for my project. There are 3 basic tables that I have identified: Teams Users Leads I believe that all other features can build on top of these 3 as these are the basic building blocks. Hence, I will start working on making these right now. This is my first time working with FastAPI (earlier I had only used Flask) so there will be a learning gap but I have experience with Flask so I think that transitioning would be easier.
DEVLOG #2 Created all the database models along with database.py with the boilerplate code for making database and tables. Database models that I made: Team -> id , team_name , created_at User -> id , full_name , username , email , hashed_password , role , team_id , solo_team_id , created_at Lead -> id , team_id , name , phone_number , website , rating , created_at I also made some changes to scraper.py by adding more filtering such that: If business does not have any phone number but has a website, lead is added. If business has a phone number but no website, lead still added. if business does not have any phone number or website, it is basically useless and excluded. I have not faced any major challenges yet as it has mostly been boilerplate code straight from the docs or simple repetitive code. To be honest, this has been boring. But, now I will be starting with the FastAPI stuff and actually start making the API and I am very excited for that.
DEVLOG #3 Today I worked on just the signup endpoint and the password hashing. I basically made an endpoint which would take all the collected data: full_name , username , email , hashed_password , role , team_name and use it to create team and user on the database. I have successfully implemented the basic idea that I had but it currently has no error handling like duplicate user checking or existing username. So, what I thought was to keep a single endpoint and do the data validation at the end when the api call is made by querying the database first to check for unique email and username. But, That was not good user flow according to me, and I was looking for something like this: PAGE-1: Enter full name Enter email set password Submit button Then we will internally check if the email exists or not. If it exists show “account already exists, login instead”. If the email does not exist then move into the next page. PAGE-2: Set Username Check if username exists. If username already exists, show the error “username already taken” else move onto the next page. PAGE-3: Choose if signing up as a business or as an individual. PAGE-4: Set team name if applicable. All the data required for the database entry for user creation is complete so after a few more random onboarding steps, commit all the collected data to the database to make the team and the user. Basically this is the whole signup flow that I want with the most basic data collected from the user initially. Now what I want it some way to check the validity live on every page and I do not know how to do that. I will need to display the error messages and all through JS though I don’t know if I can also query the database live through JS to do some live validation. I will not learn this FastAPI concept and try to implement it in my API
DEVLOG #4 I reformed the Signup API flow and also made the Login endpoint. The new signup API flow goes something like this: PAGE-1: Enter full name Enter email set password Submit button when submit button is clicked, we query /users/check-email to check if the account already exists. If account exists, the API simply returns a status_code=400, detail="email taken" else it returns {"available": True} . PAGE-2: Set Username When submit button is clicked, we query /users/check-username to check if the username is available or not. If username is already taken, the API simply returns a status_code=400, detail="username taken" else it returns {"available": True} PAGE-3: Choose if signing up as a business or as an individual. PAGE-4: Set team name if applicable. Finally, we have all the required data and data validation to make a new user so we can POST to /users to make a new user. Now, I had to think about this a bit because what if a there is a scenario that while a user is still making their account, they enter a username and go to the on-boarding step with the team name entering and all that stuff. And meanwhile, another user also enters the same username and creates the account by finishing the on-boarding before the first user who has the same username but did not create the account yet? when the user who is currently on on-boarding finishes all the steps, the server errors if there is no second data validation with all the collected data. Hence, I added validation of username and email in the second step too so that this case is handled correctly. I also made the simple login endpoint which takes the email and password and validates the user and their hashed password. I am planning to keep the login a single page and hence there are no live validations I need to make. Thus, everything lives in a single /login endpoint. Next Steps I am also wondering that in the API response, I do not signify anywhere that if the user is currently logged in or not and I do not know how to keep the user logged in until either they sign out or something else so I need to learn that state management too. I will work on that next.
DEVLOG #5 I found out about JSON Web Tokens (JWT) and how they are used to help in user authentication. I learned more about JWT and found out about the python library Pyjwt . What I made is basically this: new auth_utils.py file which contains the following functions: create_access_token , decode_token , get_current_user . Reformed auth routes’ response to carry the JWT inside the response body during the signup/login. .env file with a secret key for the JWT. AUTHENTICATION LOGIC: The basic logic behind the JWT is that we get the access token and provide every user with their own unique access token at login and signup. This token is then stored in the LoclStorage (for now this is the plan but this being a fronted thing, it is subject to changes) but I am currently wondering about the security of the token being stored in the LocalStorage because a simple JS script can retrieve the token. Also, given that I am not utilizing a refresh token for this version of the program and the 30 day expiration of the access token, the token getting leaked is a big safety hazard so I am looking at utilizing httpOnly cookies instead which cannot be accessed by any rogue JS script running in the browser and would insert the token inside the request header automatically without any backend side JS script having to look into LocalStorage first. Next, we have a function whose sole job is to authenticate the token and then return the user from the database. This function would be called by all the endpoints the user has access to so that we first authenticate the session of the user before providing the user with any data. This means that if you are on /home and you want to go to /leads, /leads will first authenticate the token given to you and only then will you be able to access that endpoint. HOW IT WORKS: create_access_token : takes in the user id and uses it along with the secret key to encode the JWT. The payload consists of the user id and the expiration which is set to 30 days from when the token is issued. ㅤㅤㅤㅤㅤ decode_token : simply takes in the token, secret key and the algorithm used for encoding to decode the JWT back into the original payload used during encoding. ㅤㅤㅤㅤㅤ get_current_user : This is the function that authenticates the user session. Basically it has 3 jobs: Use HTTPBearer() to extract the authorization credentials from the Bearer <Authorization> in the request header. Here, the credentials in the header will be the JWT for the user. Decode the extracted token using decode_token function to get the payload back and handle all the errors like ExpiredSignatureError , InvalidTokenError , etc. Finally, use the payload to extract the user ID and query the database to find that user and return the user object. Now, I will be working on making the leads route which finishes off all the current tables that I have made. ㅤ commit: 1ad521f0218e9b6c8f9ebe908e01e6a578c78643
DEVLOG #6 I have been working on the leads route for the past 3 days and this has been a lot of slow progress. I have been coding less and more thinking about the design of how leads are generated. Basically, the 2 endpoints that I have made till now are /leads and /leads/generate-leads . /leads: This endpoint is responsible for simply getting all the leads generated for the team. It simply takes the current user, finds their team and query the database to find all the leads for that specific team ID. This was pretty simple to make and there is not much to describe in this. /leads/generate-leads: This is the endpoint that took a lot of iteration and design changing to get right. The basic idea that I had before making this endpoint was that I use my existing scraper function to scrape the businesses, then check the database to see if the lead already exists (this is the point which take a lot of time to design) and then either add the lead or not. Now it was simple in theory, but there were a lot of questions like - what is the parameter to check if a lead exists?, If a lead exists then should the newly generated lead just be dropped?, if we drop the lead then what about the case when something about a business genuinely changed like its name or something?, what if the user wants to still act on duplicate leads?, etc. I will not go in detail about all the failed attempts at designing the structure for lead generation and I will instead just focus on what design I finally decided. It is basically a flag system which flags duplicate leads and the type of duplicate. we make sure that the user requesting for lead generation is a manager of their team and not an employee (cause employees don’t get to generate leads for the team). we use the scraper to generate the leads. we loop through the newly generated leads. In each pass, we query the database to find if there is an existing lead. Now, I realized that a lead is basically just a phone number. Thus, if a phone number for that specific team already exists in the table then we have a duplicate lead. If we do find a duplicate lead then we move onto the Lead Sorting Logic. Else, we simply add the lead to the table as a fresh lead. Finally we commit all the changes to the leads table after the loop completes. Lead Sorting Logic If name and website changed -> Flag = 0 If only name changed -> Flag = 1 If only website changed -> Flag = 2 if completely duplicate (nothing changed) -> flag = 3 This sorting makes it easy for the UI to display duplicate leads to the user and I am planning on adding a feature where the user can decide if they want to reinstate the duplicate leads for assigning quota. Next, I will be working on some bugs that I think are in my current logic. Right now, I am asking the user to prematurely enter the number of leads they want to generate without knowing how many businesses were even scraped for their query. For example, if someone wants 100 leads for their query but we could only scrape 80 then there will be an error according to the current logic. Therefore, I am thinking to split the lead generation into 2 parts. First the scraping part and then the generating part. For that, I simply need to restructure my single scraper function into 2 separate functions. Then I will call the 2 functions one by one in 2 endpoints.
DEVLOG #7 ㅤ SCRAPER Made a few significant changes to the scraper: Earlier, my scraper was based on the CLI logic where the user will enter their query and then the program will scrape all the businesses for that specific query before asking the user about how many leads they wanted to generate. But, now that I am switching from CLI to web, this logic is broken (even from a CLI perspective this logic was broken). Basically, if there are 124 businesses found for a certain query then the user would have to wait at least 84 seconds (I tested this time and it is not an estimation) for the whole search process and generation. Now this long wait time is because the program is basically asking the user the limit of leads they want to generate but the point of application of that limit is incorrect. For example, if a user only wants 50 leads, then the program would still go through all the 124 businesses and then only generate 50 leads out of those 124. Thus, all the searching and scrolling through the menu takes time. Whereas, now If we instead make it such that the user inputs an upper limit value to their search all along then the time would be significantly improved. For example, If a user only wants 50 leads out of however many there are, we now don’t try to find all the leads and then apply the limit, we instead apply the limit straight at the searching step and then generate all the found leads. Using the same 124 total leads example, now the scraping and lead generation time is only 33 seconds. while randomly talking about my project with gemini (and glazing it), I suddenly got a feedback for it out of nowhere. It said “wow, its great that you are using playwright. Make sure to not make new browsers for each user or else your scraper will burst cause of the ram usage”. This completely unexpected feedback really made me think cause that is exactly what I was doing up until now. So, I asked it how to fix it. It told me to create a single browser for the lifetime for the app and for each user, simply make a new browser.context() . Well, I was going to do that but I found out that to do that, I first have to turn my whole playwright script into async . I do remember why I had to do it but if I explain that right now then it would take too much time and would be too boring. The simplest explanation that I can give is that sync runs on multiple threads, so if 2 requests coincide, the data could get merged or damaged. Hence, async is like the ultra time managing chef which works on a single thread but manages all the coming requests so that it works even when it is waiting for another process to happen. So, after doing all of that, I think my scraper will not blow up now. This was a precautionary step more than an immediate necessity but its good to handle it early than to regret not adding it after the project goes live. /lead/reinstate ENDPOINT: I also made the reinstate endpoint which acts on duplicate leads. There are 4 specific cases that it looks for: If user provides a flag value -> reinstate all leads with that flag by clearing the flag and pushing changes. If user provides a lead ID -> reinstate the lead with that lead ID by clearing the flag and pushing changes. If none are provided -> reinstate all duplicate leads. By default, a user cannot pass both flag and lead_id . Now that all of my basic endpoints are complete with all the tables covered and linked together successfully. I can now move onto the more deeper logic of the program and work on some more features like call records with the ability for the users to mark the status of the call, etc. and other stuff that I have thought of. Also, I made a new frontend.md to store all my fronted ideas as I make the API and ideas.md as I come up with more useful ideas. commit: 2fbba880236ed9644733666de2cfb4dcacba40cb
DEVLOG #8 ㅤ It’s been a long time since I wrote my last journal and that is because I just didn’t feel like writing a journal. It just seemed like too much work. I was also busy studying so I could not code and journal as frequently but I have made significant changes to my Lead handling ideas and I would like to share them. ㅤ LEAD GENERATION CHANGES Basically, I have decided on a flow where a user can send multiple queries at the same time to generate leads from and choose the number of leads that they want to generate for each query. This would make work faster if a user wants to target a diverse set of businesses. ㅤ while generating leads, the user will see 2 options. In the first one, the user will be asked to enter their query. In the second one, the user will be asked to add an upper limit to their search. ㅤ There will also be a “+” button at the bottom of each “query box” of “query batch” so that a user can add another query box and mix and match how many leads they want and what queries they want. both questions are required for a query and hence there will be a continue button only when both a re filled. If the user adds a new box then the continue button will again disappear until both of the new questions are filled and so on and so forth. ㅤ BATCHES Every lead generation is now given its own batch. A batch can be managed easily by going to a new “Manage Leads” tab where the user can do all sorts of stuff like view generation history, view all batches, push generated batches to the team, remove batches, break up batches, set deadline on batches, etc. ㅤ LEAD PUBLISHING Earlier, the flow was such that the boss generates the leads and the leads are there for everyone in the team to view immediately. We do not want that. Instead, now the flow is that when the leads are generated, they are only visible to the boss so that they could tune the batch by adding deadlines and stuff. Then, when the boss is ready, they can publish the full batch to the common workspace where all the employees can see the leads and pick them up. ㅤ WORKING ON LEADS once the leads are published, the employees in the team can pick up leads and start working on them. This is the flow that I have decided upon. ㅤ Claim Leads -> Work on Claimed leads -> Log outcome of call -> Complete lead ㅤ It is as simple as that. As per the endpoints we have /leads/{lead_id}/claim to claim a lead, /leads/{lead_id}/log to make a log for a lead and /leads/{lead_id}/complete to complete a lead. There is also an endpoint /leads/{lead_id}/return which is used to return a claimed lead back to the common pool. ㅤ ㅤ code wise there have been a lot of changes like new lead_batches and call_record tables and a lot more stuff so I won’t go in depth about all that because then the journal would be too long and I honestly do not want to spend much time journaling and I would rather spend more time coding. ㅤ While writing this journal, I also thought of a bug for my scraper logic: ㅤ Imagine if a user wants 10 leads for dentists in delhi, the user scrapes and the scraper only looks at the first 10 businesses even though there are 124 businesses. Next, the user wants leads for dentists in Delhi again the next day so the user scrapes again. Now, since the scraper does not know if this business already exists in the database, it will just give the same 10 businesses as before and all get marked as duplicate event though we have other 114 businesses. But, they will never be scraped because the search is linear and the scraper has no context of, this lead exists, leave it. ㅤ So, I think I will be spending my trying to fix this bug somehow as this is pretty serious. ㅤ commit: 45f5e2d4107b23bd4a7609aaf17fd0bafb566bcf...
|
1793469383.479003
|
1794074183.479003
|
|
42256
|
Tinker Party by @JPR | Stardance
|
JPR
|
1
|
18.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T17:16:59Z", "hours": 18.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A beta version of a game Idea I’ve had for long. Combining two of my interests, game dev and electrical components, I wanted to create a game that can interact with physical embedded systems and teach you in an engaging way. Before I created a proper educational game with lessons and maybe some storyline, I needed a proof of concept that this could work. Hence, enter the idea of a minigame, party-like game, where I could try and grasp the basics of connecting an Arduino to a Unity game through the Serial port, and learning more intricate part of the systems, like collecting readings and input, etc. I will dedicate myself to continue this sometime, to finish all art, to finish a first alpha. So, thank you! If you’d like to play the game, please do, and let me know any ideas or any bugs you find (I’m certain there will be). Since this game is a beta, there are some unexplained features that you will need to find out about by checking out my GitHub. Thank you!", "repo": "https://github.com/jpribeiru/tinker-party", "demo": "https://jpribeiru.itch.io/tinker-party"}]...
|
[{"post_id": 75284, "ts": "202 [{"post_id": 75284, "ts": "2026-09-29T17:12:38Z", "hours": 0.9689, "text": "Ready for launch! Since it is the Beta version, I fully commented the code so I could pick up on it another time without forgetting. To release the beta, I put it up on itch.io to download, as well as updated the README on GitHub so that all the non-mentioned setup could be explained to anyone wanting to give it a go! Also made a bit of banner art and icon art, a style i will pick up again to try to integrate into the game itself. Hopefully I will find the time to dedicate myself to this once again, and thank you Stardance!"}, {"post_id": 45174, "ts": "2026-08-11T14:25:12Z", "hours": 6.4667, "text": "Game fully working! The full game is done with the Main Menu, Minigame 1 and Minigame 2. I added small new things Minigame 1: Tutorial Page at the start fully works, including displaying the layout of the breadboard and the testing part works too. Here, the P1ZPos variable (the variable that stores the reading of the potentiometers and turns the range of 0->1023 into -6->6) has maths done on it to fit it onto the range of the screen. Each potentiometer controls a car icon, and the car has to be on the very right (aka potentiometer to the max), on top of it’s green silhouette. Both cars need to remain there for 5s for game to start. Minigame 2: camera elevates each block so it doesn’t go off screen also tutorial page now works with the test, where both players have to hold onto their button for 5 seconds before starting. there was an issue i had to fix for these buttons, figuring out a way to only send one reading when the player holds it down to click once, because readings are sent really frequently, a hold for less than a second led to 20 occasions of button being held down, so I added another variable, buttonPressedOnce, did some logic operations with buttonHeld (the readings) to make sure the signal is sent once. (side note, I know realise I should have done devlogs more frequently because i could’ve gone into more detail explaining the things I’ve learnt, but alas, I tried to explain as much as I could in my actual code, for anyone checking it out) Here’s the new major stuff! The Main Menu came with a lot of challenges. The idea was for the user to use a potentiometer and a button to scroll between games and select. Issue was, multiple instances of Arduino Connector happened, with scenes being reloaded and led to all kinds of chaos. So I had to do some Instancing, removed Arduino Connector from Minigame Scenes. I also had to add a score manager, that also would be permanent and instanced, so variables could stay the whole time the game was run. Also, to connect the winners of the minigame to the score manager, I had to include win conditions to each of the minigame game handler scripts. Then the Score manager would read from the public variable “winner” in those Game Handler scripts, to see who won and increment the respective score. Then, I realised a small flaw. The Arduino Connector script was static to the usual port that I used on my computer, but a different user would be using a different port. So, I added a textbox and a porthandler to recieve info from that textbox into a public variable for the Arduino Connector script to retrieve and refresh the port entered, to ensure connection still works if changed. That was it, the game functions perfectly fine, however there is one major thing I have to do before shipping. I had to showcase this prototype of a game to a summer program I was doing, and realised that when I was showcasing, everything was already setup for people to use. But I was only able to setup the game since I knew the way. I never showed a setup schematic in the main menu, nor did I even give the user the Arduino IDE code to send to their board. These crucial extra details I will do in future devlogs, but so far, that was my game!"}, {"post_id": 39602, "ts": "2026-08-02T18:08:30Z", "hours": 10.6, "text": "Core concept added + Almost done with Minigame 1 + Minigame 2! PS: Devlog is long because I forgot to post a previous one… To start the proof-of-concept I had to figure out how I could get the Arduino Uno to connect to Unity. Learning from a tutorial by DIY TechRush , I found out the main method was by having code sent to the board from the IDE where readings are sent to the Serial Port. After I understood that, I could finally start on my first idea, a Timeline-based race through a city between two cars that have to avoid obstacles. Since I’m working on a time crunch, I used some free low poly models: cars by ‘antonmoek’ city by ‘ilkhom23’ Their models are so cool - go check them out! Once I added the models, I changed potentiometer readings from rotation to transformation on the Z axis, so the car could go left and right to avoid things. Since I was using two potentiometers (for two players), before printing, I had to concatenate “1:” or “2:” for the Unity script to find out which is which. I also encountered some delay issues, which I fixed by increasing baud rate from 9600 to 115200 and adding a delay function in the boards code. Then, it was time to make a rig for the players and their cameras (cameras made two split screens). The rig was so that I could animate the position of the player using the Timeline feature. Then, on the same timeline, add animation tracks for the ‘enemies’ (just buses and vans). Added some variety, some were static some were driving to the player, some fell out the sky from no where. Also, to make it clear they were enemies, I added some outline shading to them from this tutorial by ‘AAvirusAA’ . Then, I added box colliders and rigidbodies to the player cars and the enemies while tagging them as ‘player’ and ‘enemy’ respectively. Each time there was a hit, it would increment a counter for each player. Then used the canvas/UI feature to display the counter! Finally, I got started on the tutorial at the start. I wanted to show the player(s) a TinkerCad setup including what they need and what pins to connect. Then, ( kind of inspired by those switch games where they joycons are taken off, and before the game starts a button must be pressed to ensure connectivity ), created an image to show the setup before the game, and to only disappear once the test has passed! Got bored of M1 so started on M2 The concept for this was to do that simple mobile game where the blocks slide and you have to stack them by pressing it. The foundation of the game was from a tutorial by Jason Weimann , and I added the following things: Instead of “Fire1” from the Input Package, it was connected to a boolean variable that was based off of the Serial Readings of whether a button was pressed. Only Player 1 button could affect player 1 turn, etc. Alternating colours of blue and purple to match the cars Game over screen Tutorial/setup at start Thanks for reading this far! If anyone has any suggestions on improvements please let me know!"}]...
|
Title: Tinker Party by @JPR | Stardance
Devlogs:
Title: Tinker Party by @JPR | Stardance
Devlogs:
Core concept added + Almost done with Minigame 1 + Minigame 2! PS: Devlog is long because I forgot to post a previous one… To start the proof-of-concept I had to figure out how I could get the Arduino Uno to connect to Unity. Learning from a tutorial by DIY TechRush , I found out the main method was by having code sent to the board from the IDE where readings are sent to the Serial Port. After I understood that, I could finally start on my first idea, a Timeline-based race through a city between two cars that have to avoid obstacles. Since I’m working on a time crunch, I used some free low poly models: cars by ‘antonmoek’ city by ‘ilkhom23’ Their models are so cool - go check them out! Once I added the models, I changed potentiometer readings from rotation to transformation on the Z axis, so the car could go left and right to avoid things. Since I was using two potentiometers (for two players), before printing, I had to concatenate “1:” or “2:” for the Unity script to find out which is which. I also encountered some delay issues, which I fixed by increasing baud rate from 9600 to 115200 and adding a delay function in the boards code. Then, it was time to make a rig for the players and their cameras (cameras made two split screens). The rig was so that I could animate the position of the player using the Timeline feature. Then, on the same timeline, add animation tracks for the ‘enemies’ (just buses and vans). Added some variety, some were static some were driving to the player, some fell out the sky from no where. Also, to make it clear they were enemies, I added some outline shading to them from this tutorial by ‘AAvirusAA’ . Then, I added box colliders and rigidbodies to the player cars and the enemies while tagging them as ‘player’ and ‘enemy’ respectively. Each time there was a hit, it would increment a counter for each player. Then used the canvas/UI feature to display the counter! Finally, I got started on the tutorial at the start. I wanted to show the player(s) a TinkerCad setup including what they need and what pins to connect. Then, ( kind of inspired by those switch games where they joycons are taken off, and before the game starts a button must be pressed to ensure connectivity ), created an image to show the setup before the game, and to only disappear once the test has passed! Got bored of M1 so started on M2 The concept for this was to do that simple mobile game where the blocks slide and you have to stack them by pressing it. The foundation of the game was from a tutorial by Jason Weimann , and I added the following things: Instead of “Fire1” from the Input Package, it was connected to a boolean variable that was based off of the Serial Readings of whether a button was pressed. Only Player 1 button could affect player 1 turn, etc. Alternating colours of blue and purple to match the cars Game over screen Tutorial/setup at start Thanks for reading this far! If anyone has any suggestions on improvements please let me know!
Game fully working! The full game is done with the Main Menu, Minigame 1 and Minigame 2. I added small new things Minigame 1: Tutorial Page at the start fully works, including displaying the layout of the breadboard and the testing part works too. Here, the P1ZPos variable (the variable that stores the reading of the potentiometers and turns the range of 0->1023 into -6->6) has maths done on it to fit it onto the range of the screen. Each potentiometer controls a car icon, and the car has to be on the very right (aka potentiometer to the max), on top of it’s green silhouette. Both cars need to remain there for 5s for game to start. Minigame 2: camera elevates each block so it doesn’t go off screen also tutorial page now works with the test, where both players have to hold onto their button for 5 seconds before starting. there was an issue i had to fix for these buttons, figuring out a way to only send one reading when the player holds it down to click once, because readings are sent really frequently, a hold for less than a second led to 20 occasions of button being held down, so I added another variable, buttonPressedOnce, did some logic operations with buttonHeld (the readings) to make sure the signal is sent once. (side note, I know realise I should have done devlogs more frequently because i could’ve gone into more detail explaining the things I’ve learnt, but alas, I tried to explain as much as I could in my actual code, for anyone checking it out) Here’s the new major stuff! The Main Menu came with a lot of challenges. The idea was for the user to use a potentiometer and a button to scroll between games and select. Issue was, multiple instances of Arduino Connector happened, with scenes being reloaded and led to all kinds of chaos. So I had to do some Instancing, removed Arduino Connector from Minigame Scenes. I also had to add a score manager, that also would be permanent and instanced, so variables could stay the whole time the game was run. Also, to connect the winners of the minigame to the score manager, I had to include win conditions to each of the minigame game handler scripts. Then the Score manager would read from the public variable “winner” in those Game Handler scripts, to see who won and increment the respective score. Then, I realised a small flaw. The Arduino Connector script was static to the usual port that I used on my computer, but a different user would be using a different port. So, I added a textbox and a porthandler to recieve info from that textbox into a public variable for the Arduino Connector script to retrieve and refresh the port entered, to ensure connection still works if changed. That was it, the game functions perfectly fine, however there is one major thing I have to do before shipping. I had to showcase this prototype of a game to a summer program I was doing, and realised that when I was showcasing, everything was already setup for people to use. But I was only able to setup the game since I knew the way. I never showed a setup schematic in the main menu, nor did I even give the user the Arduino IDE code to send to their board. These crucial extra details I will do in future devlogs, but so far, that was my game!
Ready for launch! Since it is the Beta version, I fully commented the code so I could pick up on it another time without forgetting. To release the beta, I put it up on itch.io to download, as well as updated the README on GitHub so that all the non-mentioned setup could be explained to anyone wanting to give it a go! Also made a bit of banner art and icon art, a style i will pick up again to try to integrate into the game itself. Hopefully I will find the time to dedicate myself to this once again, and thank you Stardance!
Ships:
A beta version of a game Idea I’ve had for long. Combining two of my interests, game dev and electrical components, I wanted to create a game that can interact with physical embedded systems and teach you in an engaging way. Before I created a proper educational game with lessons and maybe some storyline, I needed a proof of concept that this could work. Hence, enter the idea of a minigame, party-like game, where I could try and grasp the basics of connecting an Arduino to a Unity game through the Serial port, and learning more intricate part of the systems, like collecting readings and input, etc. I will dedicate myself to continue this sometime, to finish all art, to finish a first alpha. So, thank you! If you’d like to play the game, please do, and let me know any ideas or any bugs you find (I’m certain there will be). Since this game is a beta, there are some unexplained features that you will need to find out about by checking out my GitHub. Thank you!...
|
1793336159.2550848
|
1793422559.2550848
|
|
6648
|
LUNATIK by @g_jeanvermeille | Stardance
|
g_jeanvermeille
|
1
|
15.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T17:06:09Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built LUNATIK, a flight computer for our model rocket (Pico 2, CircuitPython) that fuses a barometer and accelerometer with a Kalman filter to detect apogee, logs to SD and streams LoRa telemetry. The hard part: we had one motor, so it had to work first try. I’m proud it did, calling apogee 0.45 s after the top while the motor’s charge fired 2.5 s later. To test without a rocket: python scripts/dashboard.py –simulate. Only coding hours were logged, not the hardware build.", "repo": "https://github.com/gabriel84-py/fus-e_code", "demo": ""}]...
|
[{"post_id": 75278, "ts": "202 [{"post_id": 75278, "ts": "2026-09-29T16:59:52Z", "hours": 0.4389, "text": "Documention for ship !"}, {"post_id": 75249, "ts": "2026-09-29T15:50:42Z", "hours": 0.3511, "text": "launching with avionics !!!"}, {"post_id": 70671, "ts": "2026-09-19T15:51:12Z", "hours": 11.8942, "text": "Launching LUNATIK (without electronics) and coding its flight computer to launch it in 1 week !!"}, {"post_id": 42061, "ts": "2026-08-06T16:53:48Z", "hours": 1.9433, "text": "Body of the rocket, some elctronics (PCB) and some code for the PCB !"}]...
|
Title: LUNATIK by @g_jeanvermeille | Stardance
De Title: LUNATIK by @g_jeanvermeille | Stardance
Devlogs:
Body of the rocket, some elctronics (PCB) and some code for the PCB !
Launching LUNATIK (without electronics) and coding its flight computer to launch it in 1 week !!
launching with avionics !!!
Documention for ship !
Ships:
I built LUNATIK, a flight computer for our model rocket (Pico 2, CircuitPython) that fuses a barometer and accelerometer with a Kalman filter to detect apogee, logs to SD and streams LoRa telemetry. The hard part: we had one motor, so it had to work first try. I’m proud it did, calling apogee 0.45 s after the top while the motor’s charge fired 2.5 s later. To test without a rocket: python scripts/dashboard.py –simulate. Only coding hours were logged, not the hardware build....
|
1793336000.115773
|
1793422400.115773
|
|
57800
|
AEGIS by @aron_roger | Stardance
|
aron_roger
|
2
|
71.0
|
795
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T19:55:05Z", "hours": 21.0, "multiplier": 14.56, "payout": 301, "blessing": "neutral", "text": "A NFC tag tracker app, it is on the web right now, for designing and prototyping purpose, although I have written much greater detail in my previous ship, this is just a contiuation to my last ship. So, from the previous feedback, I have fixed few thing worked more on the representation and then also added a instruction page to the routes. I want to say I am happy with where I have reached as said in my previous dev-log, I have decided to get this project a halt, due to other responsibilities and priorities. I wanted to do more than that, but I am glad with whatever I learned along the way, it was all fun. As of now it is still not a native application rather a web hosted testing prototype, you can use the graphs and toggle option to change option, and yeah for now i haven’t yet added different user option, although I started with it. I might be signing off after this, would try to comeback but till then, may everyone do well in anything they do, I would still like to receive feedback, and yeah Ik I have sm things in mind to do and add, but yet again sadly it is kinda hard for me as of now.", "repo": "https://github.com/aron-roger/aegis", "demo": "https://aronnn.pythonanywhere.com/hydration"}, {"ship_num": 2, "ts": "2026-09-19T09:57:04Z", "hours": 50.0, "multiplier": 9.92, "payout": 494, "blessing": "neutral", "text": "AEGIS General intro I made a NFC tracker application, even though it is on the web rn, I have deployed it to pythonanywhere for use, currently. Story-Time: I might be a strange guy but I like to track my habits and count everything, and I surely have done tracking across both digitally and manually on my journal. That is when I knew about NFC stickers where a person showcased how he is using it to track his stuff, and i thought it to be so cool if i can do it too, so I began searching… later, here I am. Challenges I tried my best to make this as best i can, ngl I kinda tripped, and hit so many walls, at some point I was about to give up, but nah, I was more determined to complete it. I watched few HTML videos and CSS workaround, as i learned them through this project too, I learned a lot of stuff, I do not regret it, And the java-script was so hard to learn with my studies and in this short amount of time, that i must day i used AI to get me through it. Happy? Yeah I am so happy, with all I could do I wish i could do more, but as ever I’m not giving up. I am so happy about it, also when i discussed it with my cousin and he was like he wanted to track his water intake, it was hard for him. And i instantly knew, I can do it and I might can help him too. NOTE: I uses a NFC sticker on the objects, for example; water bottle, where the user can scan it whenever he can log his intake, and I have shared the link to where the person can use it, I am sorry not everyone can get a sticker, but I can make sure if they do have it it is most best UX for them. Otherwise, I have added an approach to to manually log the intake, Since, it is suppose to be an app and i haven’t yet made it an app, so i deployed it on pythonanywhere you can try out manual logging into my db. but as soon as the project is completed i will produce it such way the users have their local db to store their intake which is when a mobile app comes in. This a WIP PROJECT and I have so many things in mind to add, as I progress, lets hope I can do it, I believe i can do more pages faster as I have whole workflow in my head. Thank you for reading it this farrrr, arigato gozaimasu.", "repo": "https://github.com/aron-roger/aegis", "demo": "https://aronnn.pythonanywhere.com/hydration"}]...
|
[{"post_id": 75273, "ts": "202 [{"post_id": 75273, "ts": "2026-09-29T16:39:51Z", "hours": 4.0106, "text": "This might be my last dev-log I hate to admit but my study have been over-whelming. I am in 12th grade and catching up with my studies + preparing for a screening test olympiads. It is like juggling them but can’t do anything, I must eliminate something to keep up with everything else. Not gonna lie, it has been so much fun and learning during my time in Star-dance. I would miss this. I wanted to complete aegis-project but I still seem to have a long way to go especially learning dart or xml to host my app. Actually there might a bit more longer way because i haven’t really picked up on java-script either. I am kinda sad because I can not put in my everything, but I am happy with whatever I have learnt, plus all the new people I have met and then also able to tell more people about it. For this dev-log I’d like to showcase my whole app and designs Ive been working on. I have tried learning a lil bit of schema, but unable to give my whole time towards it also, I have also sent my code to ai to help me too. Things I have done instruction route is done for now re-newed the db for new schema (which i would not use after this decision) tweaked some design for my all routes and html which I have attached ss to it."}, {"post_id": 74088, "ts": "2026-09-26T17:15:09Z", "hours": 7.4475, "text": "#YOPP! I tried re-designing my home page and here is hat Ive come up with I used this pale-yellow green. I don’t know if i would change it or keep it. Any-ways here is what Ive been up to and what I did I have read the reasons that came through with the shipment results, and few reviewers claimed that they can’t understand they way it works, which for what i would like to apologize for I should’ve made an instruction screen, or smth more prominent of the usage of my system. I am glad they have pointed it out! So, I have tried making a Home-screen and a simple instruction screen. It was fun and quick process, although few designing got me time tinkering. Here is a overview to what I have done, I used lapse to record my Figma designing hours and then, later tried implementing it inside my code. although there have been so many inconsistencies that I had to use ai to help me, but Im glas with what im at. Then, also I have changed date selector bar which was again fun, because this time there was less friction than before, I’m kinda disappointed that I couldn’t manipulate JS on my own. Aside naturally, everything worked well, now I would like to complete it soon, because my other responsibilities have been hiking. BTW, I am tweaking myself I am kinda super glad with my hydration and sleep routes they are peaking, I would like to highlight them at next dev post, keep getting posted, I am sure you guys would like it"}, {"post_id": 72246, "ts": "2026-09-22T15:00:37Z", "hours": 8.0583, "text": "YO - I’m back I have posted my app to what I designed and where I am rn, first picture is my figma design, second is my where I am… I’ve been wanting to add those animated giphy, let me know how you guys do it. I tweaked my route kinda completed it, I’m kinda happy with this, some of the things are repetitive but so far here is what i did: re-made my date selector bar changed the background for sleep tracker theme sleep button toggle, it was kinda hard to learn DOM manipulation, so I let ai do it (will learn it) set-up routes in the backend, kinda fun to tweak it and used ai to help me clear my mess Honestly, I think must showcase my result properly, it is not a web but an app, soon converting it to a whole app, as im finished with logic routes. NFC is working, soon uploading it on Github. You can send me your reviews as you like my app to be, I would be happy to view them and react to them."}, {"post_id": 70771, "ts": "2026-09-19T18:52:19Z", "hours": 1.18, "text": "IRONY So, I have been flagged, to be using ai styled design, which is sad truly because, I myself had came up with the layout, in figma, and then later i tweaked the design in dark theme, because i probably my eyes hurt working with bright screen lol. light theme I was hoping to use this design, later, for customizing theme option in settings. Apparently, I am switching back to it, after some tweaks, I will be able to push it on github Clarification Also, I want to tell that I wanted to make an app out of it, and all i did rn is just made it on a web, so i got a long way to go, I was am soon using flutter for my application and deployment. I believe i wont be flagged next because yeah, It is my design, i wonder if it is that good or that much slop."}, {"post_id": 70461, "ts": "2026-09-19T07:31:03Z", "hours": 4.5711, "text": "FINALLY, I THINK MY HYDRATION PAGE IS DONE. Changes; First of all I have graphss, like it is working the one day graph is supposed to be a cumulative graph and its working well. fixed few bugs i was facing when i was testing it, i still cannot test 1w and 1 month graph due to limited logs, It was a long way, honestly, i have put my design i made on figma in the later image, and the first one is what Im at rn. If you scroll through my other dev logs you might stumble upon my whole design phase. However, I am glad with what I got to, it is just as expected, I am ship this as a WIP project, please I really put my heart at it, learning and idealizing, I really appreciate your rating and help, Thanks for reading it this farr, really thank you. I will add more details, when i will ship this."}, {"post_id": 69699, "ts": "2026-09-17T16:36:31Z", "hours": 6.0686, "text": "HYDRATION TRACKER TLDR; deployed it on pythonanywhere removed variable input created tables for history I’ve re- the whole hydration.html, due to the reasons my javascript wasn’t performing well with variable input. so now i backed off from it and start to complete the basics. Deployed my project on pythonanywhere so now i can officially use the sticker when i go outside too, please acknowledy this my first time making a dedicated project and i have learned a lot of stuff, yet i try to keep on improving ##Future plans… making graphsss (tuff) ig, i always liked visual representation. sleep.html but diff cards mihi med tracker (custom medication) Will work on better dev posts."}, {"post_id": 67561, "ts": "2026-09-13T18:15:53Z", "hours": 8.3778, "text": "It was supposed to be a mobile app but it looks cool anyways, YEPP i worked on backend, again and yet got to this new screen with new cardsss. NOW user can adjust the amount logs, there is bug i found while testing but then i got message that i must dev post soon, anyways les goo, i would like to know and hear more suggestion on anything about my project."}, {"post_id": 66661, "ts": "2026-09-12T14:55:37Z", "hours": 8.1722, "text": "Worked on Backend and front end both, i cant decide which theme to choose, that blue one or white one, Anyways, backend for hydration route is all set i might not need to tweak it anymore or i must say much. front end, im honestly enjoying all of this, i learnt a lot…"}, {"post_id": 65883, "ts": "2026-09-11T10:07:28Z", "hours": 3.1342, "text": "Worked on the back-end, css html too. i took few courses from html to get started with it, next im refining my page to make it look more like my figma design and also im re-building backend py code. Till, i receive my stickers, ordered from a store, imma work on on making front end better and re doing my py files for a formal structure."}, {"post_id": 64210, "ts": "2026-09-08T13:21:21Z", "hours": 3.7906, "text": "Honestly for now im done with the design all thing sive made myself everything took lotta time to get to this point and it is only design, i will tweak more like get home page and more tacker with more features soon, maybe add badges and its tab, There is still a lot to do. (sorry for poor quality video i still cant figure out how to use obs screen rec.) SO, IM DONE FOR NOW WITH DESIGNING, I am starting at backend code using flutter i have shared the files to test my backend and it is going good fo rnow next we adding pages and its logic. It is all new im learning midway. I would like if you can suggest me any idea for tracker although i might add a medicine tracker and brush at night tracker because i believe there are many people who do not brush at night too, correct me and share your review, thankss."}, {"post_id": 62356, "ts": "2026-09-05T18:00:09Z", "hours": 7.4225, "text": "Today, I have made more buttons and started at both hydration and sleep tracker page. From last time, I have been more consistent with so many things. Next, I am adding graphs to the system, so finally start at code. And would probably post a preview to the design. For those who don’t know, im building nfc tracker system for day to day life and for now i am only integrating 2 trackers for now."}, {"post_id": 61705, "ts": "2026-09-04T19:02:13Z", "hours": 8.2783, "text": "OK, it was my first time using figma, started my design (ui) for my app: Aegis. There a lot more to go…"}]...
|
Title: AEGIS by @aron_roger | Stardance
Devlogs:
Title: AEGIS by @aron_roger | Stardance
Devlogs:
OK, it was my first time using figma, started my design (ui) for my app: Aegis. There a lot more to go…
Today, I have made more buttons and started at both hydration and sleep tracker page. From last time, I have been more consistent with so many things. Next, I am adding graphs to the system, so finally start at code. And would probably post a preview to the design. For those who don’t know, im building nfc tracker system for day to day life and for now i am only integrating 2 trackers for now.
Honestly for now im done with the design all thing sive made myself everything took lotta time to get to this point and it is only design, i will tweak more like get home page and more tacker with more features soon, maybe add badges and its tab, There is still a lot to do. (sorry for poor quality video i still cant figure out how to use obs screen rec.) SO, IM DONE FOR NOW WITH DESIGNING, I am starting at backend code using flutter i have shared the files to test my backend and it is going good fo rnow next we adding pages and its logic. It is all new im learning midway. I would like if you can suggest me any idea for tracker although i might add a medicine tracker and brush at night tracker because i believe there are many people who do not brush at night too, correct me and share your review, thankss.
Worked on the back-end, css html too. i took few courses from html to get started with it, next im refining my page to make it look more like my figma design and also im re-building backend py code. Till, i receive my stickers, ordered from a store, imma work on on making front end better and re doing my py files for a formal structure.
Worked on Backend and front end both, i cant decide which theme to choose, that blue one or white one, Anyways, backend for hydration route is all set i might not need to tweak it anymore or i must say much. front end, im honestly enjoying all of this, i learnt a lot…
It was supposed to be a mobile app but it looks cool anyways, YEPP i worked on backend, again and yet got to this new screen with new cardsss. NOW user can adjust the amount logs, there is bug i found while testing but then i got message that i must dev post soon, anyways les goo, i would like to know and hear more suggestion on anything about my project.
HYDRATION TRACKER TLDR; deployed it on pythonanywhere removed variable input created tables for history I’ve re- the whole hydration.html, due to the reasons my javascript wasn’t performing well with variable input. so now i backed off from it and start to complete the basics. Deployed my project on pythonanywhere so now i can officially use the sticker when i go outside too, please acknowledy this my first time making a dedicated project and i have learned a lot of stuff, yet i try to keep on improving ##Future plans… making graphsss (tuff) ig, i always liked visual representation. sleep.html but diff cards mihi med tracker (custom medication) Will work on better dev posts.
FINALLY, I THINK MY HYDRATION PAGE IS DONE. Changes; First of all I have graphss, like it is working the one day graph is supposed to be a cumulative graph and its working well. fixed few bugs i was facing when i was testing it, i still cannot test 1w and 1 month graph due to limited logs, It was a long way, honestly, i have put my design i made on figma in the later image, and the first one is what Im at rn. If you scroll through my other dev logs you might stumble upon my whole design phase. However, I am glad with what I got to, it is just as expected, I am ship this as a WIP project, please I really put my heart at it, learning and idealizing, I really appreciate your rating and help, Thanks for reading it this farr, really thank you. I will add more details, when i will ship this.
IRONY So, I have been flagged, to be using ai styled design, which is sad truly because, I myself had came up with the layout, in figma, and then later i tweaked the design in dark theme, because i probably my eyes hurt working with bright screen lol. light theme I was hoping to use this design, later, for customizing theme option in settings. Apparently, I am switching back to it, after some tweaks, I will be able to push it on github Clarification Also, I want to tell that I wanted to make an app out of it, and all i did rn is just made it on a web, so i got a long way to go, I was am soon using flutter for my application and deployment. I believe i wont be flagged next because yeah, It is my design, i wonder if it is that good or that much slop.
YO - I’m back I have posted my app to what I designed and where I am rn, first picture is my figma design, second is my where I am… I’ve been wanting to add those animated giphy, let me know how you guys do it. I tweaked my route kinda completed it, I’m kinda happy with this, some of the things are repetitive but so far here is what i did: re-made my date selector bar changed the background for sleep tracker theme sleep button toggle, it was kinda hard to learn DOM manipulation, so I let ai do it (will learn it) set-up routes in the backend, kinda fun to tweak it and used ai to help me clear my mess Honestly, I think must showcase my result properly, it is not a web but an app, soon converting it to a whole app, as im finished with logic routes. NFC is working, soon uploading it on Github. You can send me your reviews as you like my app to be, I would be happy to view them and react to them.
#YOPP! I tried re-designing my home page and here is hat Ive come up with I used this pale-yellow green. I don’t know if i would change it or keep it. Any-ways here is what Ive been up to and what I did I have read the reasons that came through with the shipment results, and few reviewers claimed that they can’t understand they way it works, which for what i would like to apologize for I should’ve made an instruction screen, or smth more prominent of the usage of my system. I am glad they have pointed it out! So, I have tried making a Home-screen and a simple instruction screen. It was fun and quick process, although few designing got me time tinkering. Here is a overview to what I have done, I used lapse to record my Figma designing hours and then, later tried implementing it inside my code. although there have been so many inconsistencies that I had to use ai to help me, but Im glas with what im at. Then, also I have changed date selector bar which was again fun, because this time there was less friction than before, I’m kinda disappointed that I couldn’t manipulate JS on my own. Aside naturally, everything worked well, now I would like to complete it soon, because my other responsibilities have been hiking. BTW, I am tweaking myself I am kinda super glad with my hydration and sleep routes they are peaking, I would like to highlight them at next dev post, keep getting posted, I am sure you guys would like it
This might be my last dev-log I hate to admit but my study have been over-whelming. I am in 12th grade and catching up with my studies + preparing for a screening test olympiads. It is like juggling them but can’t do anything, I must eliminate something to keep up with everything else. Not gonna lie, it has been so much fun and learning during my time in Star-dance. I would miss this. I wanted to complete aegis-project but I still seem to have a long way to go especially learning dart or xml to host my app. Actually there might a bit more longer way because i haven’t really picked up on java-script either. I am kinda sad because I can not put in my everything, but I am happy with whatever I have learnt, plus all the new people I have met and then also able to tell more people about it. For this dev-log I’d like to showcase my whole app and designs Ive been working on. I have tried learning a lil bit of schema, but unable to give my whole time towards it also, I have also sent my code to ai to help me too. Things I have done instruction route is done for now re-newed the db for new schema (which i would not use after this decision) tweaked some design for my all routes and html which I have attached ss to it.
Ships:
AEGIS General intro I made a NFC tracker application, even though it is on the web rn, I have deployed it to pythonanywhere for use, currently. Story-Time: I might be a strange guy but I like to track my habits and count everything, and I surely have done tracking across both digitally and manually on my journal. That is when I knew about NFC stickers where a person showcased how he is using it to track his stuff, and i thought it to be so cool if i can do it too, so I began searching… later, here I am. Challenges I tried my best to make this as best i can, ngl I kinda tripped, and hit so many walls, at some point I was about to give up, but nah, I was more determined to complete it. I watched few HTML videos and CSS workaround, as i learned them through this project too, I learned a lot of stuff, I do not regret it, And the java-script was so hard to learn with my studies and in this short amount of time, that i must day i used AI to get me through it. Happy? Yeah I am so happy, with all I could do I wish i could do more, but as ever I’m not giving up. I am so happy about it, also when i discussed it with my cousin and he was like he wanted to track his water intake, it was hard for him. And i instantly knew, I can do it and I might can help him too. NOTE: I uses a NFC sticker on the objects, for example; water bottle, where the user can scan it whenever he can log his intake, and I have shared the link to where the person can use it, I am sorry not everyone can get a sticker, but I can make sure if they do have it it is most best UX for them. Otherwise, I have added an approach to to manually log the intake, Since, it is suppose to be an app and i haven’t yet made it an app, so i deployed it on pythonanywhere you can try out manual logging into my db. but as soon as the project is completed i will produce it such way the users have their local db to store their intake which is when a mobile app comes in. This a WIP PROJECT and I have so many things in mind to add, as I progress, lets hope I can do it, I believe i can do more pages faster as I have whole workflow in my head. Thank you for reading it this farrrr, arigato gozaimasu.
A NFC tag tracker app, it is on the web right now, for designing and prototyping purpose, although I have written much greater detail in my previous ship, this is just a contiuation to my last ship. So, from the previous feedback, I have fixed few thing worked more on the representation and then also added a instruction page to the routes. I want to say I am happy with where I have reached as said in my previous dev-log, I have decided to get this project a halt, due to other responsibilities and priorities. I wanted to do more than that, but I am glad with whatever I learned along the way, it was all fun. As of now it is still not a native application rather a web hosted testing prototype, you can use the graphs and toggle option to change option, and yeah for now i haven’t yet added different user option, although I started with it. I might be signing off after this, would try to comeback but till then, may everyone do well in anything they do, I would still like to receive feedback, and yeah Ik I have sm things in mind to do and add, but yet again sadly it is kinda hard for me as of now....
|
1793350250.5066376
|
1793436650.5066376
|
|
63897
|
A Autumn Alarm Clock by @theagentaurum | Stardance
|
theagentaurum
|
0
|
7.82
|
0
|
[]
|
[{"post_id": 75269, "ts": "202 [{"post_id": 75269, "ts": "2026-09-29T16:28:53Z", "hours": 1.4167, "text": "Github and Firmware Finished the Firmware on the Arduino IDE. Created basic commands for the different switches and their functions. Wrote the Github README and also worked on organizing the files correctly creating the 4 folders."}, {"post_id": 75223, "ts": "2026-09-29T14:44:05Z", "hours": 3.0681, "text": "CAD Used Onshape and Finished The Cad for the Alarm Clock. Decided with a Orange Aesthetic!"}, {"post_id": 70939, "ts": "2026-09-20T02:32:40Z", "hours": 3.3336, "text": "Cyberpunk Alarm Clock Devlog #1 During this build session, I finished my schematic, my PCB board, added visuals to my PCB, and exported everything. This was the first time I did something with a PCB and found it very interesting! I plan on expanding my work with hardware projects in the future."}]...
|
Title: A Autumn Alarm Clock by @theagentaurum | St Title: A Autumn Alarm Clock by @theagentaurum | Stardance
Devlogs:
Cyberpunk Alarm Clock Devlog #1 During this build session, I finished my schematic, my PCB board, added visuals to my PCB, and exported everything. This was the first time I did something with a PCB and found it very interesting! I plan on expanding my work with hardware projects in the future.
CAD Used Onshape and Finished The Cad for the Alarm Clock. Decided with a Orange Aesthetic!
Github and Firmware Finished the Firmware on the Arduino IDE. Created basic commands for the different switches and their functions. Wrote the Github README and also worked on organizing the files correctly creating the 4 folders....
|
1793055159.6623418
|
1793659959.6623418
|
|
32620
|
MinecraftOS by @rapidSpeed | Stardance
|
rapidSpeed
|
2
|
10.88
|
14
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T15:59:55Z", "hours": 3.0, "multiplier": 5.34, "payout": 14, "blessing": "neutral", "text": "I added maximising and minimising of windows, which was pretty difficult. Adding eaglercraft was pretty easy, but the server is another thing. It took a long time. Btw, eaglercraft does take some time to startup on the website, so please be patient.", "repo": "https://github.com/rapidSpeed4652/MinecraftOS", "demo": "https://rapidspeed4652.github.io/MinecraftOS/"}, {"ship_num": 2, "ts": "2026-07-13T13:04:06Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an OS in the style of minecraft which is a game i like a lot. It took me a long time to make this, and im looking forward to make the next version too. Before this, i barely knew how to code html, css and javascript, but now i can confidently write basic websites :3 I’m very happy with how the website turned out ngl. Making the windows draggable and closable was a very big task, which im glad i was able to do. I hope yall enjoy the website.", "repo": "https://github.com/rapidSpeed4652/MinecraftOS", "demo": "https://rapidspeed4652.github.io/MinecraftOS/"}]...
|
[{"post_id": 75265, "ts": "202 [{"post_id": 75265, "ts": "2026-09-29T16:22:50Z", "hours": 0.8756, "text": "Thanks for the reviews! They gave a lot of insight on how to improve the OS. So, I have made it such that windows opened near the cursor and added the calc application! I will start working on improving the journel app too. I have been wondering if I should add a music player pre loaded with minecraft songs. What do yall think?"}, {"post_id": 55721, "ts": "2026-08-27T18:14:51Z", "hours": 0.3775, "text": "OMGG!!! It finally worked! I have ran a minecraft server on github actions that you can join easily! Technically its an eaglercraftX server, but still! I have lots of plans for future projects using this knowledge i learnt by making this. For now, I’m gonna give the repo link and you can check if the server is running. If it is, u can join the link given in the logs by cloudflare. (dont forget to add the wss:) https://github.com/rapidSpeed4652/Eaglercraft-Server Andd soon imma make a gui in the website to start or stop the server and show stats like number of players online or smh like that. Theres a problem tho, the world isnt persistant. While i tried making it, it didnt work and was taking way too long. I hope i can fix it later. P.S i didnt put time on hackatime, but i swear i spent hours on this"}, {"post_id": 39024, "ts": "2026-08-01T18:05:51Z", "hours": 0.8478, "text": "Added eaglercraftX 1.8.8, it was pretty easy, just downloading the offline .html and embedding it using , honestly the maximising button bothered me as it refused to work due to a simple error . Anyways, this is huge success, but it will lag while the game is loading due to which the windows wont be able to move. I still havent added window resizing which i will add later. I also updated the version numbering, if you look closely TBH, im considering to remove all the personality stuff and make it into a functional os with a calc, browser, games, etc. Note: Once you open the eaglercraft window, you might need to wait 10 seconds for it to load as it is hosted on github pages. I will change the host later to my own nest server."}, {"post_id": 38303, "ts": "2026-07-31T16:53:51Z", "hours": 1.4319, "text": "I finally added maximising and restoring of windows. Im thinking of adding the resizing of windows and minimising. But i have a crazy idea, what if i add eaglercraft to this? Like since it alr works on browser, maybe i can add it as a part of suite of games on the website? Sounds good but hard to implement."}, {"post_id": 27643, "ts": "2026-07-13T12:23:34Z", "hours": 0.7844, "text": "added custom app to credit myself , i think im done with the OS, maybe if i feel bored i might add more apps. But for now, im gonna get the website up on github pages."}, {"post_id": 27125, "ts": "2026-07-12T12:16:27Z", "hours": 1.7547, "text": "Added headers for all the windows . I also implemented the journel app, but you can only view or edit existing journels, you cannot add new journels which sounds incomplete. I might add the feature in the future. For now, I have also fixed the tap on window to bring on top, which is so satisfying ."}, {"post_id": 26736, "ts": "2026-07-11T18:15:00Z", "hours": 0.4058, "text": "Exams are going on 😭😭, but im still gonna do atleast one hour of coding. But for now, i have started modularising of code so that its easier to add more apps. But looks like i have broken the window size and the window on top. Thats a future me problem ¯ _ (ツ)_/¯. I have also started working on the notes app… Dw i will fix it and complete the notes app too tomorrow."}, {"post_id": 26025, "ts": "2026-07-10T16:34:56Z", "hours": 1.4103, "text": "Added the hotbar, which will contain all the programs and windows. I also completed the functionality of closing and opening of windows to all the windows. Should i add the old minecraft launcher icon as my OS icon? I think it would look pretty good."}, {"post_id": 25295, "ts": "2026-07-09T14:22:42Z", "hours": 1.6781, "text": "I have added the functionality of moving windows and closing and opening of them. For now, the functionality of opening and closing is only for hobbies window, i will add it for other windows too. I’m thinking of making the taskbar that holds all the programs as the hotbar in minecraft."}, {"post_id": 24784, "ts": "2026-07-08T16:09:22Z", "hours": 0.8217, "text": "Still working on the minecraft aesthetic. Finding the classic dirt background is difficult, but i think i will finish it by tmr. For today, i have added the content and played around with the style tags and stuff i can add."}]...
|
Title: MinecraftOS by @rapidSpeed | Stardance
Dev Title: MinecraftOS by @rapidSpeed | Stardance
Devlogs:
Still working on the minecraft aesthetic. Finding the classic dirt background is difficult, but i think i will finish it by tmr. For today, i have added the content and played around with the style tags and stuff i can add.
I have added the functionality of moving windows and closing and opening of them. For now, the functionality of opening and closing is only for hobbies window, i will add it for other windows too. I’m thinking of making the taskbar that holds all the programs as the hotbar in minecraft.
Added the hotbar, which will contain all the programs and windows. I also completed the functionality of closing and opening of windows to all the windows. Should i add the old minecraft launcher icon as my OS icon? I think it would look pretty good.
Exams are going on 😭😭, but im still gonna do atleast one hour of coding. But for now, i have started modularising of code so that its easier to add more apps. But looks like i have broken the window size and the window on top. Thats a future me problem ¯ _ (ツ)_/¯. I have also started working on the notes app… Dw i will fix it and complete the notes app too tomorrow.
Added headers for all the windows . I also implemented the journel app, but you can only view or edit existing journels, you cannot add new journels which sounds incomplete. I might add the feature in the future. For now, I have also fixed the tap on window to bring on top, which is so satisfying .
added custom app to credit myself , i think im done with the OS, maybe if i feel bored i might add more apps. But for now, im gonna get the website up on github pages.
I finally added maximising and restoring of windows. Im thinking of adding the resizing of windows and minimising. But i have a crazy idea, what if i add eaglercraft to this? Like since it alr works on browser, maybe i can add it as a part of suite of games on the website? Sounds good but hard to implement.
Added eaglercraftX 1.8.8, it was pretty easy, just downloading the offline .html and embedding it using , honestly the maximising button bothered me as it refused to work due to a simple error . Anyways, this is huge success, but it will lag while the game is loading due to which the windows wont be able to move. I still havent added window resizing which i will add later. I also updated the version numbering, if you look closely TBH, im considering to remove all the personality stuff and make it into a functional os with a calc, browser, games, etc. Note: Once you open the eaglercraft window, you might need to wait 10 seconds for it to load as it is hosted on github pages. I will change the host later to my own nest server.
OMGG!!! It finally worked! I have ran a minecraft server on github actions that you can join easily! Technically its an eaglercraftX server, but still! I have lots of plans for future projects using this knowledge i learnt by making this. For now, I’m gonna give the repo link and you can check if the server is running. If it is, u can join the link given in the logs by cloudflare. (dont forget to add the wss:) https://github.com/rapidSpeed4652/Eaglercraft-Server Andd soon imma make a gui in the website to start or stop the server and show stats like number of players online or smh like that. Theres a problem tho, the world isnt persistant. While i tried making it, it didnt work and was taking way too long. I hope i can fix it later. P.S i didnt put time on hackatime, but i swear i spent hours on this
Thanks for the reviews! They gave a lot of insight on how to improve the OS. So, I have made it such that windows opened near the cursor and added the calc application! I will start working on improving the journel app too. I have been wondering if I should add a music player pre loaded with minecraft songs. What do yall think?
Ships:
I made an OS in the style of minecraft which is a game i like a lot. It took me a long time to make this, and im looking forward to make the next version too. Before this, i barely knew how to code html, css and javascript, but now i can confidently write basic websites :3 I’m very happy with how the website turned out ngl. Making the windows draggable and closable was a very big task, which im glad i was able to do. I hope yall enjoy the website.
I added maximising and minimising of windows, which was pretty difficult. Adding eaglercraft was pretty easy, but the server is another thing. It took a long time. Btw, eaglercraft does take some time to startup on the website, so please be patient....
|
1793472726.885648
|
1793559126.885648
|
|
60746
|
game by @AaravChaudhary | Stardance
|
AaravChaudhary
|
0
|
17.73
|
0
|
[]
|
[{"post_id": 75261, "ts": "202 [{"post_id": 75261, "ts": "2026-09-29T16:15:09Z", "hours": 5.0219, "text": "Code is done now yayy it had many bugs but I spent a lot of time to debug ngl"}, {"post_id": 72712, "ts": "2026-09-23T15:55:33Z", "hours": 9.7333, "text": "yayy!"}, {"post_id": 69743, "ts": "2026-09-17T18:14:13Z", "hours": 1.0, "text": "code till now basic code"}, {"post_id": 69266, "ts": "2026-09-16T18:16:21Z", "hours": 0.9667, "text": "my work till now"}, {"post_id": 68743, "ts": "2026-09-15T17:36:50Z", "hours": 1.0086, "text": "it was very fun and interesting I hope my game turn out very good"}]...
|
Title: game by @AaravChaudhary | Stardance
Devlog Title: game by @AaravChaudhary | Stardance
Devlogs:
it was very fun and interesting I hope my game turn out very good
my work till now
code till now basic code
yayy!
Code is done now yayy it had many bugs but I spent a lot of time to debug ngl...
|
1793036997.313008
|
1793641797.313008
|
|
66044
|
LokalMapr by @satr14 | Stardance
|
satr14
|
0
|
2.92
|
0
|
[]
|
[{"post_id": 75234, "ts": "202 [{"post_id": 75234, "ts": "2026-09-29T15:26:15Z", "hours": 1.2083, "text": "soon my school is gonna have an event where i have to go offline for a WHOLE WEEK 😭 gotta squeeze as much hours as i can gang oauth and email otp handling for form global stylesheet fixes, all styles are on base layer made a simple homepage with create buttons for the planned types add google material symbols cdn made a style to center icons in buttons disable style for buttons and inputs remove debug console.log gings use pre element for new line formatting on debug user object dump i think the main challenge for stardance on my side is that my school hosts way too much programs thats required for every student to join. but whatever"}, {"post_id": 74241, "ts": "2026-09-27T01:34:39Z", "hours": 1.3894, "text": "this took a while, mainly because im not really into implementing auth for web apps. mostly only ever made static sites with little to no oauth. main challenge being pocketbase authstore handling. luckily copilot got my back and fixed things fix css warnings on font import add a login check to the layout code (invalid authstore => goto /login) fix typos with class names etc made a /login page handling every single auth type from password, email otp, and oauth implemented login functionality for password auth styling changes to forms globally added profile json info from home screen (will be expanded later, this is for debugging purposes) you may also notice theres a “hackclub auth” button here. this is for stardance reviewers and raters when they wanna try the app. ill make sure that this is heavily restricted to prevent spam on my homelab"}, {"post_id": 73999, "ts": "2026-09-26T14:34:13Z", "hours": 0.3175, "text": "currently i havent really used my skill into good use for my education life. so this is gonna be an opportunity to make something i would actually use constantly. current selection of selfhosted mind mapping software is pretty buggy, outdated, and usually just doesnt give me all the features i need. hence this is gonna be a “fine, ill do it myself” attempt. init readme and license init sveltekit, tailwind, lora font, catppuccin colors, pocketbase created pocketbase class in lib file updated readme with dev and build instructions app is still bare bones so here is a photo of the commit tree :D"}]...
|
Title: LokalMapr by @satr14 | Stardance
Devlogs:
Title: LokalMapr by @satr14 | Stardance
Devlogs:
currently i havent really used my skill into good use for my education life. so this is gonna be an opportunity to make something i would actually use constantly. current selection of selfhosted mind mapping software is pretty buggy, outdated, and usually just doesnt give me all the features i need. hence this is gonna be a “fine, ill do it myself” attempt. init readme and license init sveltekit, tailwind, lora font, catppuccin colors, pocketbase created pocketbase class in lib file updated readme with dev and build instructions app is still bare bones so here is a photo of the commit tree :D
this took a while, mainly because im not really into implementing auth for web apps. mostly only ever made static sites with little to no oauth. main challenge being pocketbase authstore handling. luckily copilot got my back and fixed things fix css warnings on font import add a login check to the layout code (invalid authstore => goto /login) fix typos with class names etc made a /login page handling every single auth type from password, email otp, and oauth implemented login functionality for password auth styling changes to forms globally added profile json info from home screen (will be expanded later, this is for debugging purposes) you may also notice theres a “hackclub auth” button here. this is for stardance reviewers and raters when they wanna try the app. ill make sure that this is heavily restricted to prevent spam on my homelab
soon my school is gonna have an event where i have to go offline for a WHOLE WEEK 😭 gotta squeeze as much hours as i can gang oauth and email otp handling for form global stylesheet fixes, all styles are on base layer made a simple homepage with create buttons for the planned types add google material symbols cdn made a style to center icons in buttons disable style for buttons and inputs remove debug console.log gings use pre element for new line formatting on debug user object dump i think the main challenge for stardance on my side is that my school hosts way too much programs thats required for every student to join. but whatever...
|
1793451117.553807
|
1794315117.553807
|
|
54562
|
SiteScope AI by @Euge | Stardance
|
Euge
|
1
|
23.8
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T14:27:37Z", "hours": 18.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hello, I made a project called SiteScope AI! It is an auditor for websites that gets raw JSON data from Google PageSpeed/Lighthouse and adds an AI (Gemini) layer, which basically describes every mistake on your website in understandable language and tells you how to fix it. This project was almost built by myself. I did the FastAPI backend, and the frontend is mostly my own ideas (80%), the other 20% was done with AI because I didn’t know what fonts and colors to use. I also did the deployment frontend is on Netlify, backend is on Nest (Stardance/Hack Club). What was difficult? Honestly, during building the backend I encountered a lot of bugs. One I’m proud I found: the AI explanation step was blocking, with no timeout, so a slow Gemini response could freeze the entire server for every user at once, not just one request. I found this by deliberately load-testing with 5 browser tabs at once, then fixed it by running it in a thread with a 20-second timeout. Later, the Nest container itself went down, and because of my limited knowledge of Linux I used AI (Claude Sonnet 5) to help me understand what was going on. Instead of just guessing it was my code, I tested the backend directly on the server (localhost) versus through the public domain, and proved the problem was on Nest’s side, not mine and later their own admin confirmed it was a platform-wide issue affecting all containers, not just mine. I also found a few bugs during testing for example, when the URL contained just underscores or random text like “not_a_url_at_all”, the frontend counted it as a valid URL and sent it to the backend anyway, wasting API calls before failing. I had to rewrite the URL validation logic in script.js to properly check it looks like a real domain first. Why I am still proud of my project? The main reason is that it still works even when the AI API is broken or times out, you still must to get a full audit with the technical description. The second reason is, I wrote earlier, the design was almost done by myself. What you should know before testing. I recommend for testing you use a light website with mostly basic HTML and CSS structure e.g. example.com. If you don’t know any test URL, here you are: example.com info.cern.ch httpbin.org sitescope-ai.netlify.app motherfuckingwebsite.com bettermotherfuckingwebsite.com text.npr.org ! If it says “failed to fetch”, try another one of these URLs or wait a few minutes, Nest might be repairing the backend containers. ! Don’t use e-shop or big brand websites like McDonald’s, Nike, Adidas, etc., because of the large amount of images the audit can take too long and time out…", "repo": "https://github.com/ich-bin-eugenius/sitescope-ai", "demo": "https://sitescope-ai.netlify.app/"}]...
|
[{"post_id": 75231, "ts": "202 [{"post_id": 75231, "ts": "2026-09-29T15:19:24Z", "hours": 5.8028, "text": "Alright guys, here we go… I don’t know if I can call this DEVLOG 11, because I didn’t add any new features, I just rewrote almost the entire frontend because it was kind of AI-generated. Sorry about that, but I still hope you like it…"}, {"post_id": 67341, "ts": "2026-09-13T12:42:29Z", "hours": 0.5553, "text": "The project is ready for shipping, I fixed a few bugs just before it. I hope you like it! :)"}, {"post_id": 66863, "ts": "2026-09-12T19:57:21Z", "hours": 1.6919, "text": "DEVLOG #10 - AI timeouts, Nest drama & almost shipping Today I fixed a pretty annoying issue with the AI part of SiteScope AI. Basically, if Gemini took too long to respond, it could make the whole backend freeze 💀. I added a 20s timeout and now the audit just falls back to the normal Lighthouse description if AI takes too long. Then Nest decided to have a little meltdown 😭. My container went down and SSH kept disconnecting. At first I thought I broke something, but apparently it was a problem on Nest’s side affecting multiple containers. I also found that heavier websites can take too long to audit, so for now there’s roughly a 30s limit. Finally, I finished the README and did some small UI fixes. So yeah… SiteScope AI is basically ready for a ship."}, {"post_id": 64475, "ts": "2026-09-08T22:03:05Z", "hours": 0.6392, "text": "DEVLOG #9 - Backend finally working Today I spent a bit less time on SiteScope AI than usual, but I finally solved one of the biggest problems so far - getting the backend properly hosted and connected. Claude Sonnet 5 helped me understand the Nest setup, especially the systemd service and how to make the backend accessible from outside the server. I also discovered that I had simply forgotten to set the target port 8000 in the Nest dashboard…🙌😭, thanks guys for reading bye :>"}, {"post_id": 63775, "ts": "2026-09-07T18:48:37Z", "hours": 4.1114, "text": "DEVLOG #8 - Frontend improvements & new ideas From September 2nd to 7th, I spent around 4 hours working on SiteScope AI. I mainly improved the frontend to make it feel less AI-generated and more like my own design. I also came up with new ideas for pages like About and Thanks, different themes, and a better project navigation system. I also started working on hosting the backend and tried Nest, a free hosting service from Hack Club. It didn’t work out yet, but I’ll keep working on it. Overall, a lot of frontend improvements, new ideas and some backend experiments this time."}, {"post_id": 59793, "ts": "2026-09-01T18:43:54Z", "hours": 2.2014, "text": "Devlog #7 - Phase 1 complete & Gemini prompt testing Today I finished Phase 1 by testing valid, invalid and slow URLs and fixing client-side URL validation to prevent unnecessary PageSpeed API requests. I also started Phase 2: designed and tested the Gemini prompt for generating explanation, why_it_matters and how_to_fix for each audit issue. The first AI outputs are working well, so I’m moving on to integrating this into the actual audit pipeline."}, {"post_id": 59196, "ts": "2026-08-31T21:03:12Z", "hours": 2.0469, "text": "Hello guys! Welcome to my 6th devlog! 🔥🙃 Today I finally made a big improvement to the frontend. I got the initial idea from the internet and combined it with my own design skills and AI to create something that fits SiteScope AI. I also finally figured out why I kept getting the “PageSpeed API daily limit reached” error, even though my 25,000-token quota was still available. Turns out I was running the backend from the wrong directory. 😭 I also started working on making the frontend more polished and attractive. That’s all for today! The frontend actually took much longer than the 2 hours shown here, since I didn’t log some of yesterday’s and the day before’s work. Btw, I’d really appreciate it if you checked out the video attached to this devlog! ❤️"}, {"post_id": 58439, "ts": "2026-08-30T21:10:27Z", "hours": 0.8844, "text": "DEVLOG #5 - Backend Fixes & Frontend Today I worked mainly on the backend, fixed several issues with the Google PageSpeed API, solved the API quota problem and added CORS so the frontend can communicate with the backend properly. I also started working on a better-looking frontend that should make SiteScope AI more attractive and easier to use… thanks for reading this devlog and watching that video."}, {"post_id": 57608, "ts": "2026-08-29T20:21:41Z", "hours": 0.6139, "text": "DEVLOG #4 - Connecting the Frontend 🚀 Today I spent about 30 minutes finishing the basic frontend structure and connecting it to the backend. What I did today: ● Connected script.js to the audit form ● Added a request from the frontend to /api/audit ● Added loading and error states ● Connected the frontend to the backend ● Deployed the frontend to Netlify The basic flow is now there: URL → Frontend → Backend → PageSpeed API → Results There is still a problem with the deployed version — currently I get: Error: Failed to fetch I haven’t fully solved the deployment/API setup yet, so the audit doesn’t work properly from the public website for now. If you are a bit interested in my project here is the url: sitescope-ai.netlify.app, thanks for visiting💗🔥, Eugene"}, {"post_id": 56893, "ts": "2026-08-28T21:51:44Z", "hours": 1.8739, "text": "DEVLOG #3 — Parsing, Error Handling & First Frontend Today I cleaned up the PageSpeed response and added basic error handling. The backend now: ● Extracts scores for Performance, SEO, Accessibility and Best Practices ● Lists detected issues with their title, description and severity ● Handles invalid URLs, timeouts and API errors ● Returns a simpler JSON response ● Works with the /api/audit endpoint Example response: { \"url\" : \"https://example.com\" , \"scores\" : { \"performance\" : 100 , \"accessibility\" : 96 , \"best-practices\" : 96 , \"seo\" : 80 }, \"opportunities\" : [] } I also started working on the frontend. The URL form and some basic CSS are now in place, including the Space Grotesk font. Next step: connect the form to the backend and display the audit results in the browser."}, {"post_id": 56209, "ts": "2026-08-27T21:13:18Z", "hours": 2.0622, "text": "DEVLOG #2 - First Working Audit Today I continued working on SiteScope AI and got the first real website audit working. The main goal was to connect the backend to Google PageSpeed Insights and turn its response into something easier to use. What I worked on today: Created the basic FastAPI backend Added the GET / endpoint Created the POST /api/audit endpoint Connected the backend to the PageSpeed Insights API Tested the PageSpeed API manually and explored its JSON response Created a parser to simplify the PageSpeed response Extracted Performance, SEO, Accessibility and Best Practices scores Added the main opportunities/issues to the response Created mock data and tested the parser Tested the complete /api/audit endpoint with curl Refactored the PageSpeed parser into a separate module Fixed a bug with query parameter serialization The endpoint can now receive a website URL and return its Lighthouse scores together with the main issues found on the website. For example, when testing it with example.com, the API returned the scores and detected issues such as a missing meta description, non-descriptive link text, a missing main landmark and a missing charset declaration. This is still only the backend foundation, but the main idea is finally starting to work. Next, I want to continue building the analysis pipeline and eventually use AI to turn the raw audit data into useful explanations and recommendations. Day 2."}, {"post_id": 55435, "ts": "2026-08-27T08:17:03Z", "hours": 1.1633, "text": "DEVLOG #1 - Starting SiteScope AI 🚀 Today I discovered Stardance by Hack Club, and it finally gave me the motivation to start a project I’ve wanted to build for a while: SiteScope AI. The idea is to build an AI-powered website auditor that can analyze websites and provide useful insights and recommendations. Before starting, I used AI to help me understand the basic architecture, technologies and components I would need. Then I got to work. What I did today: Created the GitHub repository Added a README.md and MIT License Cloned the repository locally Connected the project to Hack Club Stardance Registered it as a Software -> Websites project Created the initial project structure Added .gitignore and .env Created a Python virtual environment Split the project into backend and frontend Added the required API keys: PAGESPEED_API_KEY GEMINI_API_KEY Tested the API keys to make sure they work Fixed the Python interpreter and virtual environment configuration It’s still just the beginning, but the foundation is now ready. Next step: start building the actual website analysis pipeline. 🔥 This is only Day 1."}]...
|
Title: SiteScope AI by @Euge | Stardance
Devlogs: Title: SiteScope AI by @Euge | Stardance
Devlogs:
DEVLOG #1 - Starting SiteScope AI 🚀 Today I discovered Stardance by Hack Club, and it finally gave me the motivation to start a project I’ve wanted to build for a while: SiteScope AI. The idea is to build an AI-powered website auditor that can analyze websites and provide useful insights and recommendations. Before starting, I used AI to help me understand the basic architecture, technologies and components I would need. Then I got to work. What I did today: Created the GitHub repository Added a README.md and MIT License Cloned the repository locally Connected the project to Hack Club Stardance Registered it as a Software -> Websites project Created the initial project structure Added .gitignore and .env Created a Python virtual environment Split the project into backend and frontend Added the required API keys: PAGESPEED_API_KEY GEMINI_API_KEY Tested the API keys to make sure they work Fixed the Python interpreter and virtual environment configuration It’s still just the beginning, but the foundation is now ready. Next step: start building the actual website analysis pipeline. 🔥 This is only Day 1.
DEVLOG #2 - First Working Audit Today I continued working on SiteScope AI and got the first real website audit working. The main goal was to connect the backend to Google PageSpeed Insights and turn its response into something easier to use. What I worked on today: Created the basic FastAPI backend Added the GET / endpoint Created the POST /api/audit endpoint Connected the backend to the PageSpeed Insights API Tested the PageSpeed API manually and explored its JSON response Created a parser to simplify the PageSpeed response Extracted Performance, SEO, Accessibility and Best Practices scores Added the main opportunities/issues to the response Created mock data and tested the parser Tested the complete /api/audit endpoint with curl Refactored the PageSpeed parser into a separate module Fixed a bug with query parameter serialization The endpoint can now receive a website URL and return its Lighthouse scores together with the main issues found on the website. For example, when testing it with example.com, the API returned the scores and detected issues such as a missing meta description, non-descriptive link text, a missing main landmark and a missing charset declaration. This is still only the backend foundation, but the main idea is finally starting to work. Next, I want to continue building the analysis pipeline and eventually use AI to turn the raw audit data into useful explanations and recommendations. Day 2.
DEVLOG #3 — Parsing, Error Handling & First Frontend Today I cleaned up the PageSpeed response and added basic error handling. The backend now: ● Extracts scores for Performance, SEO, Accessibility and Best Practices ● Lists detected issues with their title, description and severity ● Handles invalid URLs, timeouts and API errors ● Returns a simpler JSON response ● Works with the /api/audit endpoint Example response: { "url" : "https://example.com" , "scores" : { "performance" : 100 , "accessibility" : 96 , "best-practices" : 96 , "seo" : 80 }, "opportunities" : [] } I also started working on the frontend. The URL form and some basic CSS are now in place, including the Space Grotesk font. Next step: connect the form to the backend and display the audit results in the browser.
DEVLOG #4 - Connecting the Frontend 🚀 Today I spent about 30 minutes finishing the basic frontend structure and connecting it to the backend. What I did today: ● Connected script.js to the audit form ● Added a request from the frontend to /api/audit ● Added loading and error states ● Connected the frontend to the backend ● Deployed the frontend to Netlify The basic flow is now there: URL → Frontend → Backend → PageSpeed API → Results There is still a problem with the deployed version — currently I get: Error: Failed to fetch I haven’t fully solved the deployment/API setup yet, so the audit doesn’t work properly from the public website for now. If you are a bit interested in my project here is the url: sitescope-ai.netlify.app, thanks for visiting💗🔥, Eugene
DEVLOG #5 - Backend Fixes & Frontend Today I worked mainly on the backend, fixed several issues with the Google PageSpeed API, solved the API quota problem and added CORS so the frontend can communicate with the backend properly. I also started working on a better-looking frontend that should make SiteScope AI more attractive and easier to use… thanks for reading this devlog and watching that video.
Hello guys! Welcome to my 6th devlog! 🔥🙃 Today I finally made a big improvement to the frontend. I got the initial idea from the internet and combined it with my own design skills and AI to create something that fits SiteScope AI. I also finally figured out why I kept getting the “PageSpeed API daily limit reached” error, even though my 25,000-token quota was still available. Turns out I was running the backend from the wrong directory. 😭 I also started working on making the frontend more polished and attractive. That’s all for today! The frontend actually took much longer than the 2 hours shown here, since I didn’t log some of yesterday’s and the day before’s work. Btw, I’d really appreciate it if you checked out the video attached to this devlog! ❤️
Devlog #7 - Phase 1 complete & Gemini prompt testing Today I finished Phase 1 by testing valid, invalid and slow URLs and fixing client-side URL validation to prevent unnecessary PageSpeed API requests. I also started Phase 2: designed and tested the Gemini prompt for generating explanation, why_it_matters and how_to_fix for each audit issue. The first AI outputs are working well, so I’m moving on to integrating this into the actual audit pipeline.
DEVLOG #8 - Frontend improvements & new ideas From September 2nd to 7th, I spent around 4 hours working on SiteScope AI. I mainly improved the frontend to make it feel less AI-generated and more like my own design. I also came up with new ideas for pages like About and Thanks, different themes, and a better project navigation system. I also started working on hosting the backend and tried Nest, a free hosting service from Hack Club. It didn’t work out yet, but I’ll keep working on it. Overall, a lot of frontend improvements, new ideas and some backend experiments this time.
DEVLOG #9 - Backend finally working Today I spent a bit less time on SiteScope AI than usual, but I finally solved one of the biggest problems so far - getting the backend properly hosted and connected. Claude Sonnet 5 helped me understand the Nest setup, especially the systemd service and how to make the backend accessible from outside the server. I also discovered that I had simply forgotten to set the target port 8000 in the Nest dashboard…🙌😭, thanks guys for reading bye :>
DEVLOG #10 - AI timeouts, Nest drama & almost shipping Today I fixed a pretty annoying issue with the AI part of SiteScope AI. Basically, if Gemini took too long to respond, it could make the whole backend freeze 💀. I added a 20s timeout and now the audit just falls back to the normal Lighthouse description if AI takes too long. Then Nest decided to have a little meltdown 😭. My container went down and SSH kept disconnecting. At first I thought I broke something, but apparently it was a problem on Nest’s side affecting multiple containers. I also found that heavier websites can take too long to audit, so for now there’s roughly a 30s limit. Finally, I finished the README and did some small UI fixes. So yeah… SiteScope AI is basically ready for a ship.
The project is ready for shipping, I fixed a few bugs just before it. I hope you like it! :)
Alright guys, here we go… I don’t know if I can call this DEVLOG 11, because I didn’t add any new features, I just rewrote almost the entire frontend because it was kind of AI-generated. Sorry about that, but I still hope you like it…
Ships:
Hello, I made a project called SiteScope AI! It is an auditor for websites that gets raw JSON data from Google PageSpeed/Lighthouse and adds an AI (Gemini) layer, which basically describes every mistake on your website in understandable language and tells you how to fix it. This project was almost built by myself. I did the FastAPI backend, and the frontend is mostly my own ideas (80%), the other 20% was done with AI because I didn’t know what fonts and colors to use. I also did the deployment frontend is on Netlify, backend is on Nest (Stardance/Hack Club). What was difficult? Honestly, during building the backend I encountered a lot of bugs. One I’m proud I found: the AI explanation step was blocking, with no timeout, so a slow Gemini response could freeze the entire server for every user at once, not just one request. I found this by deliberately load-testing with 5 browser tabs at once, then fixed it by running it in a thread with a 20-second timeout. Later, the Nest container itself went down, and because of my limited knowledge of Linux I used AI (Claude Sonnet 5) to help me understand what was going on. Instead of just guessing it was my code, I tested the backend directly on the server (localhost) versus through the public domain, and proved the problem was on Nest’s side, not mine and later their own admin confirmed it was a platform-wide issue affecting all containers, not just mine. I also found a few bugs during testing for example, when the URL contained just underscores or random text like “not_a_url_at_all”, the frontend counted it as a valid URL and sent it to the backend anyway, wasting API calls before failing. I had to rewrite the URL validation logic in script.js to properly check it looks like a real domain first. Why I am still proud of my project? The main reason is that it still works even when the AI API is broken or times out, you still must to get a full audit with the technical description. The second reason is, I wrote earlier, the design was almost done by myself. What you should know before testing. I recommend for testing you use a light website with mostly basic HTML and CSS structure e.g. example.com. If you don’t know any test URL, here you are: example.com info.cern.ch httpbin.org sitescope-ai.netlify.app motherfuckingwebsite.com bettermotherfuckingwebsite.com text.npr.org ! If it says “failed to fetch”, try another one of these URLs or wait a few minutes, Nest might be repairing the backend containers. ! Don’t use e-shop or big brand websites like McDonald’s, Nike, Adidas, etc., because of the large amount of images the audit can take too long and time out…...
|
1793353660.381951
|
1793440060.381951
|
|
62804
|
AquaBot by @Ridith | Stardance
|
Ridith
|
0
|
1.97
|
0
|
[]
|
[{"post_id": 75230, "ts": "202 [{"post_id": 75230, "ts": "2026-09-29T15:19:23Z", "hours": 0.9167, "text": "Hello, the code is done and redy for the Bot"}, {"post_id": 71052, "ts": "2026-09-20T07:46:40Z", "hours": 0.5336, "text": "I am Working on fixing the MD5 errors with the Esp-32 Camera Module"}, {"post_id": 70500, "ts": "2026-09-19T09:05:42Z", "hours": 0.515, "text": "Im working on Debugging the code as Arduino ide keeps lagging"}]...
|
Title: AquaBot by @Ridith | Stardance
Devlogs:
Im Title: AquaBot by @Ridith | Stardance
Devlogs:
Im working on Debugging the code as Arduino ide keeps lagging
I am Working on fixing the MD5 errors with the Esp-32 Camera Module
Hello, the code is done and redy for the Bot...
|
1793047801.46557
|
1793652601.46557
|
|
65440
|
Weather Bot by @Frostymist | Stardance
|
Frostymist
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T15:38:54Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my first slack bot which can tell the weather of a place", "repo": "https://github.com/0xAvaneesh/Slack-Bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 75221, "ts": "202 [{"post_id": 75221, "ts": "2026-09-29T14:42:07Z", "hours": 0.3664, "text": "Shipping Bot to Nest"}]...
|
Title: Weather Bot by @Frostymist | Stardance
Dev Title: Weather Bot by @Frostymist | Stardance
Devlogs:
Shipping Bot to Nest
Ships:
I made my first slack bot which can tell the weather of a place...
|
1793422413.6442993
|
1793508813.6442993
|
|
55938
|
Daydream Shader by @timon | Stardance
|
timon
|
1
|
14.0
|
105
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T14:35:46Z", "hours": 14.0, "multiplier": 7.33, "payout": 105, "blessing": "neutral", "text": "I made a tuff minecraft shader. Daydream is a lightweight Minecraft shader focused on making the vanilla world feel more atmospgeric without completely changing the look. WHY LIGHTWEIGHT: First of all the changes: I improved the lighting, colors, shadows and fog. And for that I used many vibrancy increases and exposure increases that look really good and stunning but dont take much code (basically just 1 line) and dont require much performance. Im proud of trying and learning something new. It started all with a video on my YouTube fy page talking about how to start a shader and when i saw another shader project here on stardance by a beginner i started too. I like that it is lightweight because of those visual vibrancy and exposure increases.", "repo": "https://github.com/Facticee/Daydream", "demo": "https://modrinth.com/shader/daydream-shader"}]...
|
[{"post_id": 75212, "ts": "202 [{"post_id": 75212, "ts": "2026-09-29T14:30:52Z", "hours": 0.8022, "text": "Last Devlog (as im finished) FINALLY 😁 Whats new: I tested alot with the vibrancy values and changed the sky color values to: baseSky.r *= 0.1;baseSky.g *= 0.45;baseSky.b *= 9.0; The 9.0 wont change anything at daytime, but makes the sky way more blue on night time. I used the same lighting setup for both day and night. Now I use seperate Light values making the night natively darker while keeping block lighting the same as before. float skyLight = day ? lm.y : lm.y * 0.45;vec3 lighting = skyLight * (vec3(0.5, 0.62, 0.75) + vec3(1.0, 0.92, 0.78) * sun * shadowCol)+ vec3(1.0, 0.6, 0.3) * lm.x * lm.x + 0.03; Also, before the entites were glowing very hard. This was because the lightmap was applied directly on the entities. I removed it: lmdata = vec4(lmcoord, 0.0, 1.0); (Picture of the glowing pig also here)"}, {"post_id": 75002, "ts": "2026-09-28T20:29:06Z", "hours": 1.905, "text": "I made some small and easy updates. I tested alot and wrote alot and deleted most things. Gemin had the Fog Idea :) First Change: I changed the gbuffers_skybasic.fsh color grading for the sky. It makes the sky way more light blue isntead of the dark blue I had before (image included) baseSky.r *= 0.1; baseSky.g *= 0.65; baseSky.b *= 1.8; Second Change: I added Exposure to the final.fsh. One Problem was that it got so bright, that lighter texutres like sand looked basically white. So i went in the composite.fsh and multiplied the lighting by 0.85 so it will get darker and compensates the Exposure (image included before and after): final.fsh: float exposure = 1.3;color.rgb *= exposure; composite.fsh: vec3 finalColor = albedo.rgb * lighting * 0.85; Third Change: I added a fog near the render distance. It was Geminis Idea to add fog. It was only 2 lines to add: float fog = smoothstep(far * 0.7, far, length(viewPos.xyz));finalColor = mix(finalColor, fogColor, fog);"}, {"post_id": 72832, "ts": "2026-09-23T20:41:26Z", "hours": 6.1117, "text": "This is a devlog with much time because first i forgot to devlog and second because i had one huge problem and i was working on it for like two and a half hour (also much with ai on that problem, ill admit that i was furious after 1,5 hours) So yeah. Whats new: Shadow Rewrite, Color Grading, Lighting, Wave update. Starting Small: I made Waves faster to make them more visible. Before: float wave = sin(p.x * 1.20 + frameTimeCounter * 2.50) * 0.01; Now: float wave = sin(p.x * 1.20 + frameTimeCounter * 2.50) * 0.05; Like seen in the last Devlogs, the shadow never really looked nice. Before i used like manual 5 samplig grid to soften the shadows which is okay for performance but it looks weird. In the new version i completely threw that out. Instead I decided to move over to PCF Percentage Closer FIltering (was claudes idea). It makes the shadow look soft and way smoother. vec3 pcf(vec4 clip) { ivec2 s = ivec2(texcoord * vec2(viewWidth, viewHeight)) % 64; float a = texelFetch(noisetex, s, 0).r * 6.2831853; mat2 r = mat2(cos(a), -sin(a), sin(a), cos(a)); vec3 sum = vec3(0.0); float n = 0.0; for (int x = -PCF_RANGE; x <= PCF_RANGE; x++) { for (int y = -PCF_RANGE; y <= PCF_RANGE; y++) { vec4 p = clip + vec4(r * (vec2(x, y) * (PCF_RADIUS / 8092.0)), -0.002, 0.0); p.xyz = warpShadowClipPos(p.xyz); p.xyz = p.xyz / p.w * 0.5 + 0.5; if (all(greaterThanEqual(p.xy, vec2(0.0))) && all(lessThanEqual(p.xy, vec2(1.0)))) { sum += sh(p.xyz); n += 1.0; } } } return n > 0.0 ? sum / n : vec3(1.0); } While rewriting the composite I had multiple transparent bugs (seen in the pictures below). Basically my palyer hand and mobs were see through. The mob bug was pretty easy fix. gbuffers_entities.vsh wasnt actually passing down normal vectors to the fragment shader. (This was also found by gemini not me) For the Hand fix, i ran into a problem becuase it was the fault of composite.fsh. I was doing some weird depth buffer checks that basically told the shader to ignore the hand and draw the world behind it. (And again this was found by gemini) In the composite shader, I had this depth check to filter out water and sky: if (d0 != d2) { color = albedo; return; } By using if (d0 == 1.0 || d0 < d1 || d0 != d2) the shader now correctly renders it. The Problem was becase how Miencraft renders the hand. The hand renders into depthtex2 but it usually doesnt render into depthtex0. Because the hand depth in d2 was different freom the sky block depthh in d0 it triggered and the composite shader skipped drawing the hand. ( I hope I understood it right). Then came the 2.5 hour problem 😩: Random blocky shadows appeated on water (seen in pictures). Because the problem didnt occured before and because I just reworked the composite i tried everything. I changed things back to old. asked AI nothing helped. In the end it was because gbuffers_water.vsh was calcuilating the shadow coordiantes without applying the shadow map distorion. It was trying to read warped shadow map using undistoreted coordinates. nce I added the #include “libs/distort.glsl” it worked… (again found by gemini, i troubleshooted ALOT with it). Lasty i addewd Color Grading tweaks in final.fsh. Just more vibrance and contras."}, {"post_id": 59077, "ts": "2026-08-31T18:05:00Z", "hours": 4.2739, "text": "I spent some time remaking the water. Before the Waves were pretty symmetrical. I added more randomness by adding more cos and sin waves with different speed and direction. Before: wavePos = floor(wavePos * 16.0) / 16.0; float wave = sin(wavePos.x * 1.5 + frameTimeCounter * 2.0) * 0.08 + cos(wavePos.z * 1.5 + frameTimeCounter * 1.8) * 0.08; After: float wave = 0.0; wave += sin(wavePos.x * 1.2 + frameTimeCounter * 1.6) * 0.07; wave += sin(wavePos.z * 1.4 + frameTimeCounter * 1.9) * 0.05; wave += sin((wavePos.x + wavePos.z) * 1.0 + frameTimeCounter * 1.1) * 0.04; wave += cos((wavePos.x - wavePos.z) * 1.1 + frameTimeCounter * 1.3) * 0.045; Then I went to the gbuffer_terrain.fsh and gbuffer_terrain.vsh. It is there fore the foundation for shadow mapping by calculating the shadow coordinates in the vertex shader and getting the shadow map. When i finnished that i went to the composite.fsh to actually getting the shadows to run. But first i began working on the overall lighting to make it feel much brighter and cooler. vec3 sunLight = vec3(1.0, 0.92, 0.78) * shadow * lm.y;vec3 skyAmbient = vec3(0.3, 0.42, 0.55) * lm.y;vec3 blocklight = vec3(1.0, 0.6, 0.3) * lm.x * lm.x;vec3 lighting = sunLight + skyAmbient + blocklight + 0.03; Now the shadows. The shadowSample() function takes the reconstructed player position and normal ( reconstructed player = 3d world position from a pixel, normal = where a surface is facing to) and transforms it into the shadow map. I also added 6 shadow samples around the pixel (geminis advice) to make the shadows softer instead of sharp (Though i might change that because as you will se in the picture the shadow is ugly… It might be because of that). float shadow = step(sp.z, texture2D(shadowtex0, sp.xy).r) * 0.4+ step(sp.z, texture2D(shadowtex0, sp.xy + vec2( r, r)).r) * 0.15+ step(sp.z, texture2D(shadowtex0, sp.xy + vec2(-r, r)).r) * 0.15+ step(sp.z, texture2D(shadowtex0, sp.xy + vec2( r, -r)).r) * 0.15+ step(sp.z, texture2D(shadowtex0, sp.xy + vec2(-r, -r)).r) * 0.15; The shadow itself is actiavated in main() with: float shadow = shadowSample(playerPos, normal); After all that though, the shadow didnt work and i was looking for it like 30 minutes and also troubleshootign with AI and after changeing the code like 10 times it also didnt work so I reverted the changes and noticed that: uniform float shadowDistance; is wrong because it of course needs a number :/ -> uniform float shadowDistance = 128.0;"}, {"post_id": 57547, "ts": "2026-08-29T18:39:44Z", "hours": 1.1972, "text": "Im making a shader for Minecraft and after upgrading the template from 1.21.5 to 26.2 I implemented waves to water.. It took long 😭 but it wasnt that difficult. I also added a pciture here. With mc_Entity i added blockID for specifically Water to the IDs 10034 and 10033. For the animation I used sine and cosine functions. After i styled the Water by blending its texture with a blue tint: vec3 waterColor = vec3(0.1, 0.4, 0.8); Though, because it was all the same color, you couldnt really see the waved that were further away than 3 blocks, so I implented a bit of shadow: shadow = texture(shadowtex0, shadowCoord.st).r;albedo.rgb *=mix(0.5, 1.0, shadow);"}]...
|
Title: Daydream Shader by @timon | Stardance
Devl Title: Daydream Shader by @timon | Stardance
Devlogs:
Im making a shader for Minecraft and after upgrading the template from 1.21.5 to 26.2 I implemented waves to water.. It took long 😭 but it wasnt that difficult. I also added a pciture here. With mc_Entity i added blockID for specifically Water to the IDs 10034 and 10033. For the animation I used sine and cosine functions. After i styled the Water by blending its texture with a blue tint: vec3 waterColor = vec3(0.1, 0.4, 0.8); Though, because it was all the same color, you couldnt really see the waved that were further away than 3 blocks, so I implented a bit of shadow: shadow = texture(shadowtex0, shadowCoord.st).r;albedo.rgb *=mix(0.5, 1.0, shadow);
I spent some time remaking the water. Before the Waves were pretty symmetrical. I added more randomness by adding more cos and sin waves with different speed and direction. Before: wavePos = floor(wavePos * 16.0) / 16.0; float wave = sin(wavePos.x * 1.5 + frameTimeCounter * 2.0) * 0.08 + cos(wavePos.z * 1.5 + frameTimeCounter * 1.8) * 0.08; After: float wave = 0.0; wave += sin(wavePos.x * 1.2 + frameTimeCounter * 1.6) * 0.07; wave += sin(wavePos.z * 1.4 + frameTimeCounter * 1.9) * 0.05; wave += sin((wavePos.x + wavePos.z) * 1.0 + frameTimeCounter * 1.1) * 0.04; wave += cos((wavePos.x - wavePos.z) * 1.1 + frameTimeCounter * 1.3) * 0.045; Then I went to the gbuffer_terrain.fsh and gbuffer_terrain.vsh. It is there fore the foundation for shadow mapping by calculating the shadow coordinates in the vertex shader and getting the shadow map. When i finnished that i went to the composite.fsh to actually getting the shadows to run. But first i began working on the overall lighting to make it feel much brighter and cooler. vec3 sunLight = vec3(1.0, 0.92, 0.78) * shadow * lm.y;vec3 skyAmbient = vec3(0.3, 0.42, 0.55) * lm.y;vec3 blocklight = vec3(1.0, 0.6, 0.3) * lm.x * lm.x;vec3 lighting = sunLight + skyAmbient + blocklight + 0.03; Now the shadows. The shadowSample() function takes the reconstructed player position and normal ( reconstructed player = 3d world position from a pixel, normal = where a surface is facing to) and transforms it into the shadow map. I also added 6 shadow samples around the pixel (geminis advice) to make the shadows softer instead of sharp (Though i might change that because as you will se in the picture the shadow is ugly… It might be because of that). float shadow = step(sp.z, texture2D(shadowtex0, sp.xy).r) * 0.4+ step(sp.z, texture2D(shadowtex0, sp.xy + vec2( r, r)).r) * 0.15+ step(sp.z, texture2D(shadowtex0, sp.xy + vec2(-r, r)).r) * 0.15+ step(sp.z, texture2D(shadowtex0, sp.xy + vec2( r, -r)).r) * 0.15+ step(sp.z, texture2D(shadowtex0, sp.xy + vec2(-r, -r)).r) * 0.15; The shadow itself is actiavated in main() with: float shadow = shadowSample(playerPos, normal); After all that though, the shadow didnt work and i was looking for it like 30 minutes and also troubleshootign with AI and after changeing the code like 10 times it also didnt work so I reverted the changes and noticed that: uniform float shadowDistance; is wrong because it of course needs a number :/ -> uniform float shadowDistance = 128.0;
This is a devlog with much time because first i forgot to devlog and second because i had one huge problem and i was working on it for like two and a half hour (also much with ai on that problem, ill admit that i was furious after 1,5 hours) So yeah. Whats new: Shadow Rewrite, Color Grading, Lighting, Wave update. Starting Small: I made Waves faster to make them more visible. Before: float wave = sin(p.x * 1.20 + frameTimeCounter * 2.50) * 0.01; Now: float wave = sin(p.x * 1.20 + frameTimeCounter * 2.50) * 0.05; Like seen in the last Devlogs, the shadow never really looked nice. Before i used like manual 5 samplig grid to soften the shadows which is okay for performance but it looks weird. In the new version i completely threw that out. Instead I decided to move over to PCF Percentage Closer FIltering (was claudes idea). It makes the shadow look soft and way smoother. vec3 pcf(vec4 clip) { ivec2 s = ivec2(texcoord * vec2(viewWidth, viewHeight)) % 64; float a = texelFetch(noisetex, s, 0).r * 6.2831853; mat2 r = mat2(cos(a), -sin(a), sin(a), cos(a)); vec3 sum = vec3(0.0); float n = 0.0; for (int x = -PCF_RANGE; x <= PCF_RANGE; x++) { for (int y = -PCF_RANGE; y <= PCF_RANGE; y++) { vec4 p = clip + vec4(r * (vec2(x, y) * (PCF_RADIUS / 8092.0)), -0.002, 0.0); p.xyz = warpShadowClipPos(p.xyz); p.xyz = p.xyz / p.w * 0.5 + 0.5; if (all(greaterThanEqual(p.xy, vec2(0.0))) && all(lessThanEqual(p.xy, vec2(1.0)))) { sum += sh(p.xyz); n += 1.0; } } } return n > 0.0 ? sum / n : vec3(1.0); } While rewriting the composite I had multiple transparent bugs (seen in the pictures below). Basically my palyer hand and mobs were see through. The mob bug was pretty easy fix. gbuffers_entities.vsh wasnt actually passing down normal vectors to the fragment shader. (This was also found by gemini not me) For the Hand fix, i ran into a problem becuase it was the fault of composite.fsh. I was doing some weird depth buffer checks that basically told the shader to ignore the hand and draw the world behind it. (And again this was found by gemini) In the composite shader, I had this depth check to filter out water and sky: if (d0 != d2) { color = albedo; return; } By using if (d0 == 1.0 || d0 < d1 || d0 != d2) the shader now correctly renders it. The Problem was becase how Miencraft renders the hand. The hand renders into depthtex2 but it usually doesnt render into depthtex0. Because the hand depth in d2 was different freom the sky block depthh in d0 it triggered and the composite shader skipped drawing the hand. ( I hope I understood it right). Then came the 2.5 hour problem 😩: Random blocky shadows appeated on water (seen in pictures). Because the problem didnt occured before and because I just reworked the composite i tried everything. I changed things back to old. asked AI nothing helped. In the end it was because gbuffers_water.vsh was calcuilating the shadow coordiantes without applying the shadow map distorion. It was trying to read warped shadow map using undistoreted coordinates. nce I added the #include “libs/distort.glsl” it worked… (again found by gemini, i troubleshooted ALOT with it). Lasty i addewd Color Grading tweaks in final.fsh. Just more vibrance and contras.
I made some small and easy updates. I tested alot and wrote alot and deleted most things. Gemin had the Fog Idea :) First Change: I changed the gbuffers_skybasic.fsh color grading for the sky. It makes the sky way more light blue isntead of the dark blue I had before (image included) baseSky.r *= 0.1; baseSky.g *= 0.65; baseSky.b *= 1.8; Second Change: I added Exposure to the final.fsh. One Problem was that it got so bright, that lighter texutres like sand looked basically white. So i went in the composite.fsh and multiplied the lighting by 0.85 so it will get darker and compensates the Exposure (image included before and after): final.fsh: float exposure = 1.3;color.rgb *= exposure; composite.fsh: vec3 finalColor = albedo.rgb * lighting * 0.85; Third Change: I added a fog near the render distance. It was Geminis Idea to add fog. It was only 2 lines to add: float fog = smoothstep(far * 0.7, far, length(viewPos.xyz));finalColor = mix(finalColor, fogColor, fog);
Last Devlog (as im finished) FINALLY 😁 Whats new: I tested alot with the vibrancy values and changed the sky color values to: baseSky.r *= 0.1;baseSky.g *= 0.45;baseSky.b *= 9.0; The 9.0 wont change anything at daytime, but makes the sky way more blue on night time. I used the same lighting setup for both day and night. Now I use seperate Light values making the night natively darker while keeping block lighting the same as before. float skyLight = day ? lm.y : lm.y * 0.45;vec3 lighting = skyLight * (vec3(0.5, 0.62, 0.75) + vec3(1.0, 0.92, 0.78) * sun * shadowCol)+ vec3(1.0, 0.6, 0.3) * lm.x * lm.x + 0.03; Also, before the entites were glowing very hard. This was because the lightmap was applied directly on the entities. I removed it: lmdata = vec4(lmcoord, 0.0, 1.0); (Picture of the glowing pig also here)
Ships:
I made a tuff minecraft shader. Daydream is a lightweight Minecraft shader focused on making the vanilla world feel more atmospgeric without completely changing the look. WHY LIGHTWEIGHT: First of all the changes: I improved the lighting, colors, shadows and fog. And for that I used many vibrancy increases and exposure increases that look really good and stunning but dont take much code (basically just 1 line) and dont require much performance. Im proud of trying and learning something new. It started all with a video on my YouTube fy page talking about how to start a shader and when i saw another shader project here on stardance by a beginner i started too. I like that it is lightweight because of those visual vibrancy and exposure increases....
|
1793346672.429923
|
1793433072.429923
|
|
60232
|
Notes App by @paula_g_jantunen | Stardance
|
paula_g_jantunen
|
1
|
3.77
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T20:49:35Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did I make? I built a full-stack Notes App using React, Express, and SQLite, a tiny but mighty trio. It lets you write notes, search notes, delete notes and store your questionable ideas in a database that never judges you. It’s simple, fast, and surprisingly cute for something powered by a database the size of a sandwich. What was challenging? Oh boy. Getting React and Express to talk to each other in Codespaces was like babysitting two kids who refuse to share toys. I spent a heroic amount of time staring at errors that turned out to be a missing semicolon, a typo, a port that wasn’t public and once… nothing. The app just felt dramatic. SQLite is tiny, powerful, and slightly clingy. If the database disappears, it just recreates itself. What am I proud of? The clean project structure (Marie Kondo would approve), the express API that works on the first try… sometimes, the react components that actually render what they’re supposed to and the fact that I didn’t rage-quit even once. And honestly? The app feels good. Like “I built this with my own hands” good. What should people know to test it? Umm I guess just read the README. Features to try: add a note, search a note, delete a note and add a note titled “IT WORKS!!!” (tradition).", "repo": "https://github.com/paulagjantunen-hue/Notes-App", "demo": "https://notes-app-2-k1i6.onrender.com/"}]...
|
[{"post_id": 75211, "ts": "202 [{"post_id": 75211, "ts": "2026-09-29T14:27:42Z", "hours": 0.325, "text": "Devlog #4 Time logged: 19 minutes Mission: Deploy the app Rality: Deploy the app, break the app, fix the app, question reality The Great Deployment Adventure Today I decided my Notes App deserved to leave the cozy safety of Codespaces and enter the real world. This was a mistake. At first, everything seemed fine: Backend deployed Frontend deployed Confidence deployed Then the app hit me with: “Could not connect to the notes server.” Wonderful. The Mystery of the Missing Notes The backend insisted it was alive. I visited: /api/notes And it proudly responded: [] Which is programmer for: “Yes, I’m working. No, I have no friends.” At least I knew the server wasn’t dead. The Deployment Detective Arc I spent the next few minutes playing detective. Questions included: Is the backend running? Is the frontend running? Is the API URL correct? Have I offended the internet somehow? After sufficient poking, prodding, and staring at logs, I discovered the issue wasn’t total disaster. For once. Render vs. SQLite Render and SQLite had a brief disagreement. Render: “Please start.” SQLite: “No.” Eventually they came to an understanding. Mostly. Final Thoughts In just 19 minutes: I deployed a backend I deployed a frontend I convinced a database to cooperate I learned that [] can be emotionally reassuring I received several error messages with amazing confidence"}, {"post_id": 74993, "ts": "2026-09-28T19:51:28Z", "hours": 0.4422, "text": "Devlog #3 Time logged: 26 minutes Main enemy: 404 Not Found The Great Demo Page Construction Today’s coding session wasn’t about React, Express, or SQLite. It was about something far more heroic: Making a demo page so my project stops returning a 404. I created a docs/ folder, dropped an index.html inside, and suddenly felt like a front-end engineer from 2012. Pure HTML. No frameworks. Just vibes. The “Why Does Ship Hate My Demo Link?” Arc The moment I realized Ship requires a public demo link , not a Codespaces URL that only works when I’m awake and the stars align, I knew what had to be done. So I built a whole mini-website: Title Description Features Screenshot placeholder Buttons Instructions The HTML Shenanigans I wrote CSS like a person who has seen too much: centered text rounded screenshots blue buttons margins that actually look normal It’s not fancy, but it works. And most importantly: It does not 404. Final Thoughts In just 26 minutes: I defeated the 404 monster I created a demo page that actually loads I made GitHub Pages happy And now Ship will (maybe?) accept my project Honestly? A surprisingly productive micro-session."}, {"post_id": 67669, "ts": "2026-09-13T20:37:20Z", "hours": 2.3067, "text": "Devlog #2 Time logged: 2h 16m Emotional damage: minimal Coffee consumed: classified Bugs defeated: several Bugs created: also several The Great Construction Phase I opened the project like a surgeon preparing for an operation. Except instead of scalpels, I had: React components Express routes And a database that behaves like a moody houseplant Folders appeared. Files multiplied. Imports broke. Imports were fixed. I felt powerful. The “Why Is This Not Working?” Arc At some point, I wrote code so elegant it should’ve been framed. Then I ran it. It immediately threw an error. Classic. I spent a solid 14 minutes staring at the screen like: “Explain yourself.” Eventually, I found the problems. Victory tasted sweet. The Backend Awakens Express booted up like a sleepy dragon. SQLite whispered: “I’m small… but I will store your deepest secrets.” Endpoints were created: GET /notes - for reading your questionable ideas POST /notes - for adding new questionable ideas DELETE /notes - for removing the really questionable ones Everything worked. Until it didn’t. Then it worked again. I don’t question it anymore. Frontend Chaos (React Edition) I built components like a lego master: NoteList - where your thoughts go to hang out NoteEditor - where new chaos is born SearchBar - because sometimes you forget what chaos you wrote React was cooperative today. Mostly. Except when it wasn’t. But we don’t talk about that. The Legendary “Why Won’t You Connect?” Saga Frontend and backend behaved like two siblings forced to share a room. Frontend: “I can’t find the server.” Backend: “I’m literally right here.” Me: “Both of you, stop.” Eventually, they made peace. The API worked. I celebrated by saving a note titled “IT WORKS!!!” Final Thoughts After 2 hours and 16 minutes: The app runs The notes save The database behaves The components render And I only threatened to delete the whole project twice Honestly? A successful dev session."}, {"post_id": 65101, "ts": "2026-09-10T00:16:30Z", "hours": 1.1233, "text": "Devlog Full-Stack Notes App (React + Express + SQLite) Project Structure Appears I created folders so organized they could win a beauty pageant. Backend, frontend, devcontainer - the holy trinity. If Marie Kondo saw this repo, she’d shed a single joyful tear. Devcontainer Magic I wrote a devcontainer that installs everything automatically. It’s basically a tiny robot that whispers: “Don’t worry, Paula… I got you.” Backend Time I built an Express API so simple it could run on a potato. SQLite joined the party because it requires zero setup and has strong “I’m small but mighty” energy. Endpoints: GET notes POST notes DELETE notes Basically: CRUD, but make it cute. Frontend Shenanigans React + Vite. Components everywhere. I made: NoteList (aka “the list of your questionable ideas”) NoteEditor (where chaos is born) SearchBar (for when you forget what chaos you wrote)"}]...
|
Title: Notes App by @paula_g_jantunen | Stardance
Title: Notes App by @paula_g_jantunen | Stardance
Devlogs:
Devlog Full-Stack Notes App (React + Express + SQLite) Project Structure Appears I created folders so organized they could win a beauty pageant. Backend, frontend, devcontainer - the holy trinity. If Marie Kondo saw this repo, she’d shed a single joyful tear. Devcontainer Magic I wrote a devcontainer that installs everything automatically. It’s basically a tiny robot that whispers: “Don’t worry, Paula… I got you.” Backend Time I built an Express API so simple it could run on a potato. SQLite joined the party because it requires zero setup and has strong “I’m small but mighty” energy. Endpoints: GET notes POST notes DELETE notes Basically: CRUD, but make it cute. Frontend Shenanigans React + Vite. Components everywhere. I made: NoteList (aka “the list of your questionable ideas”) NoteEditor (where chaos is born) SearchBar (for when you forget what chaos you wrote)
Devlog #2 Time logged: 2h 16m Emotional damage: minimal Coffee consumed: classified Bugs defeated: several Bugs created: also several The Great Construction Phase I opened the project like a surgeon preparing for an operation. Except instead of scalpels, I had: React components Express routes And a database that behaves like a moody houseplant Folders appeared. Files multiplied. Imports broke. Imports were fixed. I felt powerful. The “Why Is This Not Working?” Arc At some point, I wrote code so elegant it should’ve been framed. Then I ran it. It immediately threw an error. Classic. I spent a solid 14 minutes staring at the screen like: “Explain yourself.” Eventually, I found the problems. Victory tasted sweet. The Backend Awakens Express booted up like a sleepy dragon. SQLite whispered: “I’m small… but I will store your deepest secrets.” Endpoints were created: GET /notes - for reading your questionable ideas POST /notes - for adding new questionable ideas DELETE /notes - for removing the really questionable ones Everything worked. Until it didn’t. Then it worked again. I don’t question it anymore. Frontend Chaos (React Edition) I built components like a lego master: NoteList - where your thoughts go to hang out NoteEditor - where new chaos is born SearchBar - because sometimes you forget what chaos you wrote React was cooperative today. Mostly. Except when it wasn’t. But we don’t talk about that. The Legendary “Why Won’t You Connect?” Saga Frontend and backend behaved like two siblings forced to share a room. Frontend: “I can’t find the server.” Backend: “I’m literally right here.” Me: “Both of you, stop.” Eventually, they made peace. The API worked. I celebrated by saving a note titled “IT WORKS!!!” Final Thoughts After 2 hours and 16 minutes: The app runs The notes save The database behaves The components render And I only threatened to delete the whole project twice Honestly? A successful dev session.
Devlog #3 Time logged: 26 minutes Main enemy: 404 Not Found The Great Demo Page Construction Today’s coding session wasn’t about React, Express, or SQLite. It was about something far more heroic: Making a demo page so my project stops returning a 404. I created a docs/ folder, dropped an index.html inside, and suddenly felt like a front-end engineer from 2012. Pure HTML. No frameworks. Just vibes. The “Why Does Ship Hate My Demo Link?” Arc The moment I realized Ship requires a public demo link , not a Codespaces URL that only works when I’m awake and the stars align, I knew what had to be done. So I built a whole mini-website: Title Description Features Screenshot placeholder Buttons Instructions The HTML Shenanigans I wrote CSS like a person who has seen too much: centered text rounded screenshots blue buttons margins that actually look normal It’s not fancy, but it works. And most importantly: It does not 404. Final Thoughts In just 26 minutes: I defeated the 404 monster I created a demo page that actually loads I made GitHub Pages happy And now Ship will (maybe?) accept my project Honestly? A surprisingly productive micro-session.
Devlog #4 Time logged: 19 minutes Mission: Deploy the app Rality: Deploy the app, break the app, fix the app, question reality The Great Deployment Adventure Today I decided my Notes App deserved to leave the cozy safety of Codespaces and enter the real world. This was a mistake. At first, everything seemed fine: Backend deployed Frontend deployed Confidence deployed Then the app hit me with: “Could not connect to the notes server.” Wonderful. The Mystery of the Missing Notes The backend insisted it was alive. I visited: /api/notes And it proudly responded: [] Which is programmer for: “Yes, I’m working. No, I have no friends.” At least I knew the server wasn’t dead. The Deployment Detective Arc I spent the next few minutes playing detective. Questions included: Is the backend running? Is the frontend running? Is the API URL correct? Have I offended the internet somehow? After sufficient poking, prodding, and staring at logs, I discovered the issue wasn’t total disaster. For once. Render vs. SQLite Render and SQLite had a brief disagreement. Render: “Please start.” SQLite: “No.” Eventually they came to an understanding. Mostly. Final Thoughts In just 19 minutes: I deployed a backend I deployed a frontend I convinced a database to cooperate I learned that [] can be emotionally reassuring I received several error messages with amazing confidence
Ships:
What did I make? I built a full-stack Notes App using React, Express, and SQLite, a tiny but mighty trio. It lets you write notes, search notes, delete notes and store your questionable ideas in a database that never judges you. It’s simple, fast, and surprisingly cute for something powered by a database the size of a sandwich. What was challenging? Oh boy. Getting React and Express to talk to each other in Codespaces was like babysitting two kids who refuse to share toys. I spent a heroic amount of time staring at errors that turned out to be a missing semicolon, a typo, a port that wasn’t public and once… nothing. The app just felt dramatic. SQLite is tiny, powerful, and slightly clingy. If the database disappears, it just recreates itself. What am I proud of? The clean project structure (Marie Kondo would approve), the express API that works on the first try… sometimes, the react components that actually render what they’re supposed to and the fact that I didn’t rage-quit even once. And honestly? The app feels good. Like “I built this with my own hands” good. What should people know to test it? Umm I guess just read the README. Features to try: add a note, search a note, delete a note and add a note titled “IT WORKS!!!” (tradition)....
|
1793411507.0756392
|
1793497907.0756392
|
|
17273
|
Materialsimulation by @jannes_ruder | Stardance
|
jannes_ruder
|
0
|
0.35
|
0
|
[]
|
[{"post_id": 7521, "ts": "2026 [{"post_id": 7521, "ts": "2026-06-12T15:45:37Z", "hours": 0.3453, "text": "getting started"}]...
|
Title: Materialsimulation by @jannes_ruder | Stard Title: Materialsimulation by @jannes_ruder | Stardance
Devlogs:
getting started...
|
1793443922.5974247
|
1794048722.5974247
|
|
65679
|
3D Printer-based optical access tag cloning by @ra 3D Printer-based optical access tag cloning by @rares2 | Stardance...
|
rares2
|
1
|
3.0
|
16
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T15:40:12Z", "hours": 3.0, "multiplier": 6.27, "payout": 16, "blessing": "neutral", "text": "This is a tool made to generate optical cards for old Electra intercoms that are here in Romania, for easy cloning using a 3D printer. Using it, you can replace your old access cards that are worn out with new tough and eco-friendly (if printed with PLA) access cards.", "repo": "https://github.com/GigelHarbuz/electra-cloner", "demo": "https://gigelharbuz.github.io/electra-cloner/"}]...
|
[{"post_id": 75209, "ts": "202 [{"post_id": 75209, "ts": "2026-09-29T14:20:50Z", "hours": 0.5781, "text": "Final devlog!! Fixed bugs, tweaked the 3D print settings, and made the test print. It works!"}, {"post_id": 74872, "ts": "2026-09-28T14:13:06Z", "hours": 1.0514, "text": "The code for STL generation is finally finished!! Until next devlog, I will make the UI a little better and do a test print. Next devlog will be the last one before shipping."}, {"post_id": 74840, "ts": "2026-09-28T12:39:00Z", "hours": 0.6711, "text": "Added English/Romanian language switching and preview card in which you can see the bits. (STL generation is not yet complete)"}, {"post_id": 73556, "ts": "2026-09-25T12:03:41Z", "hours": 0.2617, "text": "Added the interface (with basic features before I start making them) and CSS."}]...
|
Title: 3D Printer-based optical access tag cloning Title: 3D Printer-based optical access tag cloning by @rares2 | Stardance
Devlogs:
Added the interface (with basic features before I start making them) and CSS.
Added English/Romanian language switching and preview card in which you can see the bits. (STL generation is not yet complete)
The code for STL generation is finally finished!! Until next devlog, I will make the UI a little better and do a test print. Next devlog will be the last one before shipping.
Final devlog!! Fixed bugs, tweaked the 3D print settings, and made the test print. It works!
Ships:
This is a tool made to generate optical cards for old Electra intercoms that are here in Romania, for easy cloning using a 3D printer. Using it, you can replace your old access cards that are worn out with new tough and eco-friendly (if printed with PLA) access cards....
|
1793422431.300321
|
1793508831.300321
|
|
59742
|
Custom Scientific Calculator by @Lawrence_Ian | St Custom Scientific Calculator by @Lawrence_Ian | Stardance...
|
Lawrence_Ian
|
0
|
3.52
|
0
|
[]
|
[{"post_id": 75204, "ts": "202 [{"post_id": 75204, "ts": "2026-09-29T14:06:42Z", "hours": 1.0836, "text": "Building a test simulation (unfinished)"}, {"post_id": 65788, "ts": "2026-09-11T05:07:39Z", "hours": 1.3503, "text": "Close to finishing the back enclosure"}, {"post_id": 64208, "ts": "2026-09-08T13:16:41Z", "hours": 0.65, "text": "Made a prototype custom 3d enclosure"}, {"post_id": 64180, "ts": "2026-09-08T12:19:41Z", "hours": 0.4333, "text": "A scientific calculator of my own"}]...
|
Title: Custom Scientific Calculator by @Lawrence_I Title: Custom Scientific Calculator by @Lawrence_Ian | Stardance
Devlogs:
A scientific calculator of my own
Made a prototype custom 3d enclosure
Close to finishing the back enclosure
Building a test simulation (unfinished)...
|
1793029862.4757092
|
1793634662.4757092
|
|
65660
|
My very own WebOS by @Voxel21 | Stardance
|
Voxel21
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T14:12:46Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built my first web-based OS, VoxelOS. It contains a desktop with 3 applications and multiple draggable windows. The apps are Notes, Browser, and Calculator. The browser searches by clicking the arrow button in the top-right corner.", "repo": "https://github.com/GamerDJ21/WebOS", "demo": "https://gamerdj21.github.io/WebOS/"}]...
|
[{"post_id": 75203, "ts": "202 [{"post_id": 75203, "ts": "2026-09-29T14:02:40Z", "hours": 0.8019, "text": "Added a browser app and a calculator app."}, {"post_id": 74809, "ts": "2026-09-28T10:13:26Z", "hours": 1.7578, "text": "Added a base ui and a notes app"}, {"post_id": 73546, "ts": "2026-09-25T11:14:06Z", "hours": 0.3072, "text": "a webOS"}]...
|
Title: My very own WebOS by @Voxel21 | Stardance
Title: My very own WebOS by @Voxel21 | Stardance
Devlogs:
a webOS
Added a base ui and a notes app
Added a browser app and a calculator app.
Ships:
I built my first web-based OS, VoxelOS. It contains a desktop with 3 applications and multiple draggable windows. The apps are Notes, Browser, and Calculator. The browser searches by clicking the arrow button in the top-right corner....
|
1793422426.5551412
|
1793508826.5551412
|
|
55516
|
rock paper scissors by @usmanbatman | Stardance
|
usmanbatman
|
1
|
3.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T14:19:55Z", "hours": 3.0, "multiplier": 1.51, "payout": 4, "blessing": "neutral", "text": "makeee a terminal based rock paper scissors game so when u came back from a break its a nice way to lock in again", "repo": "https://github.com/batman990-bit/ROCK-PAPER-SCISSORS", "demo": "https://github.com/batman990-bit/ROCK-PAPER-SCISSORS/releases/tag/v1.0.0"}]...
|
[{"post_id": 75198, "ts": "202 [{"post_id": 75198, "ts": "2026-09-29T13:46:01Z", "hours": 2.8411, "text": "yayyy"}]...
|
Title: rock paper scissors by @usmanbatman | Stard Title: rock paper scissors by @usmanbatman | Stardance
Devlogs:
yayyy
Ships:
makeee a terminal based rock paper scissors game so when u came back from a break its a nice way to lock in again...
|
1793336108.086918
|
1793422508.086918
|
|
1761
|
Kinetic AHRS by @someonelse | Stardance
|
someonelse
|
1
|
71.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T16:08:31Z", "hours": 71.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is an algorithm to get orientation (roll, pitch and yaw) from raw sensor data. The underlying math was pretty difficult but I’m proud that I got it at least mostly working. Since this is very low level and hardware heavy it was hard to make a demo website for it. But if you have a spare mpu6050 or something give it a try!", "repo": "https://github.com/someonelse20/kinetic", "demo": "https://kinetic.someonelse.net"}]...
|
[{"post_id": 75197, "ts": "202 [{"post_id": 75197, "ts": "2026-09-29T13:44:03Z", "hours": 2.9275, "text": "Finishing up project info To complete the project I started with filling out a readme. I then got my website up and running at kinetic.someonelse.net. I still plan to work on this after I submit it but for now I just want to submit my work."}, {"post_id": 74132, "ts": "2026-09-26T18:47:23Z", "hours": 1.8086, "text": "Added docs I looked into ways of adding documentation for this project and found that doxygen was exactly what I wanted. I went through the quick start and got it running a bit. Then I used my ai to write inline comments for all the functions. I went through all of them and fixed any errors that it made. Then when generating the config with doxygen I ran into the problem where it only made docs for structs and not for functions. After tweaking everything it now works. I changed so much I don’t really know what individual tweak actually fixed it."}, {"post_id": 73110, "ts": "2026-09-24T12:38:09Z", "hours": 8.0983, "text": "Started demo website Since the due date for stardance it coming up quick I shifted to finishing the project and making a demo website for Kinetic. I tried having my ai just try to do it all from scratch but it fell flat on its face. It made a website where the buttons didn’t work and after looking at the source code it merely tried to rewrite the EKF code rather that run the actual library. So I then went to create a python wrapper with pybind11 myself. After reading the docs and fixing countless compiler errors I got it to compile correctly. I then asked my ai to create it from the c++ python wrapper file which it also failed at. I took the bad code it wrote and modified it myself to use the actual python wrapper so it could have a pure python reference. It was finally able to successfully make a website from that. There was a few errors which I then fixed to create a working website. I haven’t started hosting it yet though."}, {"post_id": 68320, "ts": "2026-09-14T22:44:36Z", "hours": 4.2158, "text": "Wrote calibration suite I went to make a calibration python script. I tried using ai pretty heavily for this. At first I directed it to fill out stub files first to get structure and go step by step. Since I’m using dumb self-hosted models it got confused when I asked it to do all of it at once. I got it to write the helper scripts pretty well but it fell flat on its face with the main executable. I copied it over and rewrote pretty much everything except the parsing logic. Even then some of the flags are unused. After writing the core logic myself the script works with a static reference I recorded a bit back. To use it point it at a directory with recording files and it will calibrate as much as it can with the data it gets. I’m using jsonl for the recording format and a ai generated script that reads serial data or just a file and converts it over to the jsonl format. I noticed that comparing with old sensor recordings some of the raw sensor values have changed so I will go through getting all the calibration data next."}, {"post_id": 63579, "ts": "2026-09-07T14:30:04Z", "hours": 0.6919, "text": "Tested against actual implementation I tested the real data I recorded with an actual working implementation of an extended kalman filter , the one I’m roughly following as a guide for my own. I used ai a lot which worked pretty well, the code is very ugly but its just for testing so it doesn’t really matter. After my ai had got it working I went in and tuned the parameters for my dataset and it actually performed kinda worse than my own code! This really encouraged me because it means that my core code works and the errors are with the data processing. Next I think I’ll go through the gauntlet of calibrating my IMU which shouldn’t be too hard because I already did for a very similar project a while ago."}, {"post_id": 62391, "ts": "2026-09-05T18:43:14Z", "hours": 7.2383, "text": "Improved performance with real data Overall most of what I did here was bang my head against a wall trying to make it work. I made a lot of small changes but as you can see with the video still a lot to go. The biggest change I made was originally I used a NED or north east down corresponding to x y z and I switched over for ENU or east north up. I though originally I could just choose at a whim which one to use but different sensors use different reference frames and converting it over is more trouble than its worth. Now the output is a good bit better and I think I can improve it a lot by calibrating the sensor, currently the gyro outputs 3 deg/s when stationary. Next I will also be comparing against a much better kalman filter implementation in python to see how much of it is processing the raw data or the core algorithm."}, {"post_id": 53438, "ts": "2026-08-23T23:55:30Z", "hours": 2.4714, "text": "Finally fixed all memory leaks After running on the rp2040 again after I thought I fixed the memory leaks it still panicked with an out of memory error. So I went to take another look. The main problem is that all the basic matrix math functions allocated a new matrix for their returns. I had an idea of restructuring them to instead input another matrix to store the result and only return an error code. In practice this didn’t do much since I needed to allocate memory most of the time anyway. This did help a little bit but was probably more trouble than it was worth. Along the way of doing this I noticed a few more memory leaks and fixed them as I went. When I was done I got compile error after compile error but I eventually worked through all of them. But once the compiler errors went away it gave an output that was just slightly off. I narrowed it down to being in the math file and I sent my ai of to find the bug. After a long wait the error was simply that I forgot to uncomment some code when I was debugging the compiler errors. After poking around at a few more memory leaks it now gives the same output without losing any memory at all!"}, {"post_id": 51367, "ts": "2026-08-21T00:19:35Z", "hours": 1.3608, "text": "Tested with recorded data Since the hardware I setup spat out gibberish when I first tried running kinetic on it I thought to record the raw imu output and test that on my computer instead. To do this I modified my rp2040 script to print the data to a serial output with a 10ms delay. I then asked my ai to make a script to record the data and save it to a csv file which it was able to do pretty well. On the kinetic side I made a new file that opens a csv file and pipes the data into kinetic which a little more help from ai. I ran it and to my surprise it actually outputted what I would expect. The picture below is the kinetic output from when the imu was sitting on my desk. I did run it again with a few different datasets I recorded and for some reason the angle never went above 1 deg which is a little weird and still wrong but definitely not the erratic output I first saw."}, {"post_id": 49303, "ts": "2026-08-18T01:22:37Z", "hours": 2.9925, "text": "Fixed memory leaks (mostly) This is a bit of a tangent from running on my rp2040 but it’s important. When I did run it on my board it threw an out of memory panic so I began to look for ways to fix that. I found valgrind which is a tool to check for memory leaks in c/c++ programs which was exactly what I need. Running it revealed that my test suite alone ate up ~600 kilobytes of extra memory which is very not good. I began to go through all the errors valgrind gave me and finding ways to free memory. I created a few functions to help with this, mainly for the core functions such as add/sub_matrix and mul_matrix, that run the base function but then free the first argument to make the code a little cleaner. In the end I was able to solve all but two memory leaks in the kinetic code. One I think is a false positive where the error is when the kalman filter state is updated. There were a few more in the simulation code. I tried to fix some but gave up since it doesn’t really mater if that leaks memory."}, {"post_id": 48551, "ts": "2026-08-17T00:09:31Z", "hours": 2.0058, "text": "Got running on real hardware After getting the IMU up and running I went and grabbed an oled display I had kicking around and plugged the whole thing into a breadboard. There is example oled driver code in the pico sdk so I took that and modified it to work for this. I then copied in my kinetic project and had to mess around a lot with cmake to get it to import right. I ended up making a new cmake file to help with this. But when it actually started running the output was nowhere near to correct and had an out of memory panic. I’ll probably figure out how to run it though a linter or something next."}, {"post_id": 48497, "ts": "2026-08-16T21:21:48Z", "hours": 2.6944, "text": "Setting up to test on real hardware So far the project looks good in my simulations, but now I want to move on to testing in real applications on real hardware. To this I grabbed some parts I had laying around including a custom devboard I made for a previous hackclub project. I am using the LSM9DS1 because it has a gyroscope, accelerometer, and a magnetometer in one chip and I happen to have one. I created a new git repo called imu-prototype to store all the files in. In there I set up a raspberry pi pico project and coded a very simple driver for the IMU."}, {"post_id": 46624, "ts": "2026-08-14T00:30:19Z", "hours": 1.1403, "text": "Fixed Initial State Bug As soon as I plugged the kalman filter to the new sin wave tests I noticed that the output was way off. I put off fixing it until first fixing the error function first. To find the bug I first tried asking my ai and it halucinated something that had nothing to do with the problem. I started to look for the bug myself and noticed that for the initial state the y axis had the wrong sign. When it should have had about 57 degrees it had -57 ish. So I went to the code that calculates that and couldn’t find an obvious bug. Since I couldn’t fix the existing code I replaced it with a different method to do the same thing. The old code calculated a rotation matrix with the accelerometer and magnetometer and the new code calculates the euler angles. I’m hoping that because it starts with a static state I won’t run into gimble lock but that’s a future me problem."}, {"post_id": 46567, "ts": "2026-08-13T21:46:57Z", "hours": 1.4194, "text": "Improved error calculation I noticed the error calculation didn’t seem to behave as expected so I did a little research and found an equation to find the angle between two quaternions and I’m using that angle as an error. I had to write two new functions, one to get the conjugate of a quaternion which was pretty simple and one to get the inverse of a quaternion which wasn’t to hard either."}, {"post_id": 45446, "ts": "2026-08-11T22:05:12Z", "hours": 1.2792, "text": "Added new tests Previously I only had one test that linearly integrates between two orientations. Now there are two more, one that’s x axis is a sin wave, and another where all axes are sin waves with an offset."}, {"post_id": 44960, "ts": "2026-08-11T02:09:38Z", "hours": 4.8144, "text": "Put a lot of work into improving tests and simulations I probably put too much effort into the simulations and tests and should work more on the actual code but having good tests is pretty nice. I added some simple alternate orientation algorithms, one that simply inegrates the gyro measurement and another that it a complementary filter. I revamped the simulation code to work with any number of algorithms as long as they have the same format. I then spent a while making a nice error sort of tui that changes based on how many algorithms are being used."}, {"post_id": 44746, "ts": "2026-08-10T18:27:34Z", "hours": 1.3661, "text": "Found bug in simulation, now results are a lot better After a little debugging I noticed a bug in the function in the simulation that calculates the rate of change between orientations used to simulate gyro measurements. After fixing that the kalman filter works almost perfectly from the graph!"}, {"post_id": 44690, "ts": "2026-08-10T16:55:09Z", "hours": 4.4683, "text": "ITS ALMOST WORKING! So much better that before. After I wrote the code to abstract the kalman filter logic, there was still the rest of the algorithm to reimplement. I copied over what I could and for some of the functions I changed the way they worked. The guide I am following went through most of the calculations with the general matrix math and then at the end gave the full calculations to get the final matrix with single numbers. Following the spirit of my rewrite I decided to instead use the matrix math where I could. After this I hoked it up to my graphing program and it almost sorta kinda works! I have no idea what changed that makes it work but I’m not complaining."}, {"post_id": 43294, "ts": "2026-08-08T14:01:56Z", "hours": 3.2003, "text": "Abstracted Kalman filter logic I decided that since the code I already wrote wasn’t working, why not just try again? In all seriousness there was a few reasons for the rewrite, that other parts of the program might need their own kalman filter and it would be easier to understand and maintain but mostly I was sick of the code not working and not knowing why. So I found the basic equations for the extended kalman filter and went to implement that. At first I was using a struct of function pointers to get the input for the ekf (extended kalman filter) but was able to rewrite it to input static matrices instead which was way less clunky."}, {"post_id": 39655, "ts": "2026-08-02T19:38:25Z", "hours": 3.1517, "text": "Still debugging but at least there’s a pretty graph I hooked the kinetic output up to the graph program which only showed that the kinetic part doesn’t work."}, {"post_id": 36767, "ts": "2026-07-29T01:08:26Z", "hours": 2.3639, "text": "Ditched ai code and wrote a better plotting script and a few bug fixes After my ai couldn’t create the graph program I wanted and with calling python from c being so hard I went looking for alternatives. I found gnuplot which isn’t a c library but can be called fairly easily from c using pipes which I still don’t understand completely. I did find some code though that already works so I was able to modify it to what I wanted."}, {"post_id": 35408, "ts": "2026-07-26T19:49:48Z", "hours": 3.9044, "text": "Used Hermes agent to write gnuplot program which still doesn’t work. I’m going back an editing all my devlogs to more than just one line from this devlog to the one titled “Improved error calculation”. I wanted to create a way to visualize what was going on. I initially tried to go with using matplotlib and calling the python from c. I thought this was something my ai could handle. It couldn’t. I don’t think it could make anything that could even compile. To the ai’s credit I was running it myself on my computer so it’s a lot dumber than most but it turned out to be harder than I thought."}, {"post_id": 29227, "ts": "2026-07-16T00:25:01Z", "hours": 0.5828, "text": "Found out my inverse function works, the matrix I’m putting in is invalid"}, {"post_id": 27306, "ts": "2026-07-12T19:25:48Z", "hours": 7.2469, "text": "Getting Kalman Implementation Working Project Overview I’ve done a lot of work here on spare time and I got really behind on making journals so sorry for that. Since this is my first devlog I’ll start with an overview of this project. This is a sensor fusion algorithm (and a full flight controller if I have time) to obtain orientation, speed, direction, and position from raw sensor data. What I Worked On The bulk of the work here was getting the extended kalman filter for the imu working (which it still doesn’t) . I had a lot of trouble getting the initialization function working and after banging my head against a wall most of the problems were in the underlying matrix math functions and the weirdness of the matrix library I’m using. I also had a little side tangent of getting the initial orientation through an easier method but I eventually got it to work. To test all of this I wrote some code to generate fake gyrometer, accelerometer, and magnetometer data with some random rotations. Somewhere here I also decided to convert all doubles to floats and all size_t to uint_8 because this will be running on very minimal hardware. Once I got the init function working I then went on to the main loop function where I realized I did not know matrix math. A lot of my math functions were completely wrong or not the right ones. After fixing this I also did some restructuring to make the code flow better and I got the first half of the kalman filter mostly working. I then stumbled onto my atrocious matrix inversion function where I was just dividing all the elements under 1 which is definitely not how that works and after some research I added a few helper functions and that’s about the point I stopped, with the full inversion function still not working of course."}]...
|
Title: Kinetic AHRS by @someonelse | Stardance
De Title: Kinetic AHRS by @someonelse | Stardance
Devlogs:
Getting Kalman Implementation Working Project Overview I’ve done a lot of work here on spare time and I got really behind on making journals so sorry for that. Since this is my first devlog I’ll start with an overview of this project. This is a sensor fusion algorithm (and a full flight controller if I have time) to obtain orientation, speed, direction, and position from raw sensor data. What I Worked On The bulk of the work here was getting the extended kalman filter for the imu working (which it still doesn’t) . I had a lot of trouble getting the initialization function working and after banging my head against a wall most of the problems were in the underlying matrix math functions and the weirdness of the matrix library I’m using. I also had a little side tangent of getting the initial orientation through an easier method but I eventually got it to work. To test all of this I wrote some code to generate fake gyrometer, accelerometer, and magnetometer data with some random rotations. Somewhere here I also decided to convert all doubles to floats and all size_t to uint_8 because this will be running on very minimal hardware. Once I got the init function working I then went on to the main loop function where I realized I did not know matrix math. A lot of my math functions were completely wrong or not the right ones. After fixing this I also did some restructuring to make the code flow better and I got the first half of the kalman filter mostly working. I then stumbled onto my atrocious matrix inversion function where I was just dividing all the elements under 1 which is definitely not how that works and after some research I added a few helper functions and that’s about the point I stopped, with the full inversion function still not working of course.
Found out my inverse function works, the matrix I’m putting in is invalid
Used Hermes agent to write gnuplot program which still doesn’t work. I’m going back an editing all my devlogs to more than just one line from this devlog to the one titled “Improved error calculation”. I wanted to create a way to visualize what was going on. I initially tried to go with using matplotlib and calling the python from c. I thought this was something my ai could handle. It couldn’t. I don’t think it could make anything that could even compile. To the ai’s credit I was running it myself on my computer so it’s a lot dumber than most but it turned out to be harder than I thought.
Ditched ai code and wrote a better plotting script and a few bug fixes After my ai couldn’t create the graph program I wanted and with calling python from c being so hard I went looking for alternatives. I found gnuplot which isn’t a c library but can be called fairly easily from c using pipes which I still don’t understand completely. I did find some code though that already works so I was able to modify it to what I wanted.
Still debugging but at least there’s a pretty graph I hooked the kinetic output up to the graph program which only showed that the kinetic part doesn’t work.
Abstracted Kalman filter logic I decided that since the code I already wrote wasn’t working, why not just try again? In all seriousness there was a few reasons for the rewrite, that other parts of the program might need their own kalman filter and it would be easier to understand and maintain but mostly I was sick of the code not working and not knowing why. So I found the basic equations for the extended kalman filter and went to implement that. At first I was using a struct of function pointers to get the input for the ekf (extended kalman filter) but was able to rewrite it to input static matrices instead which was way less clunky.
ITS ALMOST WORKING! So much better that before. After I wrote the code to abstract the kalman filter logic, there was still the rest of the algorithm to reimplement. I copied over what I could and for some of the functions I changed the way they worked. The guide I am following went through most of the calculations with the general matrix math and then at the end gave the full calculations to get the final matrix with single numbers. Following the spirit of my rewrite I decided to instead use the matrix math where I could. After this I hoked it up to my graphing program and it almost sorta kinda works! I have no idea what changed that makes it work but I’m not complaining.
Found bug in simulation, now results are a lot better After a little debugging I noticed a bug in the function in the simulation that calculates the rate of change between orientations used to simulate gyro measurements. After fixing that the kalman filter works almost perfectly from the graph!
Put a lot of work into improving tests and simulations I probably put too much effort into the simulations and tests and should work more on the actual code but having good tests is pretty nice. I added some simple alternate orientation algorithms, one that simply inegrates the gyro measurement and another that it a complementary filter. I revamped the simulation code to work with any number of algorithms as long as they have the same format. I then spent a while making a nice error sort of tui that changes based on how many algorithms are being used.
Added new tests Previously I only had one test that linearly integrates between two orientations. Now there are two more, one that’s x axis is a sin wave, and another where all axes are sin waves with an offset.
Improved error calculation I noticed the error calculation didn’t seem to behave as expected so I did a little research and found an equation to find the angle between two quaternions and I’m using that angle as an error. I had to write two new functions, one to get the conjugate of a quaternion which was pretty simple and one to get the inverse of a quaternion which wasn’t to hard either.
Fixed Initial State Bug As soon as I plugged the kalman filter to the new sin wave tests I noticed that the output was way off. I put off fixing it until first fixing the error function first. To find the bug I first tried asking my ai and it halucinated something that had nothing to do with the problem. I started to look for the bug myself and noticed that for the initial state the y axis had the wrong sign. When it should have had about 57 degrees it had -57 ish. So I went to the code that calculates that and couldn’t find an obvious bug. Since I couldn’t fix the existing code I replaced it with a different method to do the same thing. The old code calculated a rotation matrix with the accelerometer and magnetometer and the new code calculates the euler angles. I’m hoping that because it starts with a static state I won’t run into gimble lock but that’s a future me problem.
Setting up to test on real hardware So far the project looks good in my simulations, but now I want to move on to testing in real applications on real hardware. To this I grabbed some parts I had laying around including a custom devboard I made for a previous hackclub project. I am using the LSM9DS1 because it has a gyroscope, accelerometer, and a magnetometer in one chip and I happen to have one. I created a new git repo called imu-prototype to store all the files in. In there I set up a raspberry pi pico project and coded a very simple driver for the IMU.
Got running on real hardware After getting the IMU up and running I went and grabbed an oled display I had kicking around and plugged the whole thing into a breadboard. There is example oled driver code in the pico sdk so I took that and modified it to work for this. I then copied in my kinetic project and had to mess around a lot with cmake to get it to import right. I ended up making a new cmake file to help with this. But when it actually started running the output was nowhere near to correct and had an out of memory panic. I’ll probably figure out how to run it though a linter or something next.
Fixed memory leaks (mostly) This is a bit of a tangent from running on my rp2040 but it’s important. When I did run it on my board it threw an out of memory panic so I began to look for ways to fix that. I found valgrind which is a tool to check for memory leaks in c/c++ programs which was exactly what I need. Running it revealed that my test suite alone ate up ~600 kilobytes of extra memory which is very not good. I began to go through all the errors valgrind gave me and finding ways to free memory. I created a few functions to help with this, mainly for the core functions such as add/sub_matrix and mul_matrix, that run the base function but then free the first argument to make the code a little cleaner. In the end I was able to solve all but two memory leaks in the kinetic code. One I think is a false positive where the error is when the kalman filter state is updated. There were a few more in the simulation code. I tried to fix some but gave up since it doesn’t really mater if that leaks memory.
Tested with recorded data Since the hardware I setup spat out gibberish when I first tried running kinetic on it I thought to record the raw imu output and test that on my computer instead. To do this I modified my rp2040 script to print the data to a serial output with a 10ms delay. I then asked my ai to make a script to record the data and save it to a csv file which it was able to do pretty well. On the kinetic side I made a new file that opens a csv file and pipes the data into kinetic which a little more help from ai. I ran it and to my surprise it actually outputted what I would expect. The picture below is the kinetic output from when the imu was sitting on my desk. I did run it again with a few different datasets I recorded and for some reason the angle never went above 1 deg which is a little weird and still wrong but definitely not the erratic output I first saw.
Finally fixed all memory leaks After running on the rp2040 again after I thought I fixed the memory leaks it still panicked with an out of memory error. So I went to take another look. The main problem is that all the basic matrix math functions allocated a new matrix for their returns. I had an idea of restructuring them to instead input another matrix to store the result and only return an error code. In practice this didn’t do much since I needed to allocate memory most of the time anyway. This did help a little bit but was probably more trouble than it was worth. Along the way of doing this I noticed a few more memory leaks and fixed them as I went. When I was done I got compile error after compile error but I eventually worked through all of them. But once the compiler errors went away it gave an output that was just slightly off. I narrowed it down to being in the math file and I sent my ai of to find the bug. After a long wait the error was simply that I forgot to uncomment some code when I was debugging the compiler errors. After poking around at a few more memory leaks it now gives the same output without losing any memory at all!
Improved performance with real data Overall most of what I did here was bang my head against a wall trying to make it work. I made a lot of small changes but as you can see with the video still a lot to go. The biggest change I made was originally I used a NED or north east down corresponding to x y z and I switched over for ENU or east north up. I though originally I could just choose at a whim which one to use but different sensors use different reference frames and converting it over is more trouble than its worth. Now the output is a good bit better and I think I can improve it a lot by calibrating the sensor, currently the gyro outputs 3 deg/s when stationary. Next I will also be comparing against a much better kalman filter implementation in python to see how much of it is processing the raw data or the core algorithm.
Tested against actual implementation I tested the real data I recorded with an actual working implementation of an extended kalman filter , the one I’m roughly following as a guide for my own. I used ai a lot which worked pretty well, the code is very ugly but its just for testing so it doesn’t really matter. After my ai had got it working I went in and tuned the parameters for my dataset and it actually performed kinda worse than my own code! This really encouraged me because it means that my core code works and the errors are with the data processing. Next I think I’ll go through the gauntlet of calibrating my IMU which shouldn’t be too hard because I already did for a very similar project a while ago.
Wrote calibration suite I went to make a calibration python script. I tried using ai pretty heavily for this. At first I directed it to fill out stub files first to get structure and go step by step. Since I’m using dumb self-hosted models it got confused when I asked it to do all of it at once. I got it to write the helper scripts pretty well but it fell flat on its face with the main executable. I copied it over and rewrote pretty much everything except the parsing logic. Even then some of the flags are unused. After writing the core logic myself the script works with a static reference I recorded a bit back. To use it point it at a directory with recording files and it will calibrate as much as it can with the data it gets. I’m using jsonl for the recording format and a ai generated script that reads serial data or just a file and converts it over to the jsonl format. I noticed that comparing with old sensor recordings some of the raw sensor values have changed so I will go through getting all the calibration data next.
Started demo website Since the due date for stardance it coming up quick I shifted to finishing the project and making a demo website for Kinetic. I tried having my ai just try to do it all from scratch but it fell flat on its face. It made a website where the buttons didn’t work and after looking at the source code it merely tried to rewrite the EKF code rather that run the actual library. So I then went to create a python wrapper with pybind11 myself. After reading the docs and fixing countless compiler errors I got it to compile correctly. I then asked my ai to create it from the c++ python wrapper file which it also failed at. I took the bad code it wrote and modified it myself to use the actual python wrapper so it could have a pure python reference. It was finally able to successfully make a website from that. There was a few errors which I then fixed to create a working website. I haven’t started hosting it yet though.
Added docs I looked into ways of adding documentation for this project and found that doxygen was exactly what I wanted. I went through the quick start and got it running a bit. Then I used my ai to write inline comments for all the functions. I went through all of them and fixed any errors that it made. Then when generating the config with doxygen I ran into the problem where it only made docs for structs and not for functions. After tweaking everything it now works. I changed so much I don’t really know what individual tweak actually fixed it.
Finishing up project info To complete the project I started with filling out a readme. I then got my website up and running at kinetic.someonelse.net. I still plan to work on this after I submit it but for now I just want to submit my work.
Ships:
This is an algorithm to get orientation (roll, pitch and yaw) from raw sensor data. The underlying math was pretty difficult but I’m proud that I got it at least mostly working. Since this is very low level and hardware heavy it was hard to make a demo website for it. But if you have a spare mpu6050 or something give it a try!...
|
1793335732.4456825
|
1793422132.4456825
|
|
66721
|
My own site! by @Icexfire | Stardance
|
Icexfire
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T14:02:02Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a web page, which i explained im learning web development again, i did some in the past but i forgot so i am doing it again, it has another section in which i will update (if i remember) of the next projects i will be doing, and lastly a button that sends you to github. I asked AI for help with the fonts and the “polaroid effect” on the cat image", "repo": "https://github.com/Icexfire098-cpu/Website", "demo": "https://icexfire098-cpu.github.io/Website/"}]...
|
[{"post_id": 75194, "ts": "202 [{"post_id": 75194, "ts": "2026-09-29T13:29:23Z", "hours": 0.4178, "text": "I implemented CSS to the html and later i will add more stuff, i used some ai to help me create the “polaroid effect” on the cat image and also used it for the font."}, {"post_id": 75143, "ts": "2026-09-29T09:03:57Z", "hours": 0.3267, "text": "Finished my first project,"}]...
|
Title: My own site! by @Icexfire | Stardance
Devl Title: My own site! by @Icexfire | Stardance
Devlogs:
Finished my first project,
I implemented CSS to the html and later i will add more stuff, i used some ai to help me create the “polaroid effect” on the cat image and also used it for the font.
Ships:
I made a web page, which i explained im learning web development again, i did some in the past but i forgot so i am doing it again, it has another section in which i will update (if i remember) of the next projects i will be doing, and lastly a button that sends you to github. I asked AI for help with the fonts and the “polaroid effect” on the cat image...
|
1793425762.2111077
|
1793512162.2111077
|
|
291
|
YouTweaks by @kanavv | Stardance
|
kanavv
|
2
|
36.0
|
646
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T15:48:19Z", "hours": 8.0, "multiplier": 14.56, "payout": 113, "blessing": "neutral", "text": "YouTweaks is a quality of life extension made to improve your experience on youtube. I decided to build this project because I was super frustrated with how youtube has become. With this extension I made the youtube experience less annoying and also added some features so you are more mindful while choosing what to watch. For this Ship I added the color themes feature fixed a LOT of bugs and I also created a custom playback speed feature which im super proud of and finally I incorporated feedback from the first ship (fixing the readme). This project has been super fun and this is going to be my last ship for stardance but I will probably keep working on this! Also im super happy my extension got approved to be on the firefox store so if you like it you can add it here: https://addons.mozilla.org/en-US/firefox/addon/youtweaks/", "repo": "https://github.com/KanAvR/YouTweaks", "demo": "https://github.com/KanAvR/YouTweaks/releases"}, {"ship_num": 2, "ts": "2026-09-19T14:15:30Z", "hours": 28.0, "multiplier": 18.99, "payout": 533, "blessing": "neutral", "text": "YouTweaks is a quality of life extension made to improve your experience on youtube. I decided to build this project because I was super frustrated with how youtube has become. With this extension I made the youtube experience less annoying and also added some features so you are more mindful while choosing what to watch. Overall this has been a really fun project to work on. I never thought I would have fun coding in javascript.", "repo": "https://github.com/KanAvR/YouTweaks", "demo": "https://github.com/KanAvR/YouTweaks/releases"}]...
|
[{"post_id": 75193, "ts": "202 [{"post_id": 75193, "ts": "2026-09-29T13:29:09Z", "hours": 1.3944, "text": "Bug Fixes I fixed another bug with the stop hover effects feature that used to show the effect if you hovered over the title of the video. Blur Slider I added a blur slider so people can adjust the amount of thumbnail blur. Feedback I incorporated the better readme feedback from the first ship where many people said I should explain why each feature is added. Sry for the camera photo I just reinstalled linux."}, {"post_id": 72184, "ts": "2026-09-22T12:40:55Z", "hours": 2.1672, "text": "Custom themes fixes I fixed some parts of the website that were not changing colors. I should have thought of this earlier but its going to be such a pain to keep the themes feature up to date with youtubes ui hence I am going to mark it as an experimental feature until I figure out how to change the themes in a better way. Playback speed controls without premium I am super happy with how this feature turned out it looks exactly like youtubes ui."}, {"post_id": 71663, "ts": "2026-09-21T08:21:31Z", "hours": 4.2158, "text": "Whole lotta bugs I thought I was done with everything but I found so many bugs. The shorts blocker was broken, the blocking youtube games dint work, and there was a bug where the video you were watching just stopped playing when you went into full screen. Shorts and game blocker So first the shorts bug would just delete the whole fyp if it found a short. This was was quite an easy fix since I just had to change what got deleted. Next the youtube games blocker was searching for text with “youtube games” which I changed to work the same way as the shorts blocker and then it started working properly. Full screen bug I fixed the full screen bug by only stopping the effects on objects we know are video tiles and nothing else. Themes Finally I also started working on a themes feature which looks so cool!! but its such a pain to work on. Theres so many tiny things I need to sit and edit so it looks right."}, {"post_id": 70604, "ts": "2026-09-19T13:15:26Z", "hours": 0.7297, "text": "Made the final commit before shipping Soo now the hide shorts feature works without bugs and I also finished adding the hide merch store feature. Now I just need to figure out how to publish my extension to the firefox and chrome store. Oh I also made a readme."}, {"post_id": 52261, "ts": "2026-08-22T11:20:45Z", "hours": 1.0539, "text": "View count and Publish date I moved the view count and publish dates to be next to the like button instead of the stupid tiny text it was before. To do this I made a new file called videometa.js it uses two functions one to extract the abbreviated views/ publish date and another one to extract the full views/ publish date which shows up when you hover over the information. Additionally I also fixed some Issues with the stop autoplay on hover and stop effects on hover functions, which I merged into one function earlier."}, {"post_id": 47509, "ts": "2026-08-15T13:57:57Z", "hours": 1.5306, "text": "Finished the time tracking feature!!! I haven’t gotten any time to update the project since my summer break ended. But I finally got some time to work on the project because of the time constraints I used AI to write code for this feature :( Im not proud of it but at least the feature works with no dumb bugs (for now at least) Daily limit So I added a daily limit and a bed time cut off so people dont waste the whole day on YouTube. I also added a snooze feature that appears when the YouTube limit has been reached since I often need YouTube for school work and it would become an issue if there was no way to bypass the limit. Time counter badge The concept time counter I made in a previous devlog works now and changes colors based on how much of the daily limit you have used. Stats And finally I also added a stats feature for fun since I love looking at my stats on leech block and wanted something similar for this project."}, {"post_id": 33955, "ts": "2026-07-24T09:42:36Z", "hours": 2.2917, "text": "Everything is such a mess right now I’m working on so many features at once its getting to much too handle. And I dint even make separate branches or make commits per feature so its getting so messy . I’m working on Refactoring all the code to change the deleting elements code to use css instead of JS so it has better performance hopefully . A time tracking feature. Moving the view count and date of upload up to the like button. This feature has had so many random unexpected issues its pmo. hiding the annoying red little bar below videos on the homescreen. some good progress: I merged the stopAutoPlayOnHover and stopHoverEffects into one function and I also fixed all the bugs with the function such as it not working on pages other then the homepage. Next time I should work on things in order AND AT LEAST MAKE BRANCHES ALSO MY COMMITS RN ARE HUGE I SHOULD MAKE THEM SMALLER; ONE FOR EACH FEATURE."}, {"post_id": 32345, "ts": "2026-07-21T13:35:52Z", "hours": 2.7347, "text": "Fixed Blur Again Instead of sitting and excluding things from the thumbnail blur I changed the code to only blur thumbnails. This is so stupid idk how I came up with that nonsense earlier. Stopped auto play when you hover over videos This feature works along with the other hover feature to make you a little more mindful while choosing a video to watch. Time tracking Im working on a whole new set of features to actually add something new for once since this project has just been removing stuff till now. The feature will track your time on youtube and allow you to set limits so you don’t waste your whole day on youtube. The feature will look something like the image. The current image is just a mock up ."}, {"post_id": 24678, "ts": "2026-07-08T12:58:53Z", "hours": 2.5467, "text": "Bugs The hide notification toggle worked visually but if you clicked in that spot the panel still opened so for now I came up with a temporary fix of using a new function to stop the button form working. Also the thumbnail blur still has issues 😭 . For some reason it blurs emojis now. I will fix that later. New Feature I added a feature so when you hover on video you don’t get that distracting ambient color around the thumbnail. This helps because the glow acts like a tiny visual reward before you’ve actually decided anything; it makes a thumbnail feel “chosen” the moment you hover over it. Without that glow, your judgement has to do the work the color was doing for them; so you can be a little more mindful about what you click on. Popup ui Added a background, added the logo, aligned all the elements, and tested out a few fonts before finally choosing Geist . I used this Article to understand css."}, {"post_id": 24303, "ts": "2026-07-07T19:46:42Z", "hours": 2.9003, "text": "First time features actually work as intended!! The blur had a lot of bugs as mentioned in the first devlog I slowly managed to fix all of them in different ways and now its complete. The hardest issue was if you scrolled too fast then you would still get a glimpse of the thumbnail. I fixed this by creating a <style> element which applies the blur before the thumbnails load. So now there’s no need of a mutation or scroll observer either. Logo I created the logo for this project using free form on my ipad then I used claude to make different versions of it for all the resolutions (16,32,48,128) and for the project banner. New Features I added two new features to hide the create button and the notifications button because who ever clicks those. At first I made to separate functions for this but that was really stupid so then I made a generic function that just removes any element. Also I used el.style.display = hidden instead of el.remove since the element can instantly be unhidden if the user wants without needing a refresh."}, {"post_id": 22143, "ts": "2026-07-04T13:28:00Z", "hours": 4.3089, "text": "Major Progress Okay so a lot happened since the last devlog. I paused my progress on the auto play feature and instead moved on to some small changes. I also made a lot of random commits for testing small things which was kinda tedious to revert later (Image shows the graph after all the random stuff was removed). Hide Shorts This feature was pretty simple to implement as I just used querySelectorAll to select the elements with the youtube shorts buttons then I just checked for the text “shorts” so the function doesn’t accidentally delete something else. Finally I used element.remove() to delete the buttons. Also added a mutation observer so the button stays deleted. Hiding unnecessary buttons I basically just did the same thing as above to hide other buttons that clutter up the screen like the create button and the voice search button. Branches This is the first time I learnt how to properly use branches in git. I made two separate branches for the two features I worked on so the variable names are not an issue for now."}, {"post_id": 16405, "ts": "2026-06-26T18:04:27Z", "hours": 2.8767, "text": "Improving file structure First off I fixed the mess of files that were just dropped into the project folder; this would become an issue in the future as I kept on creating new files. Creating the popup I stared off by creating popup.html popup.css and popup.js files after which I went back to the manifest.json to link the popup files but here I realized that the whole JSON file was broken because all the items were inside \"action\" this had not caused any issues so far but it could have led to many problems in the future. After fixing the JSON file I linked the popup files and added storage and scripting permissions to the extension which will be needed later. Next I read a blog post of how to write HTML. Then I created a toggle switch for which I borrowed copied the css from w3schools . Now for the toggle switch to work I had to make a few changes to youtweaks.js . Now it checks the browser storage to see if thumbnail blur is toggled on/off and also continuous checks to see if the toggle switch has been changed which accordingly turns on/off the blur. Other changes I started working on the next feature to stop the auto play of videos when you hover over them as the only purpose of this is to get you hooked onto a video before you even click on it. Which often results in wasted time. While working on that feature I also managed to fix the blur so now it works everywhere on youtube but as a side effect it also blurs youtubers profile pictures which ill fix later."}, {"post_id": 12135, "ts": "2026-06-19T20:37:08Z", "hours": 3.2972, "text": "Fixing the three issues: I first implemented a mutation observer which reapplies the blur every time something on the page changes, this solved issues 1 and 3 but did so in a very sloppy way as a “mutation” was only detected when you hover the mouse on a thumbnail. To fix the problems in a more optimal way I tried a lot of things: I started learning about intersection observers, scroll observers, and started a 3 hour crash course on js to understand what in the world I was doing. I spent a lot of time tinkering and then my problem was solved with a simple search on Mozilla’s developer docs . I used a scroll event listener which fixed the scrolling issue but the other issues still remain. At this point I was so tired I started setting up the gui for the extension which involved making some changes to the manifest.json file."}, {"post_id": 3002, "ts": "2026-06-05T22:40:05Z", "hours": 3.8056, "text": "So the aim of this project is to improve youtube’s usage experience through small tweaks. This is my first time doing anything related to websites I know nothing 😭 So I started off the project by creating a manifest.json file which contains all the data required to run the extension. For this the Mozilla docs were a huge help. Next, I started by creating the first feature of blurring thumbnails. I somehow managed to inspect element the youtube website and select the correct element id to select the thumbnails ig. But this came with three issues: The blur stops working after a refresh The blur only works on the home page The blur stops working after scrolling a lot To fix these Issues I first searched for the issue on w3schools but I dint understand anything I found; so after a bit more digging I came across someone facing a similar issue on stack overflow and after a very long while of trying to understand his code I managed to modify it to work for my extension. This fixed the third issue but not the other 2."}]...
|
Title: YouTweaks by @kanavv | Stardance
Devlogs:
Title: YouTweaks by @kanavv | Stardance
Devlogs:
So the aim of this project is to improve youtube’s usage experience through small tweaks. This is my first time doing anything related to websites I know nothing 😭 So I started off the project by creating a manifest.json file which contains all the data required to run the extension. For this the Mozilla docs were a huge help. Next, I started by creating the first feature of blurring thumbnails. I somehow managed to inspect element the youtube website and select the correct element id to select the thumbnails ig. But this came with three issues: The blur stops working after a refresh The blur only works on the home page The blur stops working after scrolling a lot To fix these Issues I first searched for the issue on w3schools but I dint understand anything I found; so after a bit more digging I came across someone facing a similar issue on stack overflow and after a very long while of trying to understand his code I managed to modify it to work for my extension. This fixed the third issue but not the other 2.
Fixing the three issues: I first implemented a mutation observer which reapplies the blur every time something on the page changes, this solved issues 1 and 3 but did so in a very sloppy way as a “mutation” was only detected when you hover the mouse on a thumbnail. To fix the problems in a more optimal way I tried a lot of things: I started learning about intersection observers, scroll observers, and started a 3 hour crash course on js to understand what in the world I was doing. I spent a lot of time tinkering and then my problem was solved with a simple search on Mozilla’s developer docs . I used a scroll event listener which fixed the scrolling issue but the other issues still remain. At this point I was so tired I started setting up the gui for the extension which involved making some changes to the manifest.json file.
Improving file structure First off I fixed the mess of files that were just dropped into the project folder; this would become an issue in the future as I kept on creating new files. Creating the popup I stared off by creating popup.html popup.css and popup.js files after which I went back to the manifest.json to link the popup files but here I realized that the whole JSON file was broken because all the items were inside "action" this had not caused any issues so far but it could have led to many problems in the future. After fixing the JSON file I linked the popup files and added storage and scripting permissions to the extension which will be needed later. Next I read a blog post of how to write HTML. Then I created a toggle switch for which I borrowed copied the css from w3schools . Now for the toggle switch to work I had to make a few changes to youtweaks.js . Now it checks the browser storage to see if thumbnail blur is toggled on/off and also continuous checks to see if the toggle switch has been changed which accordingly turns on/off the blur. Other changes I started working on the next feature to stop the auto play of videos when you hover over them as the only purpose of this is to get you hooked onto a video before you even click on it. Which often results in wasted time. While working on that feature I also managed to fix the blur so now it works everywhere on youtube but as a side effect it also blurs youtubers profile pictures which ill fix later.
Major Progress Okay so a lot happened since the last devlog. I paused my progress on the auto play feature and instead moved on to some small changes. I also made a lot of random commits for testing small things which was kinda tedious to revert later (Image shows the graph after all the random stuff was removed). Hide Shorts This feature was pretty simple to implement as I just used querySelectorAll to select the elements with the youtube shorts buttons then I just checked for the text “shorts” so the function doesn’t accidentally delete something else. Finally I used element.remove() to delete the buttons. Also added a mutation observer so the button stays deleted. Hiding unnecessary buttons I basically just did the same thing as above to hide other buttons that clutter up the screen like the create button and the voice search button. Branches This is the first time I learnt how to properly use branches in git. I made two separate branches for the two features I worked on so the variable names are not an issue for now.
First time features actually work as intended!! The blur had a lot of bugs as mentioned in the first devlog I slowly managed to fix all of them in different ways and now its complete. The hardest issue was if you scrolled too fast then you would still get a glimpse of the thumbnail. I fixed this by creating a <style> element which applies the blur before the thumbnails load. So now there’s no need of a mutation or scroll observer either. Logo I created the logo for this project using free form on my ipad then I used claude to make different versions of it for all the resolutions (16,32,48,128) and for the project banner. New Features I added two new features to hide the create button and the notifications button because who ever clicks those. At first I made to separate functions for this but that was really stupid so then I made a generic function that just removes any element. Also I used el.style.display = hidden instead of el.remove since the element can instantly be unhidden if the user wants without needing a refresh.
Bugs The hide notification toggle worked visually but if you clicked in that spot the panel still opened so for now I came up with a temporary fix of using a new function to stop the button form working. Also the thumbnail blur still has issues 😭 . For some reason it blurs emojis now. I will fix that later. New Feature I added a feature so when you hover on video you don’t get that distracting ambient color around the thumbnail. This helps because the glow acts like a tiny visual reward before you’ve actually decided anything; it makes a thumbnail feel “chosen” the moment you hover over it. Without that glow, your judgement has to do the work the color was doing for them; so you can be a little more mindful about what you click on. Popup ui Added a background, added the logo, aligned all the elements, and tested out a few fonts before finally choosing Geist . I used this Article to understand css.
Fixed Blur Again Instead of sitting and excluding things from the thumbnail blur I changed the code to only blur thumbnails. This is so stupid idk how I came up with that nonsense earlier. Stopped auto play when you hover over videos This feature works along with the other hover feature to make you a little more mindful while choosing a video to watch. Time tracking Im working on a whole new set of features to actually add something new for once since this project has just been removing stuff till now. The feature will track your time on youtube and allow you to set limits so you don’t waste your whole day on youtube. The feature will look something like the image. The current image is just a mock up .
Everything is such a mess right now I’m working on so many features at once its getting to much too handle. And I dint even make separate branches or make commits per feature so its getting so messy . I’m working on Refactoring all the code to change the deleting elements code to use css instead of JS so it has better performance hopefully . A time tracking feature. Moving the view count and date of upload up to the like button. This feature has had so many random unexpected issues its pmo. hiding the annoying red little bar below videos on the homescreen. some good progress: I merged the stopAutoPlayOnHover and stopHoverEffects into one function and I also fixed all the bugs with the function such as it not working on pages other then the homepage. Next time I should work on things in order AND AT LEAST MAKE BRANCHES ALSO MY COMMITS RN ARE HUGE I SHOULD MAKE THEM SMALLER; ONE FOR EACH FEATURE.
Finished the time tracking feature!!! I haven’t gotten any time to update the project since my summer break ended. But I finally got some time to work on the project because of the time constraints I used AI to write code for this feature :( Im not proud of it but at least the feature works with no dumb bugs (for now at least) Daily limit So I added a daily limit and a bed time cut off so people dont waste the whole day on YouTube. I also added a snooze feature that appears when the YouTube limit has been reached since I often need YouTube for school work and it would become an issue if there was no way to bypass the limit. Time counter badge The concept time counter I made in a previous devlog works now and changes colors based on how much of the daily limit you have used. Stats And finally I also added a stats feature for fun since I love looking at my stats on leech block and wanted something similar for this project.
View count and Publish date I moved the view count and publish dates to be next to the like button instead of the stupid tiny text it was before. To do this I made a new file called videometa.js it uses two functions one to extract the abbreviated views/ publish date and another one to extract the full views/ publish date which shows up when you hover over the information. Additionally I also fixed some Issues with the stop autoplay on hover and stop effects on hover functions, which I merged into one function earlier.
Made the final commit before shipping Soo now the hide shorts feature works without bugs and I also finished adding the hide merch store feature. Now I just need to figure out how to publish my extension to the firefox and chrome store. Oh I also made a readme.
Whole lotta bugs I thought I was done with everything but I found so many bugs. The shorts blocker was broken, the blocking youtube games dint work, and there was a bug where the video you were watching just stopped playing when you went into full screen. Shorts and game blocker So first the shorts bug would just delete the whole fyp if it found a short. This was was quite an easy fix since I just had to change what got deleted. Next the youtube games blocker was searching for text with “youtube games” which I changed to work the same way as the shorts blocker and then it started working properly. Full screen bug I fixed the full screen bug by only stopping the effects on objects we know are video tiles and nothing else. Themes Finally I also started working on a themes feature which looks so cool!! but its such a pain to work on. Theres so many tiny things I need to sit and edit so it looks right.
Custom themes fixes I fixed some parts of the website that were not changing colors. I should have thought of this earlier but its going to be such a pain to keep the themes feature up to date with youtubes ui hence I am going to mark it as an experimental feature until I figure out how to change the themes in a better way. Playback speed controls without premium I am super happy with how this feature turned out it looks exactly like youtubes ui.
Bug Fixes I fixed another bug with the stop hover effects feature that used to show the effect if you hovered over the title of the video. Blur Slider I added a blur slider so people can adjust the amount of thumbnail blur. Feedback I incorporated the better readme feedback from the first ship where many people said I should explain why each feature is added. Sry for the camera photo I just reinstalled linux.
Ships:
YouTweaks is a quality of life extension made to improve your experience on youtube. I decided to build this project because I was super frustrated with how youtube has become. With this extension I made the youtube experience less annoying and also added some features so you are more mindful while choosing what to watch. Overall this has been a really fun project to work on. I never thought I would have fun coding in javascript.
YouTweaks is a quality of life extension made to improve your experience on youtube. I decided to build this project because I was super frustrated with how youtube has become. With this extension I made the youtube experience less annoying and also added some features so you are more mindful while choosing what to watch. For this Ship I added the color themes feature fixed a LOT of bugs and I also created a custom playback speed feature which im super proud of and finally I incorporated feedback from the first ship (fixing the readme). This project has been super fun and this is going to be my last ship for stardance but I will probably keep working on this! Also im super happy my extension got approved to be on the firefox store so if you like it you can add it here: https://addons.mozilla.org/en-US/firefox/addon/youtweaks/...
|
1793339353.4013863
|
1793425753.4013863
|
|
52231
|
aero OS by @kulraj | Stardance
|
kulraj
|
0
|
11.14
|
0
|
[]
|
[{"post_id": 75191, "ts": "202 [{"post_id": 75191, "ts": "2026-09-29T13:26:57Z", "hours": 0.3311, "text": "I MADE THE NOTES APP though it lacks functioning but it types too tired to code today cause im exhausted"}, {"post_id": 74857, "ts": "2026-09-28T13:37:46Z", "hours": 3.2531, "text": "i made a taskbar with a few apps and also made the dialog buttons work and also fixed transitions"}, {"post_id": 54625, "ts": "2026-08-25T17:27:07Z", "hours": 1.5614, "text": "ok so: i added custom cursor for various things i really enhanced the visuals of the dialog box of startup. i made the window draggable around so can see the transparency. I uploaded the revised version on my site which is: https://aero-os-sage.vercel.app/ so you can test this for yourself…"}, {"post_id": 53933, "ts": "2026-08-24T17:10:57Z", "hours": 5.9939, "text": "yayy so i got this really cool startup screen which im planning to put audio effects on. i also made this dialog box appear on starting the os and it isnt full functional cause i still have a lot to do. this is gonna take a long time cause i prefer quality over quantity."}]...
|
Title: aero OS by @kulraj | Stardance
Devlogs:
ya Title: aero OS by @kulraj | Stardance
Devlogs:
yayy so i got this really cool startup screen which im planning to put audio effects on. i also made this dialog box appear on starting the os and it isnt full functional cause i still have a lot to do. this is gonna take a long time cause i prefer quality over quantity.
ok so: i added custom cursor for various things i really enhanced the visuals of the dialog box of startup. i made the window draggable around so can see the transparency. I uploaded the revised version on my site which is: https://aero-os-sage.vercel.app/ so you can test this for yourself…
i made a taskbar with a few apps and also made the dialog buttons work and also fixed transitions
I MADE THE NOTES APP though it lacks functioning but it types too tired to code today cause im exhausted...
|
1793432957.704948
|
1794037757.704948
|
|
66763
|
Gargi (Generally A Really Good Interface) by @Tech Gargi (Generally A Really Good Interface) by @Techiral | Stardance...
|
Techiral
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T13:30:44Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made this with a basic problem in my mind, “Each AI terminal agent is built for developers, not teenagers”. The teenagers need something fun, personal, so I built this terminal agent. And, second motivation is to get credits in Stardance to earn & claim some hardware.", "repo": "https://github.com/lakshyabuilds/gargi", "demo": "https://github.com/lakshyabuilds/gargi/releases/tag/v1.2.0"}]...
|
[{"post_id": 75188, "ts": "202 [{"post_id": 75188, "ts": "2026-09-29T13:05:27Z", "hours": 7.6611, "text": "Hello Everyone! I have built this cute Waifu terminal AI with similar acronym to JARVIS. This isn’t any web app, it’s a TERMINAL app, so install exe, run it, test it, and enjoy it. I have added several features like voice changes, mood changes, conversation maintaining, etc. My MOTIVATION for building this- Getting more credits on Hackclub to get hardware for myself. So, support this one. Thanks All."}]...
|
Title: Gargi (Generally A Really Good Interface) b Title: Gargi (Generally A Really Good Interface) by @Techiral | Stardance
Devlogs:
Hello Everyone! I have built this cute Waifu terminal AI with similar acronym to JARVIS. This isn’t any web app, it’s a TERMINAL app, so install exe, run it, test it, and enjoy it. I have added several features like voice changes, mood changes, conversation maintaining, etc. My MOTIVATION for building this- Getting more credits on Hackclub to get hardware for myself. So, support this one. Thanks All.
Ships:
I made this with a basic problem in my mind, “Each AI terminal agent is built for developers, not teenagers”. The teenagers need something fun, personal, so I built this terminal agent. And, second motivation is to get credits in Stardance to earn & claim some hardware....
|
1793425772.1267884
|
1793512172.1267884
|
|
66758
|
Janus by @surfygalaxy | Stardance
|
surfygalaxy
|
0
|
3.54
|
0
|
[]
|
[{"post_id": 75183, "ts": "202 [{"post_id": 75183, "ts": "2026-09-29T12:30:27Z", "hours": 3.5394, "text": "Forgor stardance wants these but hey it seems to be working properly (In other news logging works too)"}]...
|
Title: Janus by @surfygalaxy | Stardance
Devlogs: Title: Janus by @surfygalaxy | Stardance
Devlogs:
Forgor stardance wants these but hey it seems to be working properly (In other news logging works too)...
|
1793101950.1394498
|
1793706750.1394498
|
|
64002
|
KeySlash by @Ridith | Stardance
|
Ridith
|
0
|
10.12
|
0
|
[]
|
[{"post_id": 75182, "ts": "202 [{"post_id": 75182, "ts": "2026-09-29T12:29:41Z", "hours": 1.9008, "text": "Hiya, WHOO!! we finished all the things organization, pcb and 3D case. Hopefully the next devlog will be the hardware stage. Thank you, keep deving!!"}, {"post_id": 74908, "ts": "2026-09-28T16:03:35Z", "hours": 1.3336, "text": "YO!! The entire thing is 99% done ive worked hard today to finish. YEAH THE CHANGE IS MASSIVE FROM THE LAST PIC"}, {"post_id": 74838, "ts": "2026-09-28T12:34:41Z", "hours": 1.4669, "text": "I finished my first sessioin of finishing the KeySlash case. I am trying to get the first design proper so that I can worry about colors later."}, {"post_id": 74521, "ts": "2026-09-27T15:36:43Z", "hours": 2.8842, "text": "DEVLOG 2: Hiya. today I realized that the kit that comes with KeySlash isn’t just meant for basics. Hence, I completely redid the PCB to match the requirements, and tomorrow I will finish the 3D case and hopefully submit again!!!"}, {"post_id": 71163, "ts": "2026-09-20T11:46:15Z", "hours": 2.5336, "text": "I have completely finished the Design phase of KeySlash. PCB, CASE, and Firmware has been completed in a span of 3.2"}]...
|
Title: KeySlash by @Ridith | Stardance
Devlogs:
I Title: KeySlash by @Ridith | Stardance
Devlogs:
I have completely finished the Design phase of KeySlash. PCB, CASE, and Firmware has been completed in a span of 3.2
DEVLOG 2: Hiya. today I realized that the kit that comes with KeySlash isn’t just meant for basics. Hence, I completely redid the PCB to match the requirements, and tomorrow I will finish the 3D case and hopefully submit again!!!
I finished my first sessioin of finishing the KeySlash case. I am trying to get the first design proper so that I can worry about colors later.
YO!! The entire thing is 99% done ive worked hard today to finish. YEAH THE CHANGE IS MASSIVE FROM THE LAST PIC
Hiya, WHOO!! we finished all the things organization, pcb and 3D case. Hopefully the next devlog will be the hardware stage. Thank you, keep deving!!...
|
1793058477.0923889
|
1793663277.0923889
|
|
62694
|
Casimir Effect by @kian_george | Stardance
|
kian_george
|
0
|
1.75
|
0
|
[]
|
[{"post_id": 75179, "ts": "202 [{"post_id": 75179, "ts": "2026-09-29T12:23:06Z", "hours": 1.7494, "text": "Worked on the animation and learned a lot from Gemini (I asked gemini to make its own animation and then compared it to mine to see how i could make improvments) also made the animation longer (its for a youtube video)"}]...
|
Title: Casimir Effect by @kian_george | Stardance
Title: Casimir Effect by @kian_george | Stardance
Devlogs:
Worked on the animation and learned a lot from Gemini (I asked gemini to make its own animation and then compared it to mine to see how i could make improvments) also made the animation longer (its for a youtube video)...
|
1793047732.4968812
|
1793652532.4968812
|