|
66196
|
Hack Club Marina Chapter by @cognitayohan | Starda Hack Club Marina Chapter by @cognitayohan | Stardance...
|
cognitayohan
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-03T03:32:23Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is Hack Club Marina Chapter’s official website! This website is a full-stack webapp created through the VITE framework within React.js. It utilizes typescript and some index.html/CSS formatting. It took a few large commits to build the website. The website is fully deployed at https://marinahackclub.com . I decided to use some mix of Hack Club’s CSS styling while incorporating some of my own “Marina” touch to it. The website includes a dashboard for main users to keep track of costs for the club.", "repo": "https://github.com/robot3-track/marina-hackclub-chapter", "demo": "https://marinahackclub.com"}]...
|
[{"post_id": 76298, "ts": "202 [{"post_id": 76298, "ts": "2026-10-03T03:27:47Z", "hours": 1.9578, "text": "Hack Club Marina Chapter Website CSS Update I updated the UX of the site to make it easier to work with- I also made some manual edits to the CSS as well as some of the font configurations. The site is now ready for shipping! Also got a .com domain for it… yay"}, {"post_id": 74667, "ts": "2026-09-27T22:32:37Z", "hours": 0.5964, "text": "Hack Club Marina Chapter Website Update Today I updated the website for the club by changing some of the UI styling to be more adherent to hackclub.com/brand . I also spaced out the website with color coding for easier viewing of the application."}, {"post_id": 74322, "ts": "2026-09-27T05:28:26Z", "hours": 0.8972, "text": "The beginning of something new… Coding brought to Marina HS!! On September 24-25th, Marina HS had its club rush. And this time, for the first time in the history of Marina HS, Hackclub was introduced! We were able to get lots of signups as a club and introduce lots of people to the big Hackclub family. And yes, every good club needs a good website. So we have started creating our website to become as good as it can be, reflecting the Hackclub Site Brand Styling. One thing we noticed about Hackclub is the love of using Phantom Sans as the font, as well as the orange/red color scheme."}]...
|
Title: Hack Club Marina Chapter by @cognitayohan | Title: Hack Club Marina Chapter by @cognitayohan | Stardance
Devlogs:
The beginning of something new… Coding brought to Marina HS!! On September 24-25th, Marina HS had its club rush. And this time, for the first time in the history of Marina HS, Hackclub was introduced! We were able to get lots of signups as a club and introduce lots of people to the big Hackclub family. And yes, every good club needs a good website. So we have started creating our website to become as good as it can be, reflecting the Hackclub Site Brand Styling. One thing we noticed about Hackclub is the love of using Phantom Sans as the font, as well as the orange/red color scheme.
Hack Club Marina Chapter Website Update Today I updated the website for the club by changing some of the UI styling to be more adherent to hackclub.com/brand . I also spaced out the website with color coding for easier viewing of the application.
Hack Club Marina Chapter Website CSS Update I updated the UX of the site to make it easier to work with- I also made some manual edits to the CSS as well as some of the font configurations. The site is now ready for shipping! Also got a .com domain for it… yay
Ships:
This is Hack Club Marina Chapter’s official website! This website is a full-stack webapp created through the VITE framework within React.js. It utilizes typescript and some index.html/CSS formatting. It took a few large commits to build the website. The website is fully deployed at https://marinahackclub.com . I decided to use some mix of Hack Club’s CSS styling while incorporating some of my own “Marina” touch to it. The website includes a dashboard for main users to keep track of costs for the club....
|
1793216912.493112
|
1793303312.493112
|
|
60270
|
My Page by @emilyschmeler270 | Stardance
|
emilyschmeler270
|
0
|
1.75
|
0
|
[]
|
[{"post_id": 76295, "ts": "202 [{"post_id": 76295, "ts": "2026-10-03T03:21:50Z", "hours": 1.2972, "text": "Trying to figure out how to properly format this before I move on to add more content. I plan to make the recipe box have a larger width on your page. I also still want to figure out how to let users add their own recipe page so I will do some research on that. If anyone has any good resources for these or any fun ideas or recipes they want to share, please let me know!"}, {"post_id": 69223, "ts": "2026-09-16T16:40:25Z", "hours": 0.4511, "text": "Currently working on my recipe website. I have got one recipe on there and will add more soon once I figure out how I want to format the website."}]...
|
Title: My Page by @emilyschmeler270 | Stardance
D Title: My Page by @emilyschmeler270 | Stardance
Devlogs:
Currently working on my recipe website. I have got one recipe on there and will add more soon once I figure out how I want to format the website.
Trying to figure out how to properly format this before I move on to add more content. I plan to make the recipe box have a larger width on your page. I also still want to figure out how to let users add their own recipe page so I will do some research on that. If anyone has any good resources for these or any fun ideas or recipes they want to share, please let me know!...
|
1793033371.9697652
|
1793638171.9697652
|
|
67484
|
Sproutsquare by @adityakashyapxyz | Stardance
|
adityakashyapxyz
|
0
|
9.19
|
0
|
[]
|
[{"post_id": 76293, "ts": "202 [{"post_id": 76293, "ts": "2026-10-03T03:16:04Z", "hours": 8.9103, "text": "made some development on the project"}, {"post_id": 76163, "ts": "2026-10-02T15:30:34Z", "hours": 0.2781, "text": "sprout"}]...
|
Title: Sproutsquare by @adityakashyapxyz | Stardan Title: Sproutsquare by @adityakashyapxyz | Stardance
Devlogs:
sprout
made some development on the project...
|
1793109308.4882958
|
1793714108.4882958
|
|
45806
|
Valence - Lang by @fAILedKnight | Stardance
|
fAILedKnight
|
1
|
79.14
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T07:54:42Z", "hours": 62.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made Valence! A language that connects any language! the issues… don’t even get me started! I first off hade very little understanding of rust(knew a bit of the basics well enough to start). My laptop crashed like 5 times while coding and took long time to compile heavy updates! I added a command and another command broke! I sat in front of the computer for hours and now my back hurts! I got scrutinized by people who that I should be doing better things! BUT I didn’t quit cuz after all its all for the love of the game! Finally I am still updating, my laptop still heats and melts, but I LOVE IT! And below is Valence running java and python!", "repo": "https://github.com/failedknight-exe/Valence-Lang", "demo": "https://valence.freehosting.dev/"}]...
|
[{"post_id": 76292, "ts": "202 [{"post_id": 76292, "ts": "2026-10-03T03:12:58Z", "hours": 2.2606, "text": "I HATE MY LIFE!!!! why you ask? cuz guess what? cor morph failed me! its gone dead! And guess what I find out the my vbp register got deleted when I restructured my code! and now I decided to rip cor morph out and delete it! so now I have fixed vbp.register! and yep im still sick every joint hurts but the grind doesn’t stop till i literally stop! oh and I do not think my laptop is doing too good! it burning itself its a pyromaniac!!!!"}, {"post_id": 75470, "ts": "2026-09-30T05:46:45Z", "hours": 14.8808, "text": "I am sick and have been working like a madman on the cor morph feature! idk what more to say stay tuned!"}, {"post_id": 71040, "ts": "2026-09-20T07:35:14Z", "hours": 5.3744, "text": "I made it so you can code in any language not just the ones I hardcoded!"}, {"post_id": 69408, "ts": "2026-09-17T00:15:14Z", "hours": 2.1011, "text": "Well If you lock in you can do anything… So I took it personally and decide Valence needs to level TF up. And well trust me when I say It will not disappoint! Valence before could only connect to the languages I hardcoded. That 💩 is NOT UNIVERSAL! So I decided why make it my job to link up all langs? So, I decided to give the job to the dev, BUT to be clear from my end I made it simple as HELL! and well, you now can connect to any language!"}, {"post_id": 68374, "ts": "2026-09-15T00:59:45Z", "hours": 16.6725, "text": "IT HAS BEEN A LONG TIME! and ofc i wasn’t Idle! I COOKED SO HARD THAT well… Valence(connect) now actually connects. YEP it connected to python first then I locked in and added C C++ (both these are a pain to work with on windows maybe a skill issue idk) then I integrated C# WAY EASIER cuz ofc it is builtin to windows and then Java, Rust ofc and zig (it was mainly for the compilation of C and C++ and yea) and now it officially can connect after testing it runs all the files in 13.261 ms and on the warmed up loop it ran in about 2.189 ms."}, {"post_id": 56400, "ts": "2026-08-28T04:56:13Z", "hours": 4.9431, "text": "I have successfully added async and protect it may have taken me 4 hrs but it was worth it! Connect v0.2 is out. well do to copyright issues im naming it Valence and v0.2 Memory Rush update is out! you can go to my github release and download the .exe’s and use it. but I need to document it and actually clarify syntax, but it works! sorry I’m in a rush so this devlog wasn’t as informative!"}, {"post_id": 49467, "ts": "2026-08-18T10:14:05Z", "hours": 6.0528, "text": "My laptop has failed me… I’ve been busy for the past few days with family and friends and decided to lock in again but after 2 hours of coding my laptop sputtered to a stop at first I thought it froze but then the screen went black and it stopped I couldn’t do anything after an hour of good waiting I pressed the power button and it started up again. this time I deleted all background processes this helped I later cleaned the system up even more than I usually do then I came to conclusion that it had to be related to hardware and not software so I downloaded a cpu temp reader and once I had setup what I was working with I saw my cpu reached a temp of 100+ and it then climbed to 113 and my laptops screen went black again. this time I made sure to keep system super lean and delete anything that I can use later and am not in dire need of. I then started to code again I started with string extras this allows you to truly modify and change strings. I then add a crypto extension which allows you to generate a uuid or hash or even encode and decode bas64 and so on. those were the easy parts then it came to me that I should make a cool feature so I decided to build func[auto] well make it usefull and bring trigger to life too. and with this I sadly announce that func[onetime] is no more. And I am happy to announce that Connect-Lang is extremly close to v0.2."}, {"post_id": 46730, "ts": "2026-08-14T06:09:44Z", "hours": 3.9842, "text": "For the past few devlogs it seems as if my journey was finally smoothing out. well… it was the calm before the storm. because right after I thought nothing go bad ALL WENT BAD. My laptop Crashed Yes it Crashed and then my keyboard and trackpad failed. I thought only I failed but my things fail too. So I ran to find anything to keep on working and found a working keyboard and mouse and after finding one I went back to work. I hade a easy time implementing the system integration that allows you to check you OS and everything related. and After that I wondered what would be cool and fun to have… well I wanted pain so I decide let me add Http Extension. Yes my lang can now after a painful journey of trial and error can download retrieve and interact with URL’s. I don’t even want to say what happened but either way I will go on and relive that pain to “paint a picture”. Basically I came back after my laptops tantrum to lock in and build Http but my laptop failed me. So I fixed it and I started building halfway through after build a solid structure I tested and saw that Http was existing but it wasn’t being useful. so, I thought and went in to add the stronger features, but before I knew it the addons I integrated weren’t compatible and failed miserably after talking to a few AI’s(Actual intelligence’s not artificial) to get some insight they all called me stupid and told me to stop. SO i realized I’m not just stupid I’m stupid stupid and - -=+ and that’s fine by me. SO I locked in ad went through the rust ref book and dived into my code head first and fought my way in and added in all my features. I then went ahead and tested it and it worked."}, {"post_id": 45967, "ts": "2026-08-12T19:49:42Z", "hours": 0.9403, "text": "After spending about an hour I have successfully added in date/time integration. It was very simple."}, {"post_id": 45915, "ts": "2026-08-12T18:01:11Z", "hours": 1.5136, "text": "Well my project just LEVELED UP. this level up was actually super clean and didn’t make me ball my eyes out at how I should’ve stuck to my old project. It was quite pleasant. this update allows my lang to store data in a separate file and format… json. Yep connect can now read and understand json format. It can conver data into json strings through json.stringify and can turn json strings into data."}, {"post_id": 45514, "ts": "2026-08-12T01:52:12Z", "hours": 3.2867, "text": "after testing my language heavily I came to realize my language needs an error handling system so I thought on how id implement it and after researching on what it does I added attempt, recue, and always. attempt will try running a chunk or line of code. rescue catches the error without stopping the script and shows a message. And finally always will run a block or line of code no matter what. At first try the attempt was working cuz well it just runs the could but because return wasn’t working the code showed a error in terminal after everything. so, I pondered and pondered when I finally cam e to the conclusion to change all error messages for everything to be compatible with attempt and after that it worked. P.S(CoreAi in the MyApp folder is my personal AI I will integrate into my lang, but that’s a very later feature and beta feature.)"}, {"post_id": 44693, "ts": "2026-08-10T17:05:18Z", "hours": 3.8947, "text": "After heavy testing of the summon command I came to the conclusion that I failed it. So I thought how could I make local variables stay local and not be global? so I decided to add VarAccess an identifier resolution. I then tested again just to see it fail AGAIN. SO I I thought okay why is it failing so went ahead and added in debug prints in the rust code to see what was happening and I found it parent_locals was getting popped but local_vars never got restored so summon wasn’t working because there was nothing it could summon. and before summon I added in maps and recursion but that was a very smooth workflow."}, {"post_id": 43746, "ts": "2026-08-09T05:09:47Z", "hours": 13.0456, "text": "After days of fighting procrastination and boredom. I failed. and then when I opened up my old project I failed to feel any fun. this made my concerned for I deeply love my projects. so I scrambled my brain and I realized the project was too easy and too simple it wasn’t challenging. It didn’t make me want to pull my hair out. This made me think what if I created my very own… language. I felt very challenged and so I researched and decided to use rust for my lang. And I chose rust because before I tried learning it and instead failed. So this made me feel highly motivated. I went to do what any sane human would do in my position. I went to code. Yep code without any knowledge. so that was another fail. and after deep research on rust I decided to actually learn it but use AI to boost time and I learned the basics of rust within 2 hours and after a few hundred lines of code I realized I should run it. Yep… It showed error after error after error my little kingdom crumbled to dust like the inside of my wallet. I cried myself to sleep that night and the next morning I woke up and ready to fight my laptop. and I went to my laptop and deleted the folder and created a new one and started coding and testing and after 10hrs of grueling work and an additional 7hrs researching I bring to you the very start of connect. My first rust based language."}]...
|
Title: Valence - Lang by @fAILedKnight | Stardance Title: Valence - Lang by @fAILedKnight | Stardance
Devlogs:
After days of fighting procrastination and boredom. I failed. and then when I opened up my old project I failed to feel any fun. this made my concerned for I deeply love my projects. so I scrambled my brain and I realized the project was too easy and too simple it wasn’t challenging. It didn’t make me want to pull my hair out. This made me think what if I created my very own… language. I felt very challenged and so I researched and decided to use rust for my lang. And I chose rust because before I tried learning it and instead failed. So this made me feel highly motivated. I went to do what any sane human would do in my position. I went to code. Yep code without any knowledge. so that was another fail. and after deep research on rust I decided to actually learn it but use AI to boost time and I learned the basics of rust within 2 hours and after a few hundred lines of code I realized I should run it. Yep… It showed error after error after error my little kingdom crumbled to dust like the inside of my wallet. I cried myself to sleep that night and the next morning I woke up and ready to fight my laptop. and I went to my laptop and deleted the folder and created a new one and started coding and testing and after 10hrs of grueling work and an additional 7hrs researching I bring to you the very start of connect. My first rust based language.
After heavy testing of the summon command I came to the conclusion that I failed it. So I thought how could I make local variables stay local and not be global? so I decided to add VarAccess an identifier resolution. I then tested again just to see it fail AGAIN. SO I I thought okay why is it failing so went ahead and added in debug prints in the rust code to see what was happening and I found it parent_locals was getting popped but local_vars never got restored so summon wasn’t working because there was nothing it could summon. and before summon I added in maps and recursion but that was a very smooth workflow.
after testing my language heavily I came to realize my language needs an error handling system so I thought on how id implement it and after researching on what it does I added attempt, recue, and always. attempt will try running a chunk or line of code. rescue catches the error without stopping the script and shows a message. And finally always will run a block or line of code no matter what. At first try the attempt was working cuz well it just runs the could but because return wasn’t working the code showed a error in terminal after everything. so, I pondered and pondered when I finally cam e to the conclusion to change all error messages for everything to be compatible with attempt and after that it worked. P.S(CoreAi in the MyApp folder is my personal AI I will integrate into my lang, but that’s a very later feature and beta feature.)
Well my project just LEVELED UP. this level up was actually super clean and didn’t make me ball my eyes out at how I should’ve stuck to my old project. It was quite pleasant. this update allows my lang to store data in a separate file and format… json. Yep connect can now read and understand json format. It can conver data into json strings through json.stringify and can turn json strings into data.
After spending about an hour I have successfully added in date/time integration. It was very simple.
For the past few devlogs it seems as if my journey was finally smoothing out. well… it was the calm before the storm. because right after I thought nothing go bad ALL WENT BAD. My laptop Crashed Yes it Crashed and then my keyboard and trackpad failed. I thought only I failed but my things fail too. So I ran to find anything to keep on working and found a working keyboard and mouse and after finding one I went back to work. I hade a easy time implementing the system integration that allows you to check you OS and everything related. and After that I wondered what would be cool and fun to have… well I wanted pain so I decide let me add Http Extension. Yes my lang can now after a painful journey of trial and error can download retrieve and interact with URL’s. I don’t even want to say what happened but either way I will go on and relive that pain to “paint a picture”. Basically I came back after my laptops tantrum to lock in and build Http but my laptop failed me. So I fixed it and I started building halfway through after build a solid structure I tested and saw that Http was existing but it wasn’t being useful. so, I thought and went in to add the stronger features, but before I knew it the addons I integrated weren’t compatible and failed miserably after talking to a few AI’s(Actual intelligence’s not artificial) to get some insight they all called me stupid and told me to stop. SO i realized I’m not just stupid I’m stupid stupid and - -=+ and that’s fine by me. SO I locked in ad went through the rust ref book and dived into my code head first and fought my way in and added in all my features. I then went ahead and tested it and it worked.
My laptop has failed me… I’ve been busy for the past few days with family and friends and decided to lock in again but after 2 hours of coding my laptop sputtered to a stop at first I thought it froze but then the screen went black and it stopped I couldn’t do anything after an hour of good waiting I pressed the power button and it started up again. this time I deleted all background processes this helped I later cleaned the system up even more than I usually do then I came to conclusion that it had to be related to hardware and not software so I downloaded a cpu temp reader and once I had setup what I was working with I saw my cpu reached a temp of 100+ and it then climbed to 113 and my laptops screen went black again. this time I made sure to keep system super lean and delete anything that I can use later and am not in dire need of. I then started to code again I started with string extras this allows you to truly modify and change strings. I then add a crypto extension which allows you to generate a uuid or hash or even encode and decode bas64 and so on. those were the easy parts then it came to me that I should make a cool feature so I decided to build func[auto] well make it usefull and bring trigger to life too. and with this I sadly announce that func[onetime] is no more. And I am happy to announce that Connect-Lang is extremly close to v0.2.
I have successfully added async and protect it may have taken me 4 hrs but it was worth it! Connect v0.2 is out. well do to copyright issues im naming it Valence and v0.2 Memory Rush update is out! you can go to my github release and download the .exe’s and use it. but I need to document it and actually clarify syntax, but it works! sorry I’m in a rush so this devlog wasn’t as informative!
IT HAS BEEN A LONG TIME! and ofc i wasn’t Idle! I COOKED SO HARD THAT well… Valence(connect) now actually connects. YEP it connected to python first then I locked in and added C C++ (both these are a pain to work with on windows maybe a skill issue idk) then I integrated C# WAY EASIER cuz ofc it is builtin to windows and then Java, Rust ofc and zig (it was mainly for the compilation of C and C++ and yea) and now it officially can connect after testing it runs all the files in 13.261 ms and on the warmed up loop it ran in about 2.189 ms.
Well If you lock in you can do anything… So I took it personally and decide Valence needs to level TF up. And well trust me when I say It will not disappoint! Valence before could only connect to the languages I hardcoded. That 💩 is NOT UNIVERSAL! So I decided why make it my job to link up all langs? So, I decided to give the job to the dev, BUT to be clear from my end I made it simple as HELL! and well, you now can connect to any language!
I made it so you can code in any language not just the ones I hardcoded!
I am sick and have been working like a madman on the cor morph feature! idk what more to say stay tuned!
I HATE MY LIFE!!!! why you ask? cuz guess what? cor morph failed me! its gone dead! And guess what I find out the my vbp register got deleted when I restructured my code! and now I decided to rip cor morph out and delete it! so now I have fixed vbp.register! and yep im still sick every joint hurts but the grind doesn’t stop till i literally stop! oh and I do not think my laptop is doing too good! it burning itself its a pyromaniac!!!!
Ships:
I made Valence! A language that connects any language! the issues… don’t even get me started! I first off hade very little understanding of rust(knew a bit of the basics well enough to start). My laptop crashed like 5 times while coding and took long time to compile heavy updates! I added a command and another command broke! I sat in front of the computer for hours and now my back hurts! I got scrutinized by people who that I should be doing better things! BUT I didn’t quit cuz after all its all for the love of the game! Finally I am still updating, my laptop still heats and melts, but I LOVE IT! And below is Valence running java and python!...
|
1793346664.9133017
|
1793433064.9133017
|
|
56824
|
The Gacropad by @noopgabe | Stardance
|
noopgabe
|
0
|
10.08
|
0
|
[]
|
[{"post_id": 76288, "ts": "202 [{"post_id": 76288, "ts": "2026-10-03T02:49:44Z", "hours": 1.7114, "text": "GacroPad Devlog 6 - The Beckoning I’m gonna be blunt. I put in the grant. I have NOTHING useful to say, other than the fact that I worked on the firmware a little, CAD for the case, and used Codex for some PCB assistance since I have hit my limits internally. Again, this is my first PCB. I do not know what I am doing. I feel like asking Codex for help is fine morally, and I have nothing against it. Of course, I need to also learn these skills humanly, so in order to learn better, I’m going to do Half Life. Mostly because I need to learn how to make a PCB, and I need a second 3D printer for science, which includes modding and Egg-Bench (how fast can an egg be cooked on a 3D printer). For now, we wait. Here’s a raytraced render of the board, since it looks fresher. The display looks different because I got tortured with my display choices."}, {"post_id": 74736, "ts": "2026-09-28T03:07:19Z", "hours": 1.9994, "text": "GacroPad Devlog 5 It looks so beautiful, don’ it? Wow. I cannot believe it. We actually have a PCB. Grueling, working hours (some unrecorded…) and we finally have a PCB. It’s late where I’m at. I don’t have much to say, and I have school tomorrow, so I’m cutting it short. We are almost done. CAD is going to be really tricky. Like, really. I use Autodesk Fusion. Voluntarily. I cannot use FreeCAD, in good faith. It does not work on Debian (at least, for me). I have to use the web version. Thank god I am a student. The moment this is done, I will work on a separate project in a new YSWS. It will be Wheatley, from the Portal franchise. Articulated. It should be able to move around by itself on my ceiling. This is a shower thought. As for now, we need to be serious. Crap just got real. When I work on CAD tomorrow, I will be recording guaranteed. It’s also not going to be green. I decided it’s going to be black (it’s not going to be expensive, green does reek of old too but Raspberry Pi uses it but idgaf). When I get my JLCPCB, soldering iron (I don’t own one sadly), and other item grants, it will go to the best stuff I can find. My teacher also asked me to bring in some PCBs into compsci class so I am going to get absolutely bullied for this. Bye!"}, {"post_id": 74046, "ts": "2026-09-26T16:15:48Z", "hours": 4.0294, "text": "GacroPad Devlog 4 It’s raining outside right now. I’m so thankful for this. A lot of the firmware for the GacroPad is done, and the companion app (untested) seems to be just fine. Though, because I’m so persistent, we now have a PCB sketch. It’s not done yet, but we’re so, so close. This will be a real thing. I panicked, because the deadline was the 30th of September. However, things changed, and we now have more time! This will give me more time to work on CAD, the PCB, and getting funding. I am so very thankful for the people at Stardance for giving not just me, but everyone more time. This will also give me some time to even rate projects the moment I get approved! More soon to come. For now, keep this in mind: The schematic is done, and the PCB will be finished very very soon. CAD will be finished. I have an Autodesk Education license, so I will be using that to my advantage. I use Linux, so I cannot use Fusion without some workarounds (which do not work), so Fusion Education is my ticket. I have a 3D printer. The moment the first CAD prototype is both finished and fits, it goes straight to the printer. Decisively, it will be printed in PETG. Funding is a tough one. I need to find a reliable seller that won’t try to kill me with shipping that can easily ship cheaply even though you can’t really have that. I think Stardance may cover funding for the ESP. Not sure. Cherry MX switches are our ticket. They’re good, and they last. Keycaps are going to be 3D printed. Gray PETG. This does make the cost more, but all printing materials are footed by me, since it’s better for me to do it. For now, the PCB currently looks like the following image. It’s messy, but progress!"}, {"post_id": 65735, "ts": "2026-09-11T02:30:32Z", "hours": 1.0294, "text": "GacroPad Devlog 3 If you are reading this, you now owe me a Bambu Labs H2C. I need one please please please I beg A lot has changed. For starters, RGB is a dead dream. No more RGB. It’s cleaner anyway. The OLED is still in place, however, it is now substantially larger (1.3” over 0.91”) for QoL. Instead of wires, it is now labels. It looks much cleaner, doesn’t it? This part I mostly forgot to record. It was substantial, I know, but it was a necessary evil. A lot of things have been repositioned. Everything works, it’s just that they’ve been moved around. The way the ESP is positioned is special. In the case, there will be an acrylic sheet that shows the receptacle and the ESP-32 in a small window. I get this costs more, but it makes it so much more cooler. This changes a lot of design mechanics. Again, as I stated, a lot of things are due for a change. Nothing is final. Project state? 30%. I need to add BOOT and RESET buttons for if this thing dies out. After that, it’s PCB time! After that though, I will code instead of CAD. Bye!"}, {"post_id": 61844, "ts": "2026-09-04T23:31:22Z", "hours": 0.5956, "text": "GacroPad Devlog 2 I’m homicidal, and I got a taste, I want to wipe out the monster race! - Undertale the Musical Today was a productive day! What I did today was mostly add the switches, start progress on RGB, and the better part? Add a 0.91” OLED screen! I also stamped my watermark onto the schematic. You may be asking yourself a very important question. “Why does it look so different than last time in the beginning?” I forgot to record. That’s it. It was the stupidest thing I could ever do. I forgot to open Lapse and hit record. I could’ve done that. I totally could’ve. Unfortunately, the moment I realized that (I worked on it yesterday), I was practically done with the power + ESP situation. And, as of now, it looks awfully jank. Don’t worry. Everything is gonna try to look less jank. The more unfortunate part is that I am totally going to forget recording a lot of times. This will definitely screw my hours six ways to Sunday. But honestly I’m doing it for the fun of it, not the stardust. It’s a good prize in general, however, it’s not my main motive. My main motive is to improve my skills and try to make a PCB come to life. Mostly(s) because it’s good life skills, and it’s great for my future. What would you say the project completion is at? I would say 25%. Good progress was made today, as I implemented the switches, something that really confused me at first, but I eventually got over it. I’m definitely gonna be logging some more this weekend, as Labor Day weekend is this, well, weekend, so I have some extra time to work on this without school nagging me about it. I can work later into the nights, since, I usually go to bed really late. Like, awfully late. Not good, but also good. That’s pretty much it for this devpost! Stay chill, everynyan!~"}, {"post_id": 60550, "ts": "2026-09-02T23:28:57Z", "hours": 0.7189, "text": "GacroPad, The Macro Pad That Doesn’t Suck You’ll choke on how bad the name is. It’s awful. As they say, good product, awful name. This is the first devlog of the GacroPad, the macro pad that works the way you want it to. GacroPad is a macro pad that is (supposed) to look beautiful, clean, and fits in well with whatever setup you have. It is comprised of an ESP32-S3-WROOM-1, some key switches that are clicky AF, keycaps that do NOT look like hot garbage, and a clean OLED for… something. That “something” still needs to be determined. GacroPad is a HEAVY work in progress. Absolutely NOTHING will be final, and everything WILL be changed in the near future. Well, maybe some things. Here are some things that will NOT be changed: The current micro-controller. The ESP32-S3-WROOM-1 is honestly the best choice. However, when we take into consideration of the Raspberry Pi Pico, QMK firmware also comes in. This can make the GacroPad a whole lot simpler, but the WROOM (let’s just call it that) seems a lot more capable. The switches. Tacky blue switches are funny lol. Of course, they’re a good solution, but not exactly the best. We can switch them at any time, but for now, let’s stick to what we have. That’s mostly it! The shell however, is a topic that will be discussed later. What we DO know: It’s gonna be 3D printed. If you don’t have one, the 3MFs and STLs will be publicly available, so you can easily go to a place to get it 3D printed. If you DO have a 3D printer, the whole thing is going to be relatively tiny. I will provide the appropriate 3MFs for both Bambu and Creality printers. I mainly use a Creality K2, and having a Bambu file go into Creality is going to cause a lot of configs to go blank in the slicer + color data might be missing. I will also provide a generic 3MF file from OrcaSlicer. PETG will be the main filament. PLA is okay, but I HIGHLY suggest PETG, since PETG is the big boy stuff. This case will be multi-color. I will try my absolute best to make a case that is done in parts so people with a printer that only takes in one color at a time/don’t have a multi-material system, but there is no guarantee. Having it in one piece is optimal, and better executed as well. Most people nowadays usually have an AMS/CFS to go along with their Bambu/Creality printers, and I have never encountered someone who genuinely owns an Ender printer. I will most likely not do it in parts, just for the sake of time. What would you consider the project completion to be as of now, and do you like cats? I would say around 15%, since it’s somewhat there, but not far enough. We have a lot of work to do, and if you would like to help, it would be gladly appreciated (as in helping me with my horrible skills at making a PCB)! And yes, I do like cats. Mrrrp~! That’s it! That’s the GacroPad! Or, what it will be in the future. If you would like to help, please do! Attached below is a timelapse of my KiCad session and the KiCad sketch below (incomplete), if you’re wondering what the hell those things are."}]...
|
Title: The Gacropad by @noopgabe | Stardance
Devl Title: The Gacropad by @noopgabe | Stardance
Devlogs:
GacroPad, The Macro Pad That Doesn’t Suck You’ll choke on how bad the name is. It’s awful. As they say, good product, awful name. This is the first devlog of the GacroPad, the macro pad that works the way you want it to. GacroPad is a macro pad that is (supposed) to look beautiful, clean, and fits in well with whatever setup you have. It is comprised of an ESP32-S3-WROOM-1, some key switches that are clicky AF, keycaps that do NOT look like hot garbage, and a clean OLED for… something. That “something” still needs to be determined. GacroPad is a HEAVY work in progress. Absolutely NOTHING will be final, and everything WILL be changed in the near future. Well, maybe some things. Here are some things that will NOT be changed: The current micro-controller. The ESP32-S3-WROOM-1 is honestly the best choice. However, when we take into consideration of the Raspberry Pi Pico, QMK firmware also comes in. This can make the GacroPad a whole lot simpler, but the WROOM (let’s just call it that) seems a lot more capable. The switches. Tacky blue switches are funny lol. Of course, they’re a good solution, but not exactly the best. We can switch them at any time, but for now, let’s stick to what we have. That’s mostly it! The shell however, is a topic that will be discussed later. What we DO know: It’s gonna be 3D printed. If you don’t have one, the 3MFs and STLs will be publicly available, so you can easily go to a place to get it 3D printed. If you DO have a 3D printer, the whole thing is going to be relatively tiny. I will provide the appropriate 3MFs for both Bambu and Creality printers. I mainly use a Creality K2, and having a Bambu file go into Creality is going to cause a lot of configs to go blank in the slicer + color data might be missing. I will also provide a generic 3MF file from OrcaSlicer. PETG will be the main filament. PLA is okay, but I HIGHLY suggest PETG, since PETG is the big boy stuff. This case will be multi-color. I will try my absolute best to make a case that is done in parts so people with a printer that only takes in one color at a time/don’t have a multi-material system, but there is no guarantee. Having it in one piece is optimal, and better executed as well. Most people nowadays usually have an AMS/CFS to go along with their Bambu/Creality printers, and I have never encountered someone who genuinely owns an Ender printer. I will most likely not do it in parts, just for the sake of time. What would you consider the project completion to be as of now, and do you like cats? I would say around 15%, since it’s somewhat there, but not far enough. We have a lot of work to do, and if you would like to help, it would be gladly appreciated (as in helping me with my horrible skills at making a PCB)! And yes, I do like cats. Mrrrp~! That’s it! That’s the GacroPad! Or, what it will be in the future. If you would like to help, please do! Attached below is a timelapse of my KiCad session and the KiCad sketch below (incomplete), if you’re wondering what the hell those things are.
GacroPad Devlog 2 I’m homicidal, and I got a taste, I want to wipe out the monster race! - Undertale the Musical Today was a productive day! What I did today was mostly add the switches, start progress on RGB, and the better part? Add a 0.91” OLED screen! I also stamped my watermark onto the schematic. You may be asking yourself a very important question. “Why does it look so different than last time in the beginning?” I forgot to record. That’s it. It was the stupidest thing I could ever do. I forgot to open Lapse and hit record. I could’ve done that. I totally could’ve. Unfortunately, the moment I realized that (I worked on it yesterday), I was practically done with the power + ESP situation. And, as of now, it looks awfully jank. Don’t worry. Everything is gonna try to look less jank. The more unfortunate part is that I am totally going to forget recording a lot of times. This will definitely screw my hours six ways to Sunday. But honestly I’m doing it for the fun of it, not the stardust. It’s a good prize in general, however, it’s not my main motive. My main motive is to improve my skills and try to make a PCB come to life. Mostly(s) because it’s good life skills, and it’s great for my future. What would you say the project completion is at? I would say 25%. Good progress was made today, as I implemented the switches, something that really confused me at first, but I eventually got over it. I’m definitely gonna be logging some more this weekend, as Labor Day weekend is this, well, weekend, so I have some extra time to work on this without school nagging me about it. I can work later into the nights, since, I usually go to bed really late. Like, awfully late. Not good, but also good. That’s pretty much it for this devpost! Stay chill, everynyan!~
GacroPad Devlog 3 If you are reading this, you now owe me a Bambu Labs H2C. I need one please please please I beg A lot has changed. For starters, RGB is a dead dream. No more RGB. It’s cleaner anyway. The OLED is still in place, however, it is now substantially larger (1.3” over 0.91”) for QoL. Instead of wires, it is now labels. It looks much cleaner, doesn’t it? This part I mostly forgot to record. It was substantial, I know, but it was a necessary evil. A lot of things have been repositioned. Everything works, it’s just that they’ve been moved around. The way the ESP is positioned is special. In the case, there will be an acrylic sheet that shows the receptacle and the ESP-32 in a small window. I get this costs more, but it makes it so much more cooler. This changes a lot of design mechanics. Again, as I stated, a lot of things are due for a change. Nothing is final. Project state? 30%. I need to add BOOT and RESET buttons for if this thing dies out. After that, it’s PCB time! After that though, I will code instead of CAD. Bye!
GacroPad Devlog 4 It’s raining outside right now. I’m so thankful for this. A lot of the firmware for the GacroPad is done, and the companion app (untested) seems to be just fine. Though, because I’m so persistent, we now have a PCB sketch. It’s not done yet, but we’re so, so close. This will be a real thing. I panicked, because the deadline was the 30th of September. However, things changed, and we now have more time! This will give me more time to work on CAD, the PCB, and getting funding. I am so very thankful for the people at Stardance for giving not just me, but everyone more time. This will also give me some time to even rate projects the moment I get approved! More soon to come. For now, keep this in mind: The schematic is done, and the PCB will be finished very very soon. CAD will be finished. I have an Autodesk Education license, so I will be using that to my advantage. I use Linux, so I cannot use Fusion without some workarounds (which do not work), so Fusion Education is my ticket. I have a 3D printer. The moment the first CAD prototype is both finished and fits, it goes straight to the printer. Decisively, it will be printed in PETG. Funding is a tough one. I need to find a reliable seller that won’t try to kill me with shipping that can easily ship cheaply even though you can’t really have that. I think Stardance may cover funding for the ESP. Not sure. Cherry MX switches are our ticket. They’re good, and they last. Keycaps are going to be 3D printed. Gray PETG. This does make the cost more, but all printing materials are footed by me, since it’s better for me to do it. For now, the PCB currently looks like the following image. It’s messy, but progress!
GacroPad Devlog 5 It looks so beautiful, don’ it? Wow. I cannot believe it. We actually have a PCB. Grueling, working hours (some unrecorded…) and we finally have a PCB. It’s late where I’m at. I don’t have much to say, and I have school tomorrow, so I’m cutting it short. We are almost done. CAD is going to be really tricky. Like, really. I use Autodesk Fusion. Voluntarily. I cannot use FreeCAD, in good faith. It does not work on Debian (at least, for me). I have to use the web version. Thank god I am a student. The moment this is done, I will work on a separate project in a new YSWS. It will be Wheatley, from the Portal franchise. Articulated. It should be able to move around by itself on my ceiling. This is a shower thought. As for now, we need to be serious. Crap just got real. When I work on CAD tomorrow, I will be recording guaranteed. It’s also not going to be green. I decided it’s going to be black (it’s not going to be expensive, green does reek of old too but Raspberry Pi uses it but idgaf). When I get my JLCPCB, soldering iron (I don’t own one sadly), and other item grants, it will go to the best stuff I can find. My teacher also asked me to bring in some PCBs into compsci class so I am going to get absolutely bullied for this. Bye!
GacroPad Devlog 6 - The Beckoning I’m gonna be blunt. I put in the grant. I have NOTHING useful to say, other than the fact that I worked on the firmware a little, CAD for the case, and used Codex for some PCB assistance since I have hit my limits internally. Again, this is my first PCB. I do not know what I am doing. I feel like asking Codex for help is fine morally, and I have nothing against it. Of course, I need to also learn these skills humanly, so in order to learn better, I’m going to do Half Life. Mostly because I need to learn how to make a PCB, and I need a second 3D printer for science, which includes modding and Egg-Bench (how fast can an egg be cooked on a 3D printer). For now, we wait. Here’s a raytraced render of the board, since it looks fresher. The display looks different because I got tortured with my display choices....
|
1793400864.6957262
|
1794005664.6957262
|
|
2889
|
Linux-looking macropad? by @Krupam | Stardance
|
Krupam
|
0
|
24.7
|
0
|
[]
|
[{"post_id": 76285, "ts": "202 [{"post_id": 76285, "ts": "2026-10-03T02:37:31Z", "hours": 0.7833, "text": "Final Devlog Before Ship Hey guys! I am so excited to get this macropad built. I finished setting up the gihub repo and added pictures and I am going to submit my design for review. Wish me Luck!!!"}, {"post_id": 76276, "ts": "2026-10-03T01:44:06Z", "hours": 1.7667, "text": "Prepare for Shipping CAD: Man this project has taught me how much I hate fusion 😭. But I had to learn it eventually right? I added a 45 degree one inch feet to match with my keyboard. I also added small insert holes for me to put rubber feet (or more realistically hot glue). PCB: I spent some time error checking and making the pcb production ready. I created my own footprint for the XAOI to get it to fit on my pcb. I wanted the USB to stick out to reduce the length of cable required to go in. Github: I started putting all of the files on GitHub, check it out! My Github"}, {"post_id": 69821, "ts": "2026-09-17T20:59:15Z", "hours": 11.4175, "text": "Case work! Hey hey hey, I know it has been like three months but I can explain… Why so long? Well to be honest, I do NOT like fusion. I hate geometry and by extension cad. This project is my first time ever doing it so it took a lot of youtube videos, advise, and procrastination to get here. The Case: The case is pretty simple, it has the top piece with cutouts for the OLED, rotary encoder, keys, as well as holes for the LEDs to shine through. (I will fillet everything at the end) It also has holes for the heat inserts to melt into. The bottom case has the actual walls of the case, holes for the screws, standoffs for the pcb, as well as the USB C cutout. This is definitely not my cup of tea, so please let me know if anyone has any ideas."}, {"post_id": 16472, "ts": "2026-06-26T20:22:38Z", "hours": 1.7167, "text": "Fusion! Started making the case for my macropad"}, {"post_id": 14542, "ts": "2026-06-23T18:09:09Z", "hours": 3.6967, "text": "FINALLY! I finished writing all of the code for my macropad today. (I love procrastinating Fusion :) The macropad has a couple of functions. The rotary encoder will switch the layers on KMK. (0-2 right now but planned expansion to 0-4) The leds will light up according to the layer as well as all change color. The oled screen (up top) will display the current layer, an image, and the functions on the layer. On each layer the 4 different keys will do different functions They are as such: Copy, Paste, Redo, and redo. CTRL + F, clipboard, File explorer, and Screenshot. Pause/unpause, mute/unmute discord mic, defen discord, mute pc."}, {"post_id": 3939, "ts": "2026-06-07T02:08:30Z", "hours": 1.2417, "text": "PCB TIME I just finished my design for my pcb and started learning fusion. Yikes ;) Let me know how this looks"}, {"post_id": 1685, "ts": "2026-06-03T20:46:14Z", "hours": 4.0792, "text": "MacroPad Schematic Plan"}]...
|
Title: Linux-looking macropad? by @Krupam | Starda Title: Linux-looking macropad? by @Krupam | Stardance
Devlogs:
MacroPad Schematic Plan
PCB TIME I just finished my design for my pcb and started learning fusion. Yikes ;) Let me know how this looks
FINALLY! I finished writing all of the code for my macropad today. (I love procrastinating Fusion :) The macropad has a couple of functions. The rotary encoder will switch the layers on KMK. (0-2 right now but planned expansion to 0-4) The leds will light up according to the layer as well as all change color. The oled screen (up top) will display the current layer, an image, and the functions on the layer. On each layer the 4 different keys will do different functions They are as such: Copy, Paste, Redo, and redo. CTRL + F, clipboard, File explorer, and Screenshot. Pause/unpause, mute/unmute discord mic, defen discord, mute pc.
Fusion! Started making the case for my macropad
Case work! Hey hey hey, I know it has been like three months but I can explain… Why so long? Well to be honest, I do NOT like fusion. I hate geometry and by extension cad. This project is my first time ever doing it so it took a lot of youtube videos, advise, and procrastination to get here. The Case: The case is pretty simple, it has the top piece with cutouts for the OLED, rotary encoder, keys, as well as holes for the LEDs to shine through. (I will fillet everything at the end) It also has holes for the heat inserts to melt into. The bottom case has the actual walls of the case, holes for the screws, standoffs for the pcb, as well as the USB C cutout. This is definitely not my cup of tea, so please let me know if anyone has any ideas.
Prepare for Shipping CAD: Man this project has taught me how much I hate fusion 😭. But I had to learn it eventually right? I added a 45 degree one inch feet to match with my keyboard. I also added small insert holes for me to put rubber feet (or more realistically hot glue). PCB: I spent some time error checking and making the pcb production ready. I created my own footprint for the XAOI to get it to fit on my pcb. I wanted the USB to stick out to reduce the length of cable required to go in. Github: I started putting all of the files on GitHub, check it out! My Github
Final Devlog Before Ship Hey guys! I am so excited to get this macropad built. I finished setting up the gihub repo and added pictures and I am going to submit my design for review. Wish me Luck!!!...
|
1792730933.2185411
|
1793335733.2185411
|
|
67581
|
AuraGoons by @yangterry80 | Stardance
|
yangterry80
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-03T02:56:19Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a website. it challenged me to think within the box and outside at the same time.", "repo": "https://github.com/TerryYang80/AuraGoons", "demo": "https://terryyang80.github.io/AuraGoons/"}]...
|
[{"post_id": 76284, "ts": "202 [{"post_id": 76284, "ts": "2026-10-03T02:35:52Z", "hours": 0.4036, "text": "I made the website cool!!!!!!!"}]...
|
Title: AuraGoons by @yangterry80 | Stardance
Devl Title: AuraGoons by @yangterry80 | Stardance
Devlogs:
I made the website cool!!!!!!!
Ships:
I made a website. it challenged me to think within the box and outside at the same time....
|
1793217107.8247228
|
1793303507.8247228
|
|
836
|
meow auth by @moon | Stardance
|
moon
|
0
|
129.27
|
0
|
[]
|
[{"post_id": 76283, "ts": "202 [{"post_id": 76283, "ts": "2026-10-03T02:33:15Z", "hours": 10.1333, "text": "pew pew cabosh, wawah space birb is very sleepy. BREAKING NEWS, i added and changed a lot of things so i could make a delicious soup of changes that changed my old changed code that i yes. minimal frontend work called making the passkey section button go crazy with colors, authenticator icon (just search “aaguid explorer”, its not crazy work) and having a dialog telling “hi do you want to rename this, no? okay”. I also have collapsibles that hide info from your lil nonfluffy face when its useless. Now my crappy server knows from where you are connecting (who would have known that a server could know that) and where you live (oh no [its approximated from your ip]). THe latter only works when the instance is proxied under cloudflare (it even gets mad if a request doesnt have the headers it wants when you have enabled the “under cloudflare” mode). the audit log single method to do everything™ has been swapped with a builder (i love this), AND its info now includes that same ip and location (actor related [who did it]). all fields are now obligatory for… audit log purposes, because before i just pushed null on the db for things i didnt want to show the user MAKING a pretty stinker audit log that does not show who did what. i really dont know whata past me thought, because you can keep everything on the db and just show what you want to the user. idk, past me thinking in uhm not portals (yes). okay, more slurry of things. mah beautiful fix so the JWKS (signing keys used to… sign a jwt! [important for OpenID]) update when the database JWKS changed, spammed the hell out of the db and log as it polled instead of waiting for the db (or an instance) to say “I UPDATED IT GUYSS!1”!1”. This comes from the instances cache’ing JWKS instead of saying “could you repeat that” to the db (too many requests = blue elephant cry and explosions), so they need to know when the db changes or THEY WILL BE out of sync!! mr past me also thought that it was a good idea to store the oauth token code (used to get an access token) in plaintext in the muffing db, SMTH YOU SHOULDNT AT ALL DO. now its just hashed via hmac just like everything else. man i am GOOOD at this job of so called programming, having to go back to edit a thing i called done AND then HAVINGTO edit and edit and edit. this is so fun that I WILL BURST into FLAMES because of how stoopid i am meanwhile, you also have me deserving to be cooked with rice because I made a condition in the oauth token exchange that when SOMEONE somehow miss types or gets access to the oauth token code but has the wrong client_id, the temporary code gets deleted… and you know what i forgot? i forgot to commit the changes to the db, so the code never was deleted lol. i love these kind of stupid goofy pain errors that arent even errors. AALSO I reprettyfied the oauth helpers because after working on them a long time ago, i didnt know what were they doing and it wasnt fun nor funny >:( [i was mad {i am still mad, with that space birb… i want to sentence past moon to sad corner jail for 12 seconds}]. NOW teeny tiny additions!“1 the ratelimiter now exposes a “Retry-After” per a hacker news old moldy article i found, plus exposes its headers on cors. the audit log now does its job even in more parts! now it also tracks the totp recovery code usage [i frankly forgot about it :(].Changing your email or name now requires sudo minus the name on register. AND the app startup has now a beautiful banner saying “meow auth” in cursive. its pretty :3, makes it stylishinning. I also moved and added to the service manager (the watcher) a way to have service names and to launch services from inside of it (for some reason i used a method that was outof place for ages lol). oh no my time has come nnonono, i give you permission to see my trashy work in screenshot format (so modern)… yet i shall push towards completion of this meowing meow meow authing meow auth server:"}, {"post_id": 65650, "ts": "2026-09-10T22:39:28Z", "hours": 11.2656, "text": "hi hello hiiii, stupid space birb back from long bed sleep break. CATCHING UP, i have swapped to resident passkeys, fixed jwk refresh feature not working, beautified toml settings, added 2fa replay protection and audit log beautification. alright.. prepare for a long boring devlog as always. I finally swapped to resident passkeys after thinking about it for days (hours)! That means.. NO MORE user enumeration problemo with passkeys, yippie. it wasnt really a pain in the feathered buttocks, like it was just enabling a crate flag and boomy boom (and it even works on the frontend!). also, i patched with scotch tape a stupid buggy bug about the email templates, becuase I used a lazylock to store the email templater engine stuffy, when SOME random goofy template or data was wrong for whatever reason, it would poison the lazylock and the next time it was used it would just say “oh noes, i am broken, poisoned my childs. GO HECK YOUR SELF”… i just fixed the template part by checking if tera likes them in the global state creation. i love scotch tape, it smells great. while doing that, i finally addressed the beautiful jwks not updating on all instances because in MY JOB QUEUE only one running server instance can eat the job. that means, if you have 2 instances running, the one that is the unfortunate one that didnt eat the job will have stale jwks until the next time it is restarted. fixed it with some beautiful blue elephant database screaming “HEY GUYS, THE JWKS HAVE BEEN UPDATED” and the other instances will be like “oh, okay, i will update my beautiful jwks now”. finally, 2fa, or as i like to call it, TOTP, has been taken cared like a baby and then thrown again to the battle field after giving it the power up of replay protection. That means, if you use a code, it will be marked as used and you cant use it again (this only works with valid codes). makes you wait more smh. THE SETTINGS got a layer of microscopic makeup because i was like “man, these setting name are weired? what if the settings file had comments to know what the heck is this beautiful knob named ‘do_not_touch_this’”. yes i did that. it was a big red booty pain as i had rerereremember how to do proc_macros and how the heck did i even update the toml files with new entries without making them implode with gibrish. AND WE ALL KNOW NOW that ‘do_not_touch_this’ is a setting that if you set it to true, it will make this space birb implode in flames and become dust (yes, like a real firework going CHIRPAAAAAAAAAAAH pop ). and the final thing given some body work spray was the audit log. no more caveman moonbeeper style ‘log’ method with a thousand things. now we have the SAME thing but as a builder with a ‘save’ method. it just makes the code easier to read and understand. also, the audit log now has a “what resource¿” and “what ip?” and i removed the audit entry making from inside the auth helpers to outside. it was just an inconvenient place to put it, i dont evne know why would moonbeeper put it there… oh right i am moonbeeper. I DID IT BECAUSE it was a great place in those times. alright, HERE’s your typical bad screenshots that are trashign and god i am sleepy:"}, {"post_id": 53541, "ts": "2026-08-24T04:13:41Z", "hours": 9.2344, "text": "hi hello this is space bird. i have eaten 9h hours of real world time in just making the dialog component. I mean, IT WAS for making the 2FA prompts for when you wanted to enable it or disable and bleh bluh.. atleast it does look great… and i still need to add icons. the prompt is just the typical 2fa enable that gives you a qr or the 2fa secret if you cant scan the qr. The dialog component was pretty much made in nothing, in air time (free :D). the thing that took a bit was just the styling BUT WAHT did take a BIG LOOOT of time was just making the 2FA dialogs. lik gha damn hecking “2FA prompt” and “beep boop enabling dialogs”.. why?! becuase they are PACKED like a lasagna with forms, tanstack fetching, dialog steps and other stupid stuff to make it atleast not confusing for the user to navigate with tree sized buttons that dont work (becuase you are on the wrong step!!!!1 or already did everything lol). i mean, besides that custom stuff, it just reuses components like the pin or qr svg and… for now, also uses the spinner icon on the buttons you click to manage 2fa as i couldnt be asked to add real icons for now (leaving them for lasts). next up working work is more dialogs (for the passkey setup [so it isnt just a spinner without any “magic guideance”]), a collapsible comp to wrap the info items to show EVENTUALLY some metadata like, in the session items, browser, ip, what user was that did that thing and etc. Its just so i dont balloon the “info items” BECaUSE they are supposed to be some kind of “quick info”. broom brroom, i love wasting time on these stupid things (and wiring them!) >:3. LEAVING that tiny goofy work that apparently took hours to do. I am thinking and WILL be doing a beautiful swap into using resident passkeys (the ones that dont require me to know the user’s email in advance). yes, i know i said before that i dont wanted and ew ew resident. but man, its just easier for the end user to click a magical button to login directly. AND AND this even protects me from someone slapping the meowbackend with the email fish to see who is registered (with a passkey) by checking if the user’s email makes the selector appear. still, some part of me still thinks this is really bad idea but i want to do it tho… what could go wrong hah! i might aswell go to the cooking pot already and make some uhh chicken soup made of space birb. that’s it, i still feel like i havent done anything. Here’s your beautiful video of showing the beautiful dialog going “hi” “goodbye” (the video shows me enabling 2fa, viewing recovery codes and disabling it [with a recovery code]):"}, {"post_id": 47860, "ts": "2026-08-16T02:59:32Z", "hours": 10.5872, "text": "would you look at that, 10h… i love wasting time. Now THIS thing fetches some bits of data like the audit log, my passkeys, adding those and even modifying the username (you are forced to do it)! BUT big buty, i had to add the mr /signup/complete where you set your prefered username, like moon (its a me!), or else the backend will straight up refuse anything you want to do. AFTER changing it, you can do everything else a normal user can [by Default the username is just the user’s email AND THAT IS NOT PRETTY AT ALL >:(] FIRST OF all i grabbed my magic cup for tea and made the audit log page (it does not even have anything special)! .. oh right, for that i needed to know how the heck you even send requests with tanstack. so uhh,, blah bleh bluh wawa BOOM i now know how to call a method and get my data back AAnd even make infinite fetchers (IT kinda hates my way of giving data [its wrapped in {3} onion layers {request.data.data.data}, the ones that make you cry a bit]). i also synced my auth state with the tanstack client so it doesnt do two trips every time. okay now. TO make the audit log thingy, i did some beautiful matching so the type, creation and guy who did the action (probably the user) are actually human readable with a limit of 8 items (or else the /me page would be as long as this project’s crappy devlogs). When there’s more, a beautiful “view more” button appears (separate page). For this, so called “view more” page, i used the infinite queries. while at first i just puuushed the data into the dom with the #each (svelte thingy), chrome do be VERY very mad when there’s a lot of entries in there (The audit log, because it logs actions in your account, can get very huge. Because actions like the baddie Session action logs each time you log in or log out), SOO i did what someone whose browser is eating more than 10gb does, using a virtual list to render the it! (IT only renders items when they are visible, hidding [removing from the dom] non visible ones. this fixes the “OH gosh THOSE 200 things THAT I CANT EVEN SEE, ARE EATING MY precious ram”). OHh and you can press ESC to leave the page because i made a cool component that lets me plug in a callback for specific keyboard events :D. SECOND, the passkey stuff. yeah, pretty easy thanks to libraries like SimpleWebAuthn that do the hard work of telling the browser “hey, authenticate this guy please” or “hiya, registrate this passkey please”. its just querying what passkys you have to know… hwat passkeys you have and that’s it. BUT sadly, an actually sadly, my passkeys are non resident (I cant have a simple button to just login, I need you email before i can use the passkey). Thaaat means I havea teeny big tiny small user enumaration problemo becuase the backend can reveal that an user has a passkey registered and, in turn, we know that user is registered. a bad guy can just atack with “oh noes, your passkey has been stolen. pls give a undecillion of moneys”. third, i had to add the sudo page. It does what you think, reauthenticate to do sensitive operations like adding a passkey. Pretty simple, it redirects directly to an email code if the user does not have a passkey or totp enabled (email code is always enabled), if they have those, it just shows a selection screen. fourth, i had to fix up some stupid things with the api schema of the backend becuase I either forgot to put a body on the responses (like the passkey/webauthn routes) or just fix up a teeeeeny tiny setting thing that wasnt correct (its the webauthn/passkey rp_origin [allowed pages to register/use a passkey} becuase it jsut used the backend url and THAT is not correct). so tahat’s it, shall you see some stupid screenshots and not even a video because i havent even finished everything:"}, {"post_id": 44382, "ts": "2026-08-10T02:59:15Z", "hours": 6.0403, "text": "well hello again. space birb presents you the next devlog. I cleaned up the forms a bit (they are a still bit TOO messy ugly but they do work), REDID the ugly flags class to be a more EEEASIER TO WROK WITH (i dont even know how it worked before lol) and FINALIZED the auth pages! RIGHT right, first frontend. I finally finalized the most basic and empty and everything pages of the frontend! wahoo mee :). these pages practically include the otp one and the 2fa one (+ recovery).. and i just realized that i forgot about the passkey one, great so now it isnt finished (fried space bird thingy). Redid the pin component so it works with my Input form component AND also fixed some weired quicks of the pin component in phones (for some reason, my phone, didnt respect the max lenght of the input. i just sliced the value of the input on my max length lol). And finally, the frontend now has the most precious bit of any… i dont know. i just added the typical dropdown componetn for the avatars (yes, this was important for me). while on the backend, because mr past moon made some weired decisions, the 2FA recovery code generator and giver of the code the state was a messy mess that I frankly dont know if I even tested it, because it accepted wrong codes? i dont even remember if it worked haha in the past BUT now it works as it should and its at least better readable with normal method names (not plainly “recovery” [… what does that mean anyway!?? you would need to look at the code to understand it! and that’s bad]). ah, the typical moment has arrived, the one i always repeat. HERE’s your happily working auth pages for once, plus the “want to retry the email sending?”, the passkey one is still missing but that’s just slapping some paint (and painting my self) and boom (whhile this is practically the same as the past devlog, it just works better than the past devlog lol):"}, {"post_id": 43668, "ts": "2026-08-09T01:58:51Z", "hours": 10.3242, "text": "would you look at that! Finnaly some functional pages with forms, ALmost finalized components… oh they are just the login pages….. and its not even all of the auth pages, just selected ones so the auth flow barely works. BUT, THIS fLuffy (not fluffy) space bird has finalllizated converting (or thinks) the classes i had as global styles into beautiful svelte components with all those stars and happy things. happily, i am longer limited by having evertyhign in global space.. oh right, RIGHT. i wasnt even limited :). AND the coolest compponent of all of them is the spinner one because it spins. The first pages have been plugged into an outlet called SuperForms (not really super, mostly helping to validate)! thanks to that, we now have working forms that post to the backend! with all those classic things, red colors and form validation. but, how I THE unfluffy space bird is pushing envelopes with the form inside of it? by talking to my backend obviously! but not manually (doign every step each time manually), by using a library like the trusty openapi-fetch that eats the openapi schema of the server i used in the past iteration. BUT i trashed it into the.. trash because I was fed up by having to repeat a thousand times the same snippet of code in each form or even page (I could have used a service like class to make it easier tho!). it was swapped by Orval! Orval works with the same openapi schema BUT gives methods! No more repeating the same things, just use the method and boom. and also that openapi-fetch was mad that i used a more recent typescript version. ANND, finally, the auth context was upgraded with a leg made of clay so it can now parse the BITENUM flags of, for example, the user (UserFlags) that tell what is enabled and what is not, if you didnt remember. Its practically a generic class with everything that i considered necessary that must be extended to be able to use it. and that’s it. you may watch the shittiest video ever that just shows that it kinda works with the forms and logging in and that’s it with still mocked things:"}, {"post_id": 36040, "ts": "2026-07-27T21:16:15Z", "hours": 6.8131, "text": "haha 10 days later. no progress just me rambling and going in circles. I am a bad space birb. RIGHT! I just were converting the css stuff into svelte components using the style tag (and the preprocessor duh). That’s actually it, quite literally. No progress at all. Wasted time on, still, falling on the loop of trying to get something that “looks good”, but i dont reall know what i want in reality. ofc i try to get “inspiratainionion” from other websites and try to mix them together to then dislike the result, undo and rinse and repeat (at this point my fur and feather soaked hard on water). YOu may imagine it as thinking that you ahve a finish line when you done even know where it is. i will just try to make the frontend work first without thinking about the design… AND i cant even promise THAT! because i will probbaly spiral into the same loop once again (saying oh this looks bad blah bleh bleh). god i am bad at making frontends or evne design or everything, but thats how people learn haha. it is a lesson that i should learn from now on.. i keep judging my work too harsly but i dont know. frontend is just harder for me. here’s the useless non functional three pages that atleast have something layout:"}, {"post_id": 30020, "ts": "2026-07-17T08:27:04Z", "hours": 1.9356, "text": "in the end i gave up in the design or well… can you even call it “design” when it was ugly even at teh start? yes, i tried my best at making it look “good” in my own eyes but i could not for the love of birds. it was bad anyways, like actually bad. I, to make it easy for my self and be able to copy how other people do it because i am a lazy bastard (stupid space birb that klanks its keyboard for nothing), will be using the typical two columns for each section. One for “what the heck is this section for” and the other for the actual content (wow). man, i hate how the frontend is where i struggle the most when the backend should be where i should have struggled the most, not with this dude. agh. I also hate HOW i thought the layout i wanted initially was the best one and that i look great when in reality it was an aberration that didnt even look good and it really threw to the trash the unused space bruh. it just wasnt for this job, maybe for something else.. idk haha, what I know is that I think it already looks better with the simple sutff ive done lol [that’s sad btw :)]. as you may see int eh screen shooting, the audit log section instead of having a table it uses a… placeholder for a button with the same content it has currently because I frankly i am scared of making tables because of the probable difficulty i will have (because I am already struggling with teh simplest of things!). ALSO, i need to stop making .scss files, compounded into a single css file using @layer and @use , to just use svelte components that use the style tag. it really doesnt change anything, but atleast i wont be doing “class=‘meow’” each time i want something, just using “” is half better lol (doesnt really fix anything, I just want to give use the svelte components). finally, i am planning to use “services”.. they arent really services but more about wrappers around the openapi client. less manual labor for some shitty stuff that i wont need to do anymore. Still, its just a wrapper with nicer method names and namespaces. (also, ill be adding profile pictures. didnt think i would be adding them tho) here’s the typical dumb screenshot of what i think that looks “good” without doing that much work:"}, {"post_id": 28705, "ts": "2026-07-15T03:47:05Z", "hours": 8.9958, "text": "i am ashamed. i am that bad or… well ive gotten to the point of real badness and what some call “skill issue” because I CANT make this hecking frontend. its just too hard, i am just way more slower than before and what i though i was. i hate that i am not usign tailwindcss and isntead I am building my own scss styles IN @layer when i could have been using svelte components with the style tag but ugh bad decisions that can be still reverted i guess. For the layout of the settings, i even tried copying how I did it in the last iteration of this frontend (past server, not named meow auth).. i just did not like it because using a sidebar for this teeny tiny amount of information is wasteful (like this tiny [not really tiny] space birb). Like the content is just the typical name, email, auditlog, 2fa, passkeys, sessions, oauth authorizations and user created oauth apps AND lets not forget about the admin panel. i am practically suffering with mundane crap that anyone can have done in probably 10 minutes by asking mr claude or even chatgpt OR even just copying an already made layout, but here i am suffering trying to make stuff my own way, telling my self that this was the worst decision i’ve made goddamit… at this point i will really become a hotpot space birb soup.. i just need one layout made and then it should be an easy job to then copy and paste to other tabs. then the enxt step is to wire it up the forms and have it communicate to the backend which should be an easy task (i think [… oh god please be easy])… i know this entries of the frontend will make my project go into deflation mode and stuff, and i even broken a promise that ive made my self to not make devlogs that are more than 5h long because of a review someone made of my project when i submitted it unfinished to flavourtown (yes, flavortown) which is sad but it is what is. you cant be perfect, that’s why i have a shit hecking design. i am just bad, a bad space bird i guess. i already rambled too much in this suppossedly simple devlog. here’s your half crap “inspiration” that I used to (quite literally did a C&P of the page) of my past proyect using a sidebar (not what i want with this iteration) and the current state of art of my REALLY REALLY SHITTY curernt state page:"}, {"post_id": 25277, "ts": "2026-07-09T13:32:20Z", "hours": 10.9092, "text": "hi hello. oh, ive been 10 hours doing the same thing!!1 god. So, I was doing the frontend design without using figma and uhh yes. And also removed the ability to use your login to.. login to the app. You just use your email (otp, and passkeys). First, I forgot how to use figma, I only remember some shortcuts. I was going to use it (for frontend and logos) but seeing how struggled to make simple things, I only used it to swap the colors of the logo of MEOW AUTH, hmm yes, very meow. . The frontend stuff… I frankly ALSO do not remember anything.. or well I do now remember some things thanks to me fighting to uncenter a div hah. The stack is practically svelte, as always, client rendered and scss (sassy :o) for the styling. In the start I was just going to use the same styling and structure of my first iteration of this project, beepauth (ew), and after doing all of that I thought “god, this looks pretty bad”, soo I then tried to make it look a bit better WITHOUT starting from zero again. And I did style it a bit better but I didn’t even like it. Like it felt like I hadnt even advanced at all, like if the same shitty fricking backend was the same from the past (probably noone would care because probably uhh noone cares.) [brains a weired and even more mine i guess, wawa]. So, naturally, i did the less sane thing, REDOING EVERYTHING again. Had to watch tutorials to relearn how use sass and picked up also some new css stuff that I wont even use (minus the layers! that pretty cool!!). And from that css stuff I discovered Oklch.. yes i swapped my whole color palette to that using their harmonizer that uses the equivalent of WCAG, APCA (contrast bg to text!). At least the frontend now looks decent (or the first blocks fo the website). sadly the only frcking shitting heckign parts ive made are the login (and register BUT THATS THE SAME). AWIT WAIT WAWA, I also swapped some gears in the BACKEND! I removed the login (username) entirely, now its just demoted to a non unique display name (for openid!). you must be asking why, because I changed it to use the login not long ago. Well, because I don’t have to force a user to give me a username AND their email on signup. Its easier to just give the email. And if you already have an account and hit, without knowing (our typical autopilot mode), the signup page, I can silently make a AuthChallenge for login instead of signup because both handlers return the same result. Then, after registering, I just force you to set a display name (by default its just the email, i could leave it like that but currently I want it to force you set a custom display name for OPENID). By doing that, I practically removed the “vectors” (ooh hackiry stuffiry) for user enumeration [those vectors were the endpoints to see if a login (username) or email was already taken] (I also made so the login endpoint gives you a fake challenge id when the email doesnt exist {This works thanks to having the auth exchange handlers return “invalid code” even if the challenge doesnt even exist}). here’s your screenshot of a login page that looks exactly like very other login page, maybe even shittier (sorry i am bad doing these kinds of things.) [also you have the logo colors, i went with purple because it looks cool and its a cool color] {the “Psst, over here” its just a random greeting, just like the ones i have in the emails} [[sorry for wasting 10 hours doing nothing]]:"}, {"post_id": 23063, "ts": "2026-07-05T20:02:59Z", "hours": 0.3025, "text": "a. hi there mr svelte! I was wondering if I should be drafting first a design in figma but meh. I like to suffer and make bad designs that progress very slowly to look mediocre at best! yay!1!! anyways, ill be using scss as always (i frankly done even remember anything about it lol) and sveltekit. HERE’S YOUR stupid “hello world” from slevetkt (reaaly useful devlog):"}, {"post_id": 22522, "ts": "2026-07-05T01:24:44Z", "hours": 0.3122, "text": "oopsy. shoooort one, sorry. I added the forgotten oauth error StatusCodes and Descriptions. there’s not much to it lol, I just forgot about it. as always, here’s your even uselesser screenshot with code taht you can already see in the guthub:"}, {"post_id": 22514, "ts": "2026-07-05T00:59:48Z", "hours": 1.7131, "text": "right, its a me! the teeny tiny waist sized space birb that is here to tell you that I added the ratelimiter! It works just as i’ve explained in the last entry, it uses the IP of the user to limit the amount of requests via a ticket bucket. THe bucket is stored in memory, as again said before, so if the instance is restarted, goodbye ratelimits. EAch request eats 1 ticket AND the bucket tickets and refill rate can be set via the… middleware. who would have known wow. It always adds the typical “x-ratelimit-limit” bleh bleh bleh with all the info you can like that is useless BUT hey, its there for you. I like making my own stuffies because its cool. THe root has a limit of 500 requests, refilling after 1 second. While the auth routes have a limit of 10 (sudo) and 20 (auth flows) requests, refilling after 1 minute. The other routes are just uhh protected under the umbrella of the root ratelimiter lol, no need for having to add a ratelimiter to every single route (god). that’s it. there’s no more devlog. Now what i gotta start doing is the frontend. I will cry a bit because I am VERY very VEEERY rustified in the typescript department like I never touch it but meh I MUST do a frontend or else this is incomplete… and i will do be crying if i send it off in a incomplete state. THE frontend will be in svelte kit, because its cool and ive already used it in the last iteration and it left me with a good taste in my forked tongue (hahaha, i am space birb) AND thanks that Ive been using from the start utoipa to add an openapi schema, I can use it easily to make requests from the frontend! and i didnt need to suffer adding them after everything was done just like in the past iteration! here’s your useless screenshot showing teh ratelimiter working and the headers and stuffies… god i am a mediocre at best writting long hecking devlogs for nothing:"}, {"post_id": 22325, "ts": "2026-07-04T18:52:19Z", "hours": 1.4481, "text": "wow. that’s a long time doing nothing. I just updated the deps, tera had a change on its templating because it was rewritten from the ground up. pretty cool, now it kinda looks like jsx and at the same time not. I also tried or well… I am thinking about making my own ratelimiter but was like, ugh. I was practically mega blocked on the idea of wanting a ratelimiter that used the IP + UserId. Both are easy but for some goddamn reason I kept going circles and circles and honestly I dont even remember why anymore, like huh!? In the end I will only be doing ratelimits via IP because they are the easiest AND THEY DO NOT NEED TO be stored in the database. yes database, you read it right. IN this version of my backend I wanted to use the least things AAANd the oNly thing required is just the database to make everything. Adding redis would be waste (and waste of ram) for just storing the ratelimiter. Redis would be required if I wanted to run more than 1 instance of my application AND IF i wanted to distribute the info about “oh this guy is grounded, no entering the meow auth realm for 5 minutes” to all other running instances. BUTTT, as you might not see, I dont want to run more than instance nor want to distribute it to more instances if it were the case that I wnted to run more than 1 instance. Soo, I went in circles in my crapppy bird brain because to add ratelimits via the user id I would have to store the info somewhere that wouldnt be erased (like in the in-memmory storing that i will be using) or else the ratelimits would be useless because… THEY WOULD BE ERASED from this whole realm when the instance is restarted (memory goes boom to the void, so does the ratelimiter). That’s why I want to just implement the Ip based one, its the easiest one and the only one that I don’t care about loosing the information about the ratelimits when the instance is restarted. Also, i need to implement it yet lol i was just scrambling my head nuts and bolts hearing them clank while trying to ratchet them. ALSO², i need to redo the email stuff because my brain has came up with a cool design lol but first gotta do the frontend to make it uhh look good before suffering making the email components. I also started to hate the tera zed language extension. its crap. bad crap the worst one. ALSO, here’s your really useless screenshot this time showing code that you can already see on the github page (yay!1):"}, {"post_id": 20456, "ts": "2026-07-02T01:37:49Z", "hours": 5.1653, "text": "hello again, its a me, a random space birb that is here to tell you that I completly forgot about the ratelimiting stuff. BUUT, I added the admin methods and UserFlags to be able to set… flags. not much rodeo this time. had to think how i wanted the audit logs to work for the admin stuff. I first though about just having a bool saying “ah yeah admin” but meh, I think its better to have also an “actor_id”, the who did it user id, and boom. In the user side handlers for the audit log I just return the typical plain response of “yeah this was changed” (not sql joins, cheaper [?]) but in the admin side, I return the actor_id with some other things like the user login of the actor AND the user login of the user that was changed (cause why not!? its jsut another join statement in sql). Works wonderfully and even better now because before I had setup the user audit log to fetch AAAL the entries form the db and pee pee poo poo no, now that i have my paginated stuff, no way! SOO, the admin methods are just the typical ones, see what the user has changed or an admin changed from an user via its audit logs, the oauth applications and authorizations management and that’s it. I will probably also add a way to know globally what the heck is being changed but idk about that, seems a big sql query (that is tiny but very costly in db terms) and I frankly want to avoid that… and even more avoid using redis because i hate it and that SOMEHOW i have better some beautiful organized code vs the first version of this backend where I used the typical DB+redis aaand it was ugly . i hate that. I also added the UserFlags to be able to set flags like “is the user an admin?” or “is this user allowed to manage its oauth applications?” and so on. Pretty cool. BUUT as always, I had to C&P some code (almost all of it) from past handlers to make the admin handlers work lol. I would really want to make a central place to put all the common handler code but meh. IT WORKS! and that’s what matters. THe next things are just making the ratelimiting WHICCHC probably will be only inside the instance the user is reaching and that’s it. I would like to have global ratelimiting using the IP of the user or its account id but that would (i think) require redis… I really need to think about this because someone with a crappy toaster can make explode my poor baby vps. ps. god do I really take that much time doing stuff? god i am slow at coding. i am bad goddamit. that’s it. shallllll you see my shiitty api docs with the admin stuff and admin auditlogs becuase why not:"}, {"post_id": 16949, "ts": "2026-06-27T14:57:54Z", "hours": 2.2208, "text": "hi and welcome to my unreadable journals. I added those oauth authorized applications management handlers that I forgot to add yesterday, like the typical “oh let me see what scopes does this thing use… OH GOD IT CAN SEE MY fur color I MUST revoke it NOW!11”. Then I moved AAAL the handlers that touched ME user data to the.. obvious /me route so its prettier and doesnt pollute the air of the real auth related things. and did some cleanup in the http error department by merging some repeated errors. god this is one of the shorter entries i’ve made i think. next up is doing ratelimting, probably roles or just an admin api and the “hey your account has been locked because of repeated tries to login”. i dont even know what will it take to make tests work god. here’s your shitty screenshot showing my only progress, the oauth management bleh bleh bleh:"}, {"post_id": 16427, "ts": "2026-06-26T18:44:11Z", "hours": 3.4175, "text": "hi, hello i am space birb in the sad corner and i am here to tell you that i added the the typical oauth management handlers that everything has. I also added a generic paginated database thingy to be able to make… pages when there’s more than 20 items (rows). firstly, everything was easy. yes, no rocks not nothing that could set me on fire… minus that I HAD TO MAKE a paginated database thingy. WHY did i make it? idk man, i wanted because my bad coder brain thought that maybe someone could have more than 1 oauth application created (like a thousand) and that’s pretty bad for mr blue elephant database becuase that means eating 1000 rows in one go (and blue elephant doesnt like that, AND EVEN less if my vps has 1vcore and not really that much ram). SO, the best course of action was to make pagination to be able to cut in pieces the data and make it easier to load and handle.. even though the loaded rows are hardcoded (its 20 plus 1). The pagination practically works by seeing if there’s more data after 20 items (that’s why it has a “plus 1”!), if so, we take the LAST item’s id (using a trait to access it, because you can’t really know in what form or what id will be used in any database model) in those same 20 items to set the ‘next’ param. That ‘next’ param is used to.. quite literally say “hi, uh could you give me the next rows after this id pretty please?” and boom works and i didnt set my self on fire but i did ruffle my feathers a bit because of. Ill probably implement it to more places because the only places that use it are the oauth applications and user sessions because i am a bit lazy haha (i mean, its just C&P the current find_many* and use the pagination stuff and caboosh). oh god, i forgot about the oauth consent management. great job me, NOW IT ISNT COMPLETE “everything” great coder i am great big bird brain. My next plans are just to do some general cleanup with the openapi schema, add comments to the code and then start doing the frontend in mr sveltekit.. although i am too rusty in ts land and i will have to learn some stuff again and touch again scss and stuffies and god, i am going to get cooked in the sun and roasted like the space birb i am because of me no longer touching anything javascript. here’s your really useless screenshots showing the INCOMPLETE oauth management handlers and the pagination thingy working:"}, {"post_id": 15504, "ts": "2026-06-25T06:20:57Z", "hours": 1.2603, "text": "I made the User Info handler for the open id stuff. that’s the end of it. It works, wahoo my self yay good job, even though you had pretty much bad scrambled code, you did it hahaha. It practically, as the openid spec says, returns the claims used also on the id_token. Soo, because its sooo close to the id_token, i’ve decided to just eat the that same id_token but spit out a converted version with things I want. I also added the typical OauthManager and RequiresOauth. the latter one not having a param to decide what scopes you want because, whhy would you want that?! its just a one liner and it may change for each hecking endpoint or even the data the endpoint returns. its just over complicating it with wrapped trash. … and about my devlogs, i realized that mine are pretty bad and not interesting like other people’s devlogs. i simply write weird and long ones. but i don’t want to write a simple “I did this, commits, hardness of implementing, whatever” in bullet points like other people do. i dunno it feels flat like this devlog. Here’s you typical SINGLE screenshot showing that the user info works, that’s it:"}, {"post_id": 15052, "ts": "2026-06-24T13:25:06Z", "hours": 6.1178, "text": "oh hi, did not know that you are really reading this. I added the openid stuff! Well not all of it, I still need to do the ‘userinfo’ endpoint but meh, it works as it should. I also added the cool JWK (the secret key [ES256] that is used to sign the JWTs) rotation stuff, which I can say that I tried at first over complicating it to then end up simplifying it because it was A HELL to use like you had to call a thousand hecking things or in one method give a thousand arguments (its an overestimation, probs not real [shy of 5, it wasnt generic, it was attached to the token flow] :3), it was a pain to use and IT EVEN GAVE ME a burn mark. As I said, I just redo’d everything and boom, simplified thigny you just call from the global state and boom, we do be working! The JWKs are rotated every 2 months, and the old one is retired at the same time. After 1 month, the retired one is deleted. So, at any given time, there’s a maximum of 2 keys, the current one and the retired one. The retired one, as the name implies, is not used to sign new tokens but is still valid to verify old token. And all of this is fetched at startup and then via a scheduled job it is updated. AND as you might have (NOT) guessed the JWKs are stored in the database, so if you have multiple instances of mah meow meow server running, they all share the same JWKs and rotate… OH GOD THEY DO NOT ROTATE THEM AT THE SAME TIME GODDAMIT AAAGH.. the intention was there okay? I did that to, in one part, give more use to my job manager and, to let all isntances update at the same time but big brain me did not think that a job is always locked to the instance that picks it up. also the token endpoint now supports using openid and spitting out a ‘id_token’ with the user info (some claims are gatekeept behind the scopes [like ‘profile’ or ‘email’ duh]). that’s it actually, like i started really pulling my hair, fluff, feathers whatever because I was trying to overcomplicate it a lot and i really dunno why. like, for another example, i kept swapping from the ‘jsonwebtokens’ and ‘compact_jwt’ crates because I wanted to use ES256 but didnt want the other because i never used it but then ended up using the latter because it was easier, and then that I wanted to use EC25519 which is apparently not really talked about in the rfcs (that’s why i ended up with ES256! [also supported on compact_jwt]). AH! and also in the job queue, for the JWK rotation, I wanted first to add cron job for that but… why tho, I don’t really need it, I just need a way to NOT run a job until a specific time and then reschedule it inside the same worker. here’s the shitty screenshots showing the oh wow ‘openid configuration’, oh wowie ‘it does output tokens and id_token’, oh thats nice ‘it does give out a valid jwt with valid claims that the programmer didn’t even do themselves because they used a library called compact_jwt’ and wow ‘it does have a job that tries to autorotate if the current key is older than two months’:"}, {"post_id": 13022, "ts": "2026-06-21T09:21:29Z", "hours": 1.6031, "text": "you know? i love debugging my code when the error was the entire time in the db. great job me!!!! I’ve made the token handler. again, as other devlogs, that’s all folks. Stupid me couldnt figure out why client secret was always bad, why the mr code verifier was always bad when it was the same as the stored one aaand why the heck scopes werent showing. i really do love that my code, practically, worked first try (MY CODE >:3). But did NOT love that i am still stupid and forgot that i had a database that works as the house for the data that my app ingests. god i am smart. time to go suffer with openid i guess. i have to touch jwt and stuff, eugh.. i like my opaque tokens more than jwts, because IF you want to revoke one of them you still HAVE TO STORE A LIST OF IDS… that defeats the whole hecking purpose dude, not worth it (or that’s what i think for now, smh i am just a space birb claking at keys). here’s your video that shows that it does work and gives the bearer opaque token and creates the db entry:"}, {"post_id": 12940, "ts": "2026-06-21T05:37:44Z", "hours": 4.6994, "text": "yayy! the first step of making oauth2 alive has been made. I rewrote the tiny part of the authorization handler of the oauth2 flow… there’s not much to it! It did took a while to reunderstand it because of how long I wrote it (2 months ago) and that I wrote it in a rush (and didn’t even make it work). Basically, the same as always, traceback to try to understand what past me wanted to do, to then rework everything (or at least try) to unspaghettify those radiative peaces of code. So, practically it only the authorization method was half done and ugly, it was a big BIG monolithic method that did everything in a way that either past me or current me like at all because it takes a whole lotta things to work (8 to 9 argumentos lol). In the end i just splitted the big MONOLITHIC (thick) method into two of the same kind but with at least clear and defined and bleh jobs. One when the user has already authorized the client and the other when he has never touched it in its life. I also did some qol for my self (or i think i did, probs not because it was already bad and rushed and stuff… i already said it at the start) with the oauth helpers and stuff by also prettifying them and simplying parts that I really don’t know why I added. Like I added mr “OauthResponse” which, as the name implies, makes the oauth response (redirect, plain error, error with redirect) instead of the 3 different methods I had to use to do the same thing, easier is better (and even understandable!). Ah, and i even tried to use strum but nope, it do not cut the job (it tries to cut the wall instead of the thing i want). NOW, sHALl the work continue to make the token making handler and then the OpenID stuff that may be a bit difficult because, with my shitty reading, i think ill have to juggle making jwks and stuffies to server correctly the food for the picky openid. here’s the video that shows, confusingly, that indeed the handler works (It does a “hi, oh you want to authenticate with ‘poop’, let me create a pending authentication. Oh! you accepted the consent, let me delete the pending one and create the actual lasting consent for ‘poop’.). god, i am so bad at coding or whatever the this is:"}, {"post_id": 11753, "ts": "2026-06-19T04:14:50Z", "hours": 2.2278, "text": "AAAH, sorry, did i startle you? I added audit logs, a health handler (a simple “OK YES i am alive ) and a root info thingy that tells you “okay, so my name is this, mmh yes, and this is my version and my build stuffies…). the audit log thing was not really a pain to add. At first i was thinking of using my job queue (because ITS only use is for emails… and i put my sweat and tears to making it pretty to then not being used lol) but.. why tho, like IF you see how was the code before the audit log adavancement (yes, cement) you can se HOW every action runs already a postgresql transaction. So, why not bundle the audit log adding magic into that same transaction? and so i did. Now, we don’t have to track our selves with pencil (i dont like pens) and paper the actions we do, we just let the application do it for us… leaving a paper trail of our desastrous actions. yay… now that i said that, i should add a random chance of also adding another audit log entry that is just a random “hi, i am your audit log talking”. hah that would be funny. btw, strum is not cool. I thought i could use hte EnumString thingy to make it implement automagaicallytationally the Display trait to snake_case but NOPE, it is used backwards. You give it a string and it gives out the enum variant. what a pee pee poo poo dude, imagine having a big monstrous enum and having to implement Display for each variant… just like the monolithic error enum of the http site… ew. to use it you just sprinkle the audit::log() and boom, done. AAAAAAH, did i scare you again, no? yay. I almost forgot (<- totally) to say that… i think THIS IS really the last thingyes before the oauth stuff. i really think i am going to burst into flames and become a cooked space birb… kfa (i hope you get it [its a acronym of a whole word {also, hi and thank you for reading this long journals that may be very boring or unnecessary to read}])"}, {"post_id": 11100, "ts": "2026-06-18T04:45:50Z", "hours": 4.8661, "text": "ah, beautiful api docs. I reworked the api docs (because they were a messy mess because of my past laziness [not understandable!!]) and now they are organized in pretty folders (tags) with correct descriptions and titles. now its even helpful to read the api docs to understand how to use a api handler, not having to dig into the code [noone does that :(] right, I DID THE EMAIL CHANGE THING and LOGIN tooo wohooo…. yeah it isn’t that amazing lol. at the start i was just thinking about using the typical chacha encryption that ive used for the TOTP stuff but for a random token nanoid’d… you just don’t, hMAc is fine. Ended up with a dual like verification flow where both the old email AND the new email get a token link (well, now it just the token string because, ahem, i dont have a frontend). both have to be verified before the change goes through. sooo, no more “oh noes, not again, someone got into my account and changed the mail to their own, smh”. then you just get the notif saying “hey, your email has been changed”. SEEECOND, login (your username) changing magic that is way simpler because I just check if you have sudo enabled and that you havent changed it in the last 24 days (why not). Just like with the email stuff, you get a notification saying “yay, you changed it!”. and I think that’s the last of the tiny stuff i wanted to do before the BIG and PAINFUL oauth stuff. i think i am going to burst into flames and go boom and the floor is covered with dust and feathers. OH wait, i sitll need to do account deletion… whatever its just a simple “hya you need sudo”, “are you sure about this”, “ok, bye” flow. meh. i also need profile pictures… heh backblaze or maybe cloudflare idk i like backblaze more but uhh I GOTTA RESEARCH OKAY!?! shall you see the probabaly useless screenshots that atleast show the tiny progress that i always do. great"}, {"post_id": 3935, "ts": "2026-06-07T02:04:58Z", "hours": 3.2119, "text": "beep bwap. firstly, what a waste of argon2. I was using it for encrypting the otp codes and.. dude, that’s like its just 6 characters. I just swapped to the typical hmac256. I also made a common cookies helper method to not have 2 (or more) instances of the same cookie making method. uhh, also I adde dhte forgotten passkey management handlers… and that’s it. OH WAIT, i also added validation! I mean, its pretty rough and very bad but it works for what I want! I, in theory, was going to use Garde for the validation with axum-valid to provide me with the base stuff. I DID NOT WORK, like I had (and still have) to make a wrapper around their sutff so I can send out my own error messages and not some plaintext like before i handled them. right, it did not work because of something called the “Context” … I tried everything to make it work, but I just could not, not even doing workarounds and C&P examples directly and stuffies, it just would not work like it wanted the global context to have a trait implemented, which I did, but it still would not work. I guess its because to use my global context inside axum, i wrap it around an Arc and maybe it didnt like that? or whatever meh wa. I just swapped to using Validate, and ta-da works as it should. HERE’s your badly made screenshot showing the crappy validation messages (they just say: “this field is bad :(”)"}, {"post_id": 3560, "ts": "2026-06-06T15:40:12Z", "hours": 0.8356, "text": "added a better way to handle required authentication!… middleware. yup, i am very creative. it’s practically a qol improvement in the development side, making code look a bit nicer without seeing in every single protected route the same 3 lines to check if the user is authenticated. now i can “enforce” it when I want the user to be reallly unauthenticated to use a route. to use it, you just “add the middleware and maybe move one flag” and that’s it… goddamit I should have had that before to not write a heck ton of “if not authenticated or if authenticated…”. i am trying to delay the inevitable.. the need of making the oauth side and the frontend ;D"}, {"post_id": 3518, "ts": "2026-06-06T14:25:42Z", "hours": 3.6319, "text": "I started using a master key for everything and fixed the server returning a plain text message when parsing goes wrong. FIRST, I have seen the future and the future says that I WILL be suffering if I have more than 2 secret keys to manage when I can just derivate them from a single master key. AND EVEN rails does that! its just blake3’s key derivation with a xor to fill the remaining bytes that some libraries require. it works pretty great. neat. SECOND, this was a problemo that one of the flavourtown (yes flavour not flavor) reviewers made me notice. When you send a malformed json body, like a new line on a field that really doesn’t expect a new line, the server would plainly return a error message in plain text, which is really bad for the client to handle and even for looks. Sooo, I tried fixing it trying to strap a error handler to axum… yes I dont even know if that even exists bruh. In the end i just created a newtype that wraps the original Json extractor from axum to catch its errors and THEN and only then wrap those with my own error messages. And bob’s your dad, the server now return a json error message like every other route error. shall you see the useless screen recording (its cropped by stardance’s ui, great)"}]...
|
Title: meow auth by @moon | Stardance
Devlogs:
I Title: meow auth by @moon | Stardance
Devlogs:
I started using a master key for everything and fixed the server returning a plain text message when parsing goes wrong. FIRST, I have seen the future and the future says that I WILL be suffering if I have more than 2 secret keys to manage when I can just derivate them from a single master key. AND EVEN rails does that! its just blake3’s key derivation with a xor to fill the remaining bytes that some libraries require. it works pretty great. neat. SECOND, this was a problemo that one of the flavourtown (yes flavour not flavor) reviewers made me notice. When you send a malformed json body, like a new line on a field that really doesn’t expect a new line, the server would plainly return a error message in plain text, which is really bad for the client to handle and even for looks. Sooo, I tried fixing it trying to strap a error handler to axum… yes I dont even know if that even exists bruh. In the end i just created a newtype that wraps the original Json extractor from axum to catch its errors and THEN and only then wrap those with my own error messages. And bob’s your dad, the server now return a json error message like every other route error. shall you see the useless screen recording (its cropped by stardance’s ui, great)
added a better way to handle required authentication!… middleware. yup, i am very creative. it’s practically a qol improvement in the development side, making code look a bit nicer without seeing in every single protected route the same 3 lines to check if the user is authenticated. now i can “enforce” it when I want the user to be reallly unauthenticated to use a route. to use it, you just “add the middleware and maybe move one flag” and that’s it… goddamit I should have had that before to not write a heck ton of “if not authenticated or if authenticated…”. i am trying to delay the inevitable.. the need of making the oauth side and the frontend ;D
beep bwap. firstly, what a waste of argon2. I was using it for encrypting the otp codes and.. dude, that’s like its just 6 characters. I just swapped to the typical hmac256. I also made a common cookies helper method to not have 2 (or more) instances of the same cookie making method. uhh, also I adde dhte forgotten passkey management handlers… and that’s it. OH WAIT, i also added validation! I mean, its pretty rough and very bad but it works for what I want! I, in theory, was going to use Garde for the validation with axum-valid to provide me with the base stuff. I DID NOT WORK, like I had (and still have) to make a wrapper around their sutff so I can send out my own error messages and not some plaintext like before i handled them. right, it did not work because of something called the “Context” … I tried everything to make it work, but I just could not, not even doing workarounds and C&P examples directly and stuffies, it just would not work like it wanted the global context to have a trait implemented, which I did, but it still would not work. I guess its because to use my global context inside axum, i wrap it around an Arc and maybe it didnt like that? or whatever meh wa. I just swapped to using Validate, and ta-da works as it should. HERE’s your badly made screenshot showing the crappy validation messages (they just say: “this field is bad :(”)
ah, beautiful api docs. I reworked the api docs (because they were a messy mess because of my past laziness [not understandable!!]) and now they are organized in pretty folders (tags) with correct descriptions and titles. now its even helpful to read the api docs to understand how to use a api handler, not having to dig into the code [noone does that :(] right, I DID THE EMAIL CHANGE THING and LOGIN tooo wohooo…. yeah it isn’t that amazing lol. at the start i was just thinking about using the typical chacha encryption that ive used for the TOTP stuff but for a random token nanoid’d… you just don’t, hMAc is fine. Ended up with a dual like verification flow where both the old email AND the new email get a token link (well, now it just the token string because, ahem, i dont have a frontend). both have to be verified before the change goes through. sooo, no more “oh noes, not again, someone got into my account and changed the mail to their own, smh”. then you just get the notif saying “hey, your email has been changed”. SEEECOND, login (your username) changing magic that is way simpler because I just check if you have sudo enabled and that you havent changed it in the last 24 days (why not). Just like with the email stuff, you get a notification saying “yay, you changed it!”. and I think that’s the last of the tiny stuff i wanted to do before the BIG and PAINFUL oauth stuff. i think i am going to burst into flames and go boom and the floor is covered with dust and feathers. OH wait, i sitll need to do account deletion… whatever its just a simple “hya you need sudo”, “are you sure about this”, “ok, bye” flow. meh. i also need profile pictures… heh backblaze or maybe cloudflare idk i like backblaze more but uhh I GOTTA RESEARCH OKAY!?! shall you see the probabaly useless screenshots that atleast show the tiny progress that i always do. great
AAAH, sorry, did i startle you? I added audit logs, a health handler (a simple “OK YES i am alive ) and a root info thingy that tells you “okay, so my name is this, mmh yes, and this is my version and my build stuffies…). the audit log thing was not really a pain to add. At first i was thinking of using my job queue (because ITS only use is for emails… and i put my sweat and tears to making it pretty to then not being used lol) but.. why tho, like IF you see how was the code before the audit log adavancement (yes, cement) you can se HOW every action runs already a postgresql transaction. So, why not bundle the audit log adding magic into that same transaction? and so i did. Now, we don’t have to track our selves with pencil (i dont like pens) and paper the actions we do, we just let the application do it for us… leaving a paper trail of our desastrous actions. yay… now that i said that, i should add a random chance of also adding another audit log entry that is just a random “hi, i am your audit log talking”. hah that would be funny. btw, strum is not cool. I thought i could use hte EnumString thingy to make it implement automagaicallytationally the Display trait to snake_case but NOPE, it is used backwards. You give it a string and it gives out the enum variant. what a pee pee poo poo dude, imagine having a big monstrous enum and having to implement Display for each variant… just like the monolithic error enum of the http site… ew. to use it you just sprinkle the audit::log() and boom, done. AAAAAAH, did i scare you again, no? yay. I almost forgot (<- totally) to say that… i think THIS IS really the last thingyes before the oauth stuff. i really think i am going to burst into flames and become a cooked space birb… kfa (i hope you get it [its a acronym of a whole word {also, hi and thank you for reading this long journals that may be very boring or unnecessary to read}])
yayy! the first step of making oauth2 alive has been made. I rewrote the tiny part of the authorization handler of the oauth2 flow… there’s not much to it! It did took a while to reunderstand it because of how long I wrote it (2 months ago) and that I wrote it in a rush (and didn’t even make it work). Basically, the same as always, traceback to try to understand what past me wanted to do, to then rework everything (or at least try) to unspaghettify those radiative peaces of code. So, practically it only the authorization method was half done and ugly, it was a big BIG monolithic method that did everything in a way that either past me or current me like at all because it takes a whole lotta things to work (8 to 9 argumentos lol). In the end i just splitted the big MONOLITHIC (thick) method into two of the same kind but with at least clear and defined and bleh jobs. One when the user has already authorized the client and the other when he has never touched it in its life. I also did some qol for my self (or i think i did, probs not because it was already bad and rushed and stuff… i already said it at the start) with the oauth helpers and stuff by also prettifying them and simplying parts that I really don’t know why I added. Like I added mr “OauthResponse” which, as the name implies, makes the oauth response (redirect, plain error, error with redirect) instead of the 3 different methods I had to use to do the same thing, easier is better (and even understandable!). Ah, and i even tried to use strum but nope, it do not cut the job (it tries to cut the wall instead of the thing i want). NOW, sHALl the work continue to make the token making handler and then the OpenID stuff that may be a bit difficult because, with my shitty reading, i think ill have to juggle making jwks and stuffies to server correctly the food for the picky openid. here’s the video that shows, confusingly, that indeed the handler works (It does a “hi, oh you want to authenticate with ‘poop’, let me create a pending authentication. Oh! you accepted the consent, let me delete the pending one and create the actual lasting consent for ‘poop’.). god, i am so bad at coding or whatever the this is:
you know? i love debugging my code when the error was the entire time in the db. great job me!!!! I’ve made the token handler. again, as other devlogs, that’s all folks. Stupid me couldnt figure out why client secret was always bad, why the mr code verifier was always bad when it was the same as the stored one aaand why the heck scopes werent showing. i really do love that my code, practically, worked first try (MY CODE >:3). But did NOT love that i am still stupid and forgot that i had a database that works as the house for the data that my app ingests. god i am smart. time to go suffer with openid i guess. i have to touch jwt and stuff, eugh.. i like my opaque tokens more than jwts, because IF you want to revoke one of them you still HAVE TO STORE A LIST OF IDS… that defeats the whole hecking purpose dude, not worth it (or that’s what i think for now, smh i am just a space birb claking at keys). here’s your video that shows that it does work and gives the bearer opaque token and creates the db entry:
oh hi, did not know that you are really reading this. I added the openid stuff! Well not all of it, I still need to do the ‘userinfo’ endpoint but meh, it works as it should. I also added the cool JWK (the secret key [ES256] that is used to sign the JWTs) rotation stuff, which I can say that I tried at first over complicating it to then end up simplifying it because it was A HELL to use like you had to call a thousand hecking things or in one method give a thousand arguments (its an overestimation, probs not real [shy of 5, it wasnt generic, it was attached to the token flow] :3), it was a pain to use and IT EVEN GAVE ME a burn mark. As I said, I just redo’d everything and boom, simplified thigny you just call from the global state and boom, we do be working! The JWKs are rotated every 2 months, and the old one is retired at the same time. After 1 month, the retired one is deleted. So, at any given time, there’s a maximum of 2 keys, the current one and the retired one. The retired one, as the name implies, is not used to sign new tokens but is still valid to verify old token. And all of this is fetched at startup and then via a scheduled job it is updated. AND as you might have (NOT) guessed the JWKs are stored in the database, so if you have multiple instances of mah meow meow server running, they all share the same JWKs and rotate… OH GOD THEY DO NOT ROTATE THEM AT THE SAME TIME GODDAMIT AAAGH.. the intention was there okay? I did that to, in one part, give more use to my job manager and, to let all isntances update at the same time but big brain me did not think that a job is always locked to the instance that picks it up. also the token endpoint now supports using openid and spitting out a ‘id_token’ with the user info (some claims are gatekeept behind the scopes [like ‘profile’ or ‘email’ duh]). that’s it actually, like i started really pulling my hair, fluff, feathers whatever because I was trying to overcomplicate it a lot and i really dunno why. like, for another example, i kept swapping from the ‘jsonwebtokens’ and ‘compact_jwt’ crates because I wanted to use ES256 but didnt want the other because i never used it but then ended up using the latter because it was easier, and then that I wanted to use EC25519 which is apparently not really talked about in the rfcs (that’s why i ended up with ES256! [also supported on compact_jwt]). AH! and also in the job queue, for the JWK rotation, I wanted first to add cron job for that but… why tho, I don’t really need it, I just need a way to NOT run a job until a specific time and then reschedule it inside the same worker. here’s the shitty screenshots showing the oh wow ‘openid configuration’, oh wowie ‘it does output tokens and id_token’, oh thats nice ‘it does give out a valid jwt with valid claims that the programmer didn’t even do themselves because they used a library called compact_jwt’ and wow ‘it does have a job that tries to autorotate if the current key is older than two months’:
I made the User Info handler for the open id stuff. that’s the end of it. It works, wahoo my self yay good job, even though you had pretty much bad scrambled code, you did it hahaha. It practically, as the openid spec says, returns the claims used also on the id_token. Soo, because its sooo close to the id_token, i’ve decided to just eat the that same id_token but spit out a converted version with things I want. I also added the typical OauthManager and RequiresOauth. the latter one not having a param to decide what scopes you want because, whhy would you want that?! its just a one liner and it may change for each hecking endpoint or even the data the endpoint returns. its just over complicating it with wrapped trash. … and about my devlogs, i realized that mine are pretty bad and not interesting like other people’s devlogs. i simply write weird and long ones. but i don’t want to write a simple “I did this, commits, hardness of implementing, whatever” in bullet points like other people do. i dunno it feels flat like this devlog. Here’s you typical SINGLE screenshot showing that the user info works, that’s it:
hi, hello i am space birb in the sad corner and i am here to tell you that i added the the typical oauth management handlers that everything has. I also added a generic paginated database thingy to be able to make… pages when there’s more than 20 items (rows). firstly, everything was easy. yes, no rocks not nothing that could set me on fire… minus that I HAD TO MAKE a paginated database thingy. WHY did i make it? idk man, i wanted because my bad coder brain thought that maybe someone could have more than 1 oauth application created (like a thousand) and that’s pretty bad for mr blue elephant database becuase that means eating 1000 rows in one go (and blue elephant doesnt like that, AND EVEN less if my vps has 1vcore and not really that much ram). SO, the best course of action was to make pagination to be able to cut in pieces the data and make it easier to load and handle.. even though the loaded rows are hardcoded (its 20 plus 1). The pagination practically works by seeing if there’s more data after 20 items (that’s why it has a “plus 1”!), if so, we take the LAST item’s id (using a trait to access it, because you can’t really know in what form or what id will be used in any database model) in those same 20 items to set the ‘next’ param. That ‘next’ param is used to.. quite literally say “hi, uh could you give me the next rows after this id pretty please?” and boom works and i didnt set my self on fire but i did ruffle my feathers a bit because of. Ill probably implement it to more places because the only places that use it are the oauth applications and user sessions because i am a bit lazy haha (i mean, its just C&P the current find_many* and use the pagination stuff and caboosh). oh god, i forgot about the oauth consent management. great job me, NOW IT ISNT COMPLETE “everything” great coder i am great big bird brain. My next plans are just to do some general cleanup with the openapi schema, add comments to the code and then start doing the frontend in mr sveltekit.. although i am too rusty in ts land and i will have to learn some stuff again and touch again scss and stuffies and god, i am going to get cooked in the sun and roasted like the space birb i am because of me no longer touching anything javascript. here’s your really useless screenshots showing the INCOMPLETE oauth management handlers and the pagination thingy working:
hi and welcome to my unreadable journals. I added those oauth authorized applications management handlers that I forgot to add yesterday, like the typical “oh let me see what scopes does this thing use… OH GOD IT CAN SEE MY fur color I MUST revoke it NOW!11”. Then I moved AAAL the handlers that touched ME user data to the.. obvious /me route so its prettier and doesnt pollute the air of the real auth related things. and did some cleanup in the http error department by merging some repeated errors. god this is one of the shorter entries i’ve made i think. next up is doing ratelimting, probably roles or just an admin api and the “hey your account has been locked because of repeated tries to login”. i dont even know what will it take to make tests work god. here’s your shitty screenshot showing my only progress, the oauth management bleh bleh bleh:
hello again, its a me, a random space birb that is here to tell you that I completly forgot about the ratelimiting stuff. BUUT, I added the admin methods and UserFlags to be able to set… flags. not much rodeo this time. had to think how i wanted the audit logs to work for the admin stuff. I first though about just having a bool saying “ah yeah admin” but meh, I think its better to have also an “actor_id”, the who did it user id, and boom. In the user side handlers for the audit log I just return the typical plain response of “yeah this was changed” (not sql joins, cheaper [?]) but in the admin side, I return the actor_id with some other things like the user login of the actor AND the user login of the user that was changed (cause why not!? its jsut another join statement in sql). Works wonderfully and even better now because before I had setup the user audit log to fetch AAAL the entries form the db and pee pee poo poo no, now that i have my paginated stuff, no way! SOO, the admin methods are just the typical ones, see what the user has changed or an admin changed from an user via its audit logs, the oauth applications and authorizations management and that’s it. I will probably also add a way to know globally what the heck is being changed but idk about that, seems a big sql query (that is tiny but very costly in db terms) and I frankly want to avoid that… and even more avoid using redis because i hate it and that SOMEHOW i have better some beautiful organized code vs the first version of this backend where I used the typical DB+redis aaand it was ugly . i hate that. I also added the UserFlags to be able to set flags like “is the user an admin?” or “is this user allowed to manage its oauth applications?” and so on. Pretty cool. BUUT as always, I had to C&P some code (almost all of it) from past handlers to make the admin handlers work lol. I would really want to make a central place to put all the common handler code but meh. IT WORKS! and that’s what matters. THe next things are just making the ratelimiting WHICCHC probably will be only inside the instance the user is reaching and that’s it. I would like to have global ratelimiting using the IP of the user or its account id but that would (i think) require redis… I really need to think about this because someone with a crappy toaster can make explode my poor baby vps. ps. god do I really take that much time doing stuff? god i am slow at coding. i am bad goddamit. that’s it. shallllll you see my shiitty api docs with the admin stuff and admin auditlogs becuase why not:
wow. that’s a long time doing nothing. I just updated the deps, tera had a change on its templating because it was rewritten from the ground up. pretty cool, now it kinda looks like jsx and at the same time not. I also tried or well… I am thinking about making my own ratelimiter but was like, ugh. I was practically mega blocked on the idea of wanting a ratelimiter that used the IP + UserId. Both are easy but for some goddamn reason I kept going circles and circles and honestly I dont even remember why anymore, like huh!? In the end I will only be doing ratelimits via IP because they are the easiest AND THEY DO NOT NEED TO be stored in the database. yes database, you read it right. IN this version of my backend I wanted to use the least things AAANd the oNly thing required is just the database to make everything. Adding redis would be waste (and waste of ram) for just storing the ratelimiter. Redis would be required if I wanted to run more than 1 instance of my application AND IF i wanted to distribute the info about “oh this guy is grounded, no entering the meow auth realm for 5 minutes” to all other running instances. BUTTT, as you might not see, I dont want to run more than instance nor want to distribute it to more instances if it were the case that I wnted to run more than 1 instance. Soo, I went in circles in my crapppy bird brain because to add ratelimits via the user id I would have to store the info somewhere that wouldnt be erased (like in the in-memmory storing that i will be using) or else the ratelimits would be useless because… THEY WOULD BE ERASED from this whole realm when the instance is restarted (memory goes boom to the void, so does the ratelimiter). That’s why I want to just implement the Ip based one, its the easiest one and the only one that I don’t care about loosing the information about the ratelimits when the instance is restarted. Also, i need to implement it yet lol i was just scrambling my head nuts and bolts hearing them clank while trying to ratchet them. ALSO², i need to redo the email stuff because my brain has came up with a cool design lol but first gotta do the frontend to make it uhh look good before suffering making the email components. I also started to hate the tera zed language extension. its crap. bad crap the worst one. ALSO, here’s your really useless screenshot this time showing code that you can already see on the github page (yay!1):
right, its a me! the teeny tiny waist sized space birb that is here to tell you that I added the ratelimiter! It works just as i’ve explained in the last entry, it uses the IP of the user to limit the amount of requests via a ticket bucket. THe bucket is stored in memory, as again said before, so if the instance is restarted, goodbye ratelimits. EAch request eats 1 ticket AND the bucket tickets and refill rate can be set via the… middleware. who would have known wow. It always adds the typical “x-ratelimit-limit” bleh bleh bleh with all the info you can like that is useless BUT hey, its there for you. I like making my own stuffies because its cool. THe root has a limit of 500 requests, refilling after 1 second. While the auth routes have a limit of 10 (sudo) and 20 (auth flows) requests, refilling after 1 minute. The other routes are just uhh protected under the umbrella of the root ratelimiter lol, no need for having to add a ratelimiter to every single route (god). that’s it. there’s no more devlog. Now what i gotta start doing is the frontend. I will cry a bit because I am VERY very VEEERY rustified in the typescript department like I never touch it but meh I MUST do a frontend or else this is incomplete… and i will do be crying if i send it off in a incomplete state. THE frontend will be in svelte kit, because its cool and ive already used it in the last iteration and it left me with a good taste in my forked tongue (hahaha, i am space birb) AND thanks that Ive been using from the start utoipa to add an openapi schema, I can use it easily to make requests from the frontend! and i didnt need to suffer adding them after everything was done just like in the past iteration! here’s your useless screenshot showing teh ratelimiter working and the headers and stuffies… god i am a mediocre at best writting long hecking devlogs for nothing:
oopsy. shoooort one, sorry. I added the forgotten oauth error StatusCodes and Descriptions. there’s not much to it lol, I just forgot about it. as always, here’s your even uselesser screenshot with code taht you can already see in the guthub:
a. hi there mr svelte! I was wondering if I should be drafting first a design in figma but meh. I like to suffer and make bad designs that progress very slowly to look mediocre at best! yay!1!! anyways, ill be using scss as always (i frankly done even remember anything about it lol) and sveltekit. HERE’S YOUR stupid “hello world” from slevetkt (reaaly useful devlog):
hi hello. oh, ive been 10 hours doing the same thing!!1 god. So, I was doing the frontend design without using figma and uhh yes. And also removed the ability to use your login to.. login to the app. You just use your email (otp, and passkeys). First, I forgot how to use figma, I only remember some shortcuts. I was going to use it (for frontend and logos) but seeing how struggled to make simple things, I only used it to swap the colors of the logo of MEOW AUTH, hmm yes, very meow. . The frontend stuff… I frankly ALSO do not remember anything.. or well I do now remember some things thanks to me fighting to uncenter a div hah. The stack is practically svelte, as always, client rendered and scss (sassy :o) for the styling. In the start I was just going to use the same styling and structure of my first iteration of this project, beepauth (ew), and after doing all of that I thought “god, this looks pretty bad”, soo I then tried to make it look a bit better WITHOUT starting from zero again. And I did style it a bit better but I didn’t even like it. Like it felt like I hadnt even advanced at all, like if the same shitty fricking backend was the same from the past (probably noone would care because probably uhh noone cares.) [brains a weired and even more mine i guess, wawa]. So, naturally, i did the less sane thing, REDOING EVERYTHING again. Had to watch tutorials to relearn how use sass and picked up also some new css stuff that I wont even use (minus the layers! that pretty cool!!). And from that css stuff I discovered Oklch.. yes i swapped my whole color palette to that using their harmonizer that uses the equivalent of WCAG, APCA (contrast bg to text!). At least the frontend now looks decent (or the first blocks fo the website). sadly the only frcking shitting heckign parts ive made are the login (and register BUT THATS THE SAME). AWIT WAIT WAWA, I also swapped some gears in the BACKEND! I removed the login (username) entirely, now its just demoted to a non unique display name (for openid!). you must be asking why, because I changed it to use the login not long ago. Well, because I don’t have to force a user to give me a username AND their email on signup. Its easier to just give the email. And if you already have an account and hit, without knowing (our typical autopilot mode), the signup page, I can silently make a AuthChallenge for login instead of signup because both handlers return the same result. Then, after registering, I just force you to set a display name (by default its just the email, i could leave it like that but currently I want it to force you set a custom display name for OPENID). By doing that, I practically removed the “vectors” (ooh hackiry stuffiry) for user enumeration [those vectors were the endpoints to see if a login (username) or email was already taken] (I also made so the login endpoint gives you a fake challenge id when the email doesnt exist {This works thanks to having the auth exchange handlers return “invalid code” even if the challenge doesnt even exist}). here’s your screenshot of a login page that looks exactly like very other login page, maybe even shittier (sorry i am bad doing these kinds of things.) [also you have the logo colors, i went with purple because it looks cool and its a cool color] {the “Psst, over here” its just a random greeting, just like the ones i have in the emails} [[sorry for wasting 10 hours doing nothing]]:
i am ashamed. i am that bad or… well ive gotten to the point of real badness and what some call “skill issue” because I CANT make this hecking frontend. its just too hard, i am just way more slower than before and what i though i was. i hate that i am not usign tailwindcss and isntead I am building my own scss styles IN @layer when i could have been using svelte components with the style tag but ugh bad decisions that can be still reverted i guess. For the layout of the settings, i even tried copying how I did it in the last iteration of this frontend (past server, not named meow auth).. i just did not like it because using a sidebar for this teeny tiny amount of information is wasteful (like this tiny [not really tiny] space birb). Like the content is just the typical name, email, auditlog, 2fa, passkeys, sessions, oauth authorizations and user created oauth apps AND lets not forget about the admin panel. i am practically suffering with mundane crap that anyone can have done in probably 10 minutes by asking mr claude or even chatgpt OR even just copying an already made layout, but here i am suffering trying to make stuff my own way, telling my self that this was the worst decision i’ve made goddamit… at this point i will really become a hotpot space birb soup.. i just need one layout made and then it should be an easy job to then copy and paste to other tabs. then the enxt step is to wire it up the forms and have it communicate to the backend which should be an easy task (i think [… oh god please be easy])… i know this entries of the frontend will make my project go into deflation mode and stuff, and i even broken a promise that ive made my self to not make devlogs that are more than 5h long because of a review someone made of my project when i submitted it unfinished to flavourtown (yes, flavortown) which is sad but it is what is. you cant be perfect, that’s why i have a shit hecking design. i am just bad, a bad space bird i guess. i already rambled too much in this suppossedly simple devlog. here’s your half crap “inspiration” that I used to (quite literally did a C&P of the page) of my past proyect using a sidebar (not what i want with this iteration) and the current state of art of my REALLY REALLY SHITTY curernt state page:
in the end i gave up in the design or well… can you even call it “design” when it was ugly even at teh start? yes, i tried my best at making it look “good” in my own eyes but i could not for the love of birds. it was bad anyways, like actually bad. I, to make it easy for my self and be able to copy how other people do it because i am a lazy bastard (stupid space birb that klanks its keyboard for nothing), will be using the typical two columns for each section. One for “what the heck is this section for” and the other for the actual content (wow). man, i hate how the frontend is where i struggle the most when the backend should be where i should have struggled the most, not with this dude. agh. I also hate HOW i thought the layout i wanted initially was the best one and that i look great when in reality it was an aberration that didnt even look good and it really threw to the trash the unused space bruh. it just wasnt for this job, maybe for something else.. idk haha, what I know is that I think it already looks better with the simple sutff ive done lol [that’s sad btw :)]. as you may see int eh screen shooting, the audit log section instead of having a table it uses a… placeholder for a button with the same content it has currently because I frankly i am scared of making tables because of the probable difficulty i will have (because I am already struggling with teh simplest of things!). ALSO, i need to stop making .scss files, compounded into a single css file using @layer and @use , to just use svelte components that use the style tag. it really doesnt change anything, but atleast i wont be doing “class=‘meow’” each time i want something, just using “” is half better lol (doesnt really fix anything, I just want to give use the svelte components). finally, i am planning to use “services”.. they arent really services but more about wrappers around the openapi client. less manual labor for some shitty stuff that i wont need to do anymore. Still, its just a wrapper with nicer method names and namespaces. (also, ill be adding profile pictures. didnt think i would be adding them tho) here’s the typical dumb screenshot of what i think that looks “good” without doing that much work:
haha 10 days later. no progress just me rambling and going in circles. I am a bad space birb. RIGHT! I just were converting the css stuff into svelte components using the style tag (and the preprocessor duh). That’s actually it, quite literally. No progress at all. Wasted time on, still, falling on the loop of trying to get something that “looks good”, but i dont reall know what i want in reality. ofc i try to get “inspiratainionion” from other websites and try to mix them together to then dislike the result, undo and rinse and repeat (at this point my fur and feather soaked hard on water). YOu may imagine it as thinking that you ahve a finish line when you done even know where it is. i will just try to make the frontend work first without thinking about the design… AND i cant even promise THAT! because i will probbaly spiral into the same loop once again (saying oh this looks bad blah bleh bleh). god i am bad at making frontends or evne design or everything, but thats how people learn haha. it is a lesson that i should learn from now on.. i keep judging my work too harsly but i dont know. frontend is just harder for me. here’s the useless non functional three pages that atleast have something layout:
would you look at that! Finnaly some functional pages with forms, ALmost finalized components… oh they are just the login pages….. and its not even all of the auth pages, just selected ones so the auth flow barely works. BUT, THIS fLuffy (not fluffy) space bird has finalllizated converting (or thinks) the classes i had as global styles into beautiful svelte components with all those stars and happy things. happily, i am longer limited by having evertyhign in global space.. oh right, RIGHT. i wasnt even limited :). AND the coolest compponent of all of them is the spinner one because it spins. The first pages have been plugged into an outlet called SuperForms (not really super, mostly helping to validate)! thanks to that, we now have working forms that post to the backend! with all those classic things, red colors and form validation. but, how I THE unfluffy space bird is pushing envelopes with the form inside of it? by talking to my backend obviously! but not manually (doign every step each time manually), by using a library like the trusty openapi-fetch that eats the openapi schema of the server i used in the past iteration. BUT i trashed it into the.. trash because I was fed up by having to repeat a thousand times the same snippet of code in each form or even page (I could have used a service like class to make it easier tho!). it was swapped by Orval! Orval works with the same openapi schema BUT gives methods! No more repeating the same things, just use the method and boom. and also that openapi-fetch was mad that i used a more recent typescript version. ANND, finally, the auth context was upgraded with a leg made of clay so it can now parse the BITENUM flags of, for example, the user (UserFlags) that tell what is enabled and what is not, if you didnt remember. Its practically a generic class with everything that i considered necessary that must be extended to be able to use it. and that’s it. you may watch the shittiest video ever that just shows that it kinda works with the forms and logging in and that’s it with still mocked things:
well hello again. space birb presents you the next devlog. I cleaned up the forms a bit (they are a still bit TOO messy ugly but they do work), REDID the ugly flags class to be a more EEEASIER TO WROK WITH (i dont even know how it worked before lol) and FINALIZED the auth pages! RIGHT right, first frontend. I finally finalized the most basic and empty and everything pages of the frontend! wahoo mee :). these pages practically include the otp one and the 2fa one (+ recovery).. and i just realized that i forgot about the passkey one, great so now it isnt finished (fried space bird thingy). Redid the pin component so it works with my Input form component AND also fixed some weired quicks of the pin component in phones (for some reason, my phone, didnt respect the max lenght of the input. i just sliced the value of the input on my max length lol). And finally, the frontend now has the most precious bit of any… i dont know. i just added the typical dropdown componetn for the avatars (yes, this was important for me). while on the backend, because mr past moon made some weired decisions, the 2FA recovery code generator and giver of the code the state was a messy mess that I frankly dont know if I even tested it, because it accepted wrong codes? i dont even remember if it worked haha in the past BUT now it works as it should and its at least better readable with normal method names (not plainly “recovery” [… what does that mean anyway!?? you would need to look at the code to understand it! and that’s bad]). ah, the typical moment has arrived, the one i always repeat. HERE’s your happily working auth pages for once, plus the “want to retry the email sending?”, the passkey one is still missing but that’s just slapping some paint (and painting my self) and boom (whhile this is practically the same as the past devlog, it just works better than the past devlog lol):
would you look at that, 10h… i love wasting time. Now THIS thing fetches some bits of data like the audit log, my passkeys, adding those and even modifying the username (you are forced to do it)! BUT big buty, i had to add the mr /signup/complete where you set your prefered username, like moon (its a me!), or else the backend will straight up refuse anything you want to do. AFTER changing it, you can do everything else a normal user can [by Default the username is just the user’s email AND THAT IS NOT PRETTY AT ALL >:(] FIRST OF all i grabbed my magic cup for tea and made the audit log page (it does not even have anything special)! .. oh right, for that i needed to know how the heck you even send requests with tanstack. so uhh,, blah bleh bluh wawa BOOM i now know how to call a method and get my data back AAnd even make infinite fetchers (IT kinda hates my way of giving data [its wrapped in {3} onion layers {request.data.data.data}, the ones that make you cry a bit]). i also synced my auth state with the tanstack client so it doesnt do two trips every time. okay now. TO make the audit log thingy, i did some beautiful matching so the type, creation and guy who did the action (probably the user) are actually human readable with a limit of 8 items (or else the /me page would be as long as this project’s crappy devlogs). When there’s more, a beautiful “view more” button appears (separate page). For this, so called “view more” page, i used the infinite queries. while at first i just puuushed the data into the dom with the #each (svelte thingy), chrome do be VERY very mad when there’s a lot of entries in there (The audit log, because it logs actions in your account, can get very huge. Because actions like the baddie Session action logs each time you log in or log out), SOO i did what someone whose browser is eating more than 10gb does, using a virtual list to render the it! (IT only renders items when they are visible, hidding [removing from the dom] non visible ones. this fixes the “OH gosh THOSE 200 things THAT I CANT EVEN SEE, ARE EATING MY precious ram”). OHh and you can press ESC to leave the page because i made a cool component that lets me plug in a callback for specific keyboard events :D. SECOND, the passkey stuff. yeah, pretty easy thanks to libraries like SimpleWebAuthn that do the hard work of telling the browser “hey, authenticate this guy please” or “hiya, registrate this passkey please”. its just querying what passkys you have to know… hwat passkeys you have and that’s it. BUT sadly, an actually sadly, my passkeys are non resident (I cant have a simple button to just login, I need you email before i can use the passkey). Thaaat means I havea teeny big tiny small user enumaration problemo becuase the backend can reveal that an user has a passkey registered and, in turn, we know that user is registered. a bad guy can just atack with “oh noes, your passkey has been stolen. pls give a undecillion of moneys”. third, i had to add the sudo page. It does what you think, reauthenticate to do sensitive operations like adding a passkey. Pretty simple, it redirects directly to an email code if the user does not have a passkey or totp enabled (email code is always enabled), if they have those, it just shows a selection screen. fourth, i had to fix up some stupid things with the api schema of the backend becuase I either forgot to put a body on the responses (like the passkey/webauthn routes) or just fix up a teeeeeny tiny setting thing that wasnt correct (its the webauthn/passkey rp_origin [allowed pages to register/use a passkey} becuase it jsut used the backend url and THAT is not correct). so tahat’s it, shall you see some stupid screenshots and not even a video because i havent even finished everything:
hi hello this is space bird. i have eaten 9h hours of real world time in just making the dialog component. I mean, IT WAS for making the 2FA prompts for when you wanted to enable it or disable and bleh bluh.. atleast it does look great… and i still need to add icons. the prompt is just the typical 2fa enable that gives you a qr or the 2fa secret if you cant scan the qr. The dialog component was pretty much made in nothing, in air time (free :D). the thing that took a bit was just the styling BUT WAHT did take a BIG LOOOT of time was just making the 2FA dialogs. lik gha damn hecking “2FA prompt” and “beep boop enabling dialogs”.. why?! becuase they are PACKED like a lasagna with forms, tanstack fetching, dialog steps and other stupid stuff to make it atleast not confusing for the user to navigate with tree sized buttons that dont work (becuase you are on the wrong step!!!!1 or already did everything lol). i mean, besides that custom stuff, it just reuses components like the pin or qr svg and… for now, also uses the spinner icon on the buttons you click to manage 2fa as i couldnt be asked to add real icons for now (leaving them for lasts). next up working work is more dialogs (for the passkey setup [so it isnt just a spinner without any “magic guideance”]), a collapsible comp to wrap the info items to show EVENTUALLY some metadata like, in the session items, browser, ip, what user was that did that thing and etc. Its just so i dont balloon the “info items” BECaUSE they are supposed to be some kind of “quick info”. broom brroom, i love wasting time on these stupid things (and wiring them!) >:3. LEAVING that tiny goofy work that apparently took hours to do. I am thinking and WILL be doing a beautiful swap into using resident passkeys (the ones that dont require me to know the user’s email in advance). yes, i know i said before that i dont wanted and ew ew resident. but man, its just easier for the end user to click a magical button to login directly. AND AND this even protects me from someone slapping the meowbackend with the email fish to see who is registered (with a passkey) by checking if the user’s email makes the selector appear. still, some part of me still thinks this is really bad idea but i want to do it tho… what could go wrong hah! i might aswell go to the cooking pot already and make some uhh chicken soup made of space birb. that’s it, i still feel like i havent done anything. Here’s your beautiful video of showing the beautiful dialog going “hi” “goodbye” (the video shows me enabling 2fa, viewing recovery codes and disabling it [with a recovery code]):
hi hello hiiii, stupid space birb back from long bed sleep break. CATCHING UP, i have swapped to resident passkeys, fixed jwk refresh feature not working, beautified toml settings, added 2fa replay protection and audit log beautification. alright.. prepare for a long boring devlog as always. I finally swapped to resident passkeys after thinking about it for days (hours)! That means.. NO MORE user enumeration problemo with passkeys, yippie. it wasnt really a pain in the feathered buttocks, like it was just enabling a crate flag and boomy boom (and it even works on the frontend!). also, i patched with scotch tape a stupid buggy bug about the email templates, becuase I used a lazylock to store the email templater engine stuffy, when SOME random goofy template or data was wrong for whatever reason, it would poison the lazylock and the next time it was used it would just say “oh noes, i am broken, poisoned my childs. GO HECK YOUR SELF”… i just fixed the template part by checking if tera likes them in the global state creation. i love scotch tape, it smells great. while doing that, i finally addressed the beautiful jwks not updating on all instances because in MY JOB QUEUE only one running server instance can eat the job. that means, if you have 2 instances running, the one that is the unfortunate one that didnt eat the job will have stale jwks until the next time it is restarted. fixed it with some beautiful blue elephant database screaming “HEY GUYS, THE JWKS HAVE BEEN UPDATED” and the other instances will be like “oh, okay, i will update my beautiful jwks now”. finally, 2fa, or as i like to call it, TOTP, has been taken cared like a baby and then thrown again to the battle field after giving it the power up of replay protection. That means, if you use a code, it will be marked as used and you cant use it again (this only works with valid codes). makes you wait more smh. THE SETTINGS got a layer of microscopic makeup because i was like “man, these setting name are weired? what if the settings file had comments to know what the heck is this beautiful knob named ‘do_not_touch_this’”. yes i did that. it was a big red booty pain as i had rerereremember how to do proc_macros and how the heck did i even update the toml files with new entries without making them implode with gibrish. AND WE ALL KNOW NOW that ‘do_not_touch_this’ is a setting that if you set it to true, it will make this space birb implode in flames and become dust (yes, like a real firework going CHIRPAAAAAAAAAAAH pop ). and the final thing given some body work spray was the audit log. no more caveman moonbeeper style ‘log’ method with a thousand things. now we have the SAME thing but as a builder with a ‘save’ method. it just makes the code easier to read and understand. also, the audit log now has a “what resource¿” and “what ip?” and i removed the audit entry making from inside the auth helpers to outside. it was just an inconvenient place to put it, i dont evne know why would moonbeeper put it there… oh right i am moonbeeper. I DID IT BECAUSE it was a great place in those times. alright, HERE’s your typical bad screenshots that are trashign and god i am sleepy:
pew pew cabosh, wawah space birb is very sleepy. BREAKING NEWS, i added and changed a lot of things so i could make a delicious soup of changes that changed my old changed code that i yes. minimal frontend work called making the passkey section button go crazy with colors, authenticator icon (just search “aaguid explorer”, its not crazy work) and having a dialog telling “hi do you want to rename this, no? okay”. I also have collapsibles that hide info from your lil nonfluffy face when its useless. Now my crappy server knows from where you are connecting (who would have known that a server could know that) and where you live (oh no [its approximated from your ip]). THe latter only works when the instance is proxied under cloudflare (it even gets mad if a request doesnt have the headers it wants when you have enabled the “under cloudflare” mode). the audit log single method to do everything™ has been swapped with a builder (i love this), AND its info now includes that same ip and location (actor related [who did it]). all fields are now obligatory for… audit log purposes, because before i just pushed null on the db for things i didnt want to show the user MAKING a pretty stinker audit log that does not show who did what. i really dont know whata past me thought, because you can keep everything on the db and just show what you want to the user. idk, past me thinking in uhm not portals (yes). okay, more slurry of things. mah beautiful fix so the JWKS (signing keys used to… sign a jwt! [important for OpenID]) update when the database JWKS changed, spammed the hell out of the db and log as it polled instead of waiting for the db (or an instance) to say “I UPDATED IT GUYSS!1”!1”. This comes from the instances cache’ing JWKS instead of saying “could you repeat that” to the db (too many requests = blue elephant cry and explosions), so they need to know when the db changes or THEY WILL BE out of sync!! mr past me also thought that it was a good idea to store the oauth token code (used to get an access token) in plaintext in the muffing db, SMTH YOU SHOULDNT AT ALL DO. now its just hashed via hmac just like everything else. man i am GOOOD at this job of so called programming, having to go back to edit a thing i called done AND then HAVINGTO edit and edit and edit. this is so fun that I WILL BURST into FLAMES because of how stoopid i am meanwhile, you also have me deserving to be cooked with rice because I made a condition in the oauth token exchange that when SOMEONE somehow miss types or gets access to the oauth token code but has the wrong client_id, the temporary code gets deleted… and you know what i forgot? i forgot to commit the changes to the db, so the code never was deleted lol. i love these kind of stupid goofy pain errors that arent even errors. AALSO I reprettyfied the oauth helpers because after working on them a long time ago, i didnt know what were they doing and it wasnt fun nor funny >:( [i was mad {i am still mad, with that space birb… i want to sentence past moon to sad corner jail for 12 seconds}]. NOW teeny tiny additions!“1 the ratelimiter now exposes a “Retry-After” per a hacker news old moldy article i found, plus exposes its headers on cors. the audit log now does its job even in more parts! now it also tracks the totp recovery code usage [i frankly forgot about it :(].Changing your email or name now requires sudo minus the name on register. AND the app startup has now a beautiful banner saying “meow auth” in cursive. its pretty :3, makes it stylishinning. I also moved and added to the service manager (the watcher) a way to have service names and to launch services from inside of it (for some reason i used a method that was outof place for ages lol). oh no my time has come nnonono, i give you permission to see my trashy work in screenshot format (so modern)… yet i shall push towards completion of this meowing meow meow authing meow auth server:...
|
1792738089.8583465
|
1793342889.8583465
|
|
67588
|
Plutopad by @Eli_Mendez | Stardance
|
Eli_Mendez
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-03T02:17:07Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is a build of my Plutopad Macropadi", "repo": "https://github.com/pluto-227/Plutopad", "demo": ""}]...
|
[{"post_id": 76278, "ts": "202 [{"post_id": 76278, "ts": "2026-10-03T02:15:25Z", "hours": 1.3167, "text": "This was an assembly of my Plutopad macropad. I burned myself and now it hurts pretty bad. Also, I learned how to solder during this"}]...
|
Title: Plutopad by @Eli_Mendez | Stardance
Devlog Title: Plutopad by @Eli_Mendez | Stardance
Devlogs:
This was an assembly of my Plutopad macropad. I burned myself and now it hurts pretty bad. Also, I learned how to solder during this
Ships:
This is a build of my Plutopad Macropadi...
|
1793217109.8165388
|
1793303509.8165388
|
|
2013
|
Grocery Price Tracker by @Draaal | Stardance
|
Draaal
|
1
|
12.51
|
45
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-30T15:40:56Z", "hours": 11.0, "multiplier": 4.22, "payout": 45, "blessing": "neutral", "text": "I structured this a bit like a FAQ so you don’t have to read everything; read whatever sections you find interesting TLDR A website with live data about products from the austrian grocery store “SPAR”. You can search filter, … It was my first time touching react and I learned quite a bit about docker. I also used some new rust libraries for serialization and hosing api endpoints Troubleshooting The server is a bit unstable, it might be unreachable if it hasn’t been accessed in a while and need a few minutes to start back up again. I don’t have a SSL certificate, so the browser might show something like “The connection is insecure. Are you sure you want to proceed?”. This is fine, it just means that the traffic between you and the serve is not encrypted. Just don’t put your bank credentials there, okay? What is this? You can use this to view prices of SPAR (a austrian grocery store). It has live data (unless I forget to start the update) and some nice search filters. Currently only products from one brand, but the design allows easy addition of further brands. Why are some parts of the website in german? Since SPAR is an austrian vendor, the product names are of course in german and the legal stuff is in german too for that reason. The rest is in english so you guys don’t need a translator. My experience So first I wanted to do this project to do some web dev again, after only doing local (mostly cli) stuff for a while. But this time in rust. First I struggeled a bit with Docker, because my AI was halluzinating again (thats on me though for using the trashy free model), but the implementation of the web scraping was pretty and db insertion was not too difficult, if I remember correctly after 3 months. Then I used react for frontend, which I knew nothing about, but after our Chatty gave me some hints on how to make things work it was fine. I also have to confess the html is ai-generated, because thats the part I really don’t care about. Price tracker ? It is called a price tracker, but it really isn’t. Once upon a time it was intended to be one, I ditched that feature in favor of storm (my other project). I never changed the name though…", "repo": "https://github.com/andraaal/price-tracker", "demo": "https://products.draaal.dpdns.org/"}]...
|
[{"post_id": 76267, "ts": "202 [{"post_id": 76267, "ts": "2026-10-03T00:09:57Z", "hours": 0.7756, "text": "Mods: The proejct description and the ship still say that it may have startup times. This is no longer true. Could someone remove that as I can’t do that any longer? Fixing shiping #2 Now we have proper hosting without any cold starts. Additionally we now also have cloudflare caching for that extra performance. And while I was at it I added a very simple favicon too"}, {"post_id": 75876, "ts": "2026-10-01T13:31:24Z", "hours": 0.7381, "text": "Whoops! I forgot the README. Now its there."}, {"post_id": 75602, "ts": "2026-09-30T15:12:27Z", "hours": 0.6042, "text": "#6 Devlog (now for real) I had almost given up when I rebuildt the container on my potato server for the 5th time, because I used local builds for the server. But then it just worked!!! It is still a miracle to me how there was nothing that went wrong, but it seems for once the server I set up works properly. Yay!!! Now is really time for shipping"}, {"post_id": 75567, "ts": "2026-09-30T13:45:46Z", "hours": 0.755, "text": "#6 Devlog (not really) Almost forgot to ship this; and I was kinda panicing because the server was broken. Was a quick fix at least. But now I found that the search system is a bit whacky and I am really scared to fix it. Let’s hope I don’t break the server, because it has been some time since I set it up and I have no idea on how to fix it if it breaks."}, {"post_id": 25934, "ts": "2026-07-10T13:08:24Z", "hours": 2.5278, "text": "Devlog #5: Final upload After I finally finished uploading everything to the server and fetching all of the 22K products they have, I noticed that the page is kinda laggy if you try displaying all of them at once (who would have thought). So I implemented paging and downloaded everything AGAIN, because idk?. There is db persistence across builds, but I do it on startup anyways. And all of that with 1s delay between requests to avoid getting rate-limited by their server. It took sooo long. Anyways, it is ready for shipping, I hope you enjoy it!"}, {"post_id": 22077, "ts": "2026-07-04T10:16:40Z", "hours": 0.9444, "text": "Devlog #4: Setting up a server So for the last day or so I’ve been working on setting up an online server. Getting the OCI (Oracle) Free Tier account took forever and then actually aquiring a machine too; They’re always out of resources, unless you upgrade to pay as you go. The one hour logged here is mainly me creating new Dockerfiles, that don’t have any of the build tools in the live server. Idk what to show, here is some screenshot from the server I set up:"}, {"post_id": 21068, "ts": "2026-07-02T20:55:28Z", "hours": 1.6758, "text": "Devlog #3: The frontend I restructured my project a bit, so I could have a simple web UI for my project. Nothing fancy yet, but it proofs that everything works. Still, quite interesting, since I have never used React before and I see why so many people like it (Also got a fair bit of help from AI with the design; that’s not really my cup of tea). Since all of the base features are implemented now, I think I will ship it soon, but before that, I want to make a few more adjustments (to not get rate-limited) and polish the UI a bit. Below you see the first UI draft"}, {"post_id": 20783, "ts": "2026-07-02T14:07:51Z", "hours": 1.9867, "text": "Devlog #2: Data Expansion After I got everything set up last devlog I now added some real data collection capabilities. We now track: name brand vendor price of one unit size of one unit (The thing in the image, not necessarily 1 kg/L/etc) image URL reference price (How much does 1 kg/L/etc cost?) tags like “organic”, “gluten-free”, etc I also restructured some of the code to make it easier to add new vendors, befor we were kinda fixed on SPAR. That’s all for now, I will now go and create a frontend so that next time I can show you more than some db schema."}, {"post_id": 19920, "ts": "2026-07-01T11:05:56Z", "hours": 2.1147, "text": "Deblog #1: New Project The end goal is to have an app that can compare prices between different grocery stores and can tell you where you can get your items the cheapest. I have set up a basic project in Docker with Rust and Postgres. Current capabilities are loading product data from SPAR deserializing, structuring and storing it in the db. There is no UI yet, but thats the next step."}]...
|
Title: Grocery Price Tracker by @Draaal | Stardanc Title: Grocery Price Tracker by @Draaal | Stardance
Devlogs:
Deblog #1: New Project The end goal is to have an app that can compare prices between different grocery stores and can tell you where you can get your items the cheapest. I have set up a basic project in Docker with Rust and Postgres. Current capabilities are loading product data from SPAR deserializing, structuring and storing it in the db. There is no UI yet, but thats the next step.
Devlog #2: Data Expansion After I got everything set up last devlog I now added some real data collection capabilities. We now track: name brand vendor price of one unit size of one unit (The thing in the image, not necessarily 1 kg/L/etc) image URL reference price (How much does 1 kg/L/etc cost?) tags like “organic”, “gluten-free”, etc I also restructured some of the code to make it easier to add new vendors, befor we were kinda fixed on SPAR. That’s all for now, I will now go and create a frontend so that next time I can show you more than some db schema.
Devlog #3: The frontend I restructured my project a bit, so I could have a simple web UI for my project. Nothing fancy yet, but it proofs that everything works. Still, quite interesting, since I have never used React before and I see why so many people like it (Also got a fair bit of help from AI with the design; that’s not really my cup of tea). Since all of the base features are implemented now, I think I will ship it soon, but before that, I want to make a few more adjustments (to not get rate-limited) and polish the UI a bit. Below you see the first UI draft
Devlog #4: Setting up a server So for the last day or so I’ve been working on setting up an online server. Getting the OCI (Oracle) Free Tier account took forever and then actually aquiring a machine too; They’re always out of resources, unless you upgrade to pay as you go. The one hour logged here is mainly me creating new Dockerfiles, that don’t have any of the build tools in the live server. Idk what to show, here is some screenshot from the server I set up:
Devlog #5: Final upload After I finally finished uploading everything to the server and fetching all of the 22K products they have, I noticed that the page is kinda laggy if you try displaying all of them at once (who would have thought). So I implemented paging and downloaded everything AGAIN, because idk?. There is db persistence across builds, but I do it on startup anyways. And all of that with 1s delay between requests to avoid getting rate-limited by their server. It took sooo long. Anyways, it is ready for shipping, I hope you enjoy it!
#6 Devlog (not really) Almost forgot to ship this; and I was kinda panicing because the server was broken. Was a quick fix at least. But now I found that the search system is a bit whacky and I am really scared to fix it. Let’s hope I don’t break the server, because it has been some time since I set it up and I have no idea on how to fix it if it breaks.
#6 Devlog (now for real) I had almost given up when I rebuildt the container on my potato server for the 5th time, because I used local builds for the server. But then it just worked!!! It is still a miracle to me how there was nothing that went wrong, but it seems for once the server I set up works properly. Yay!!! Now is really time for shipping
Whoops! I forgot the README. Now its there.
Mods: The proejct description and the ship still say that it may have startup times. This is no longer true. Could someone remove that as I can’t do that any longer? Fixing shiping #2 Now we have proper hosting without any cold starts. Additionally we now also have cloudflare caching for that extra performance. And while I was at it I added a very simple favicon too
Ships:
I structured this a bit like a FAQ so you don’t have to read everything; read whatever sections you find interesting TLDR A website with live data about products from the austrian grocery store “SPAR”. You can search filter, … It was my first time touching react and I learned quite a bit about docker. I also used some new rust libraries for serialization and hosing api endpoints Troubleshooting The server is a bit unstable, it might be unreachable if it hasn’t been accessed in a while and need a few minutes to start back up again. I don’t have a SSL certificate, so the browser might show something like “The connection is insecure. Are you sure you want to proceed?”. This is fine, it just means that the traffic between you and the serve is not encrypted. Just don’t put your bank credentials there, okay? What is this? You can use this to view prices of SPAR (a austrian grocery store). It has live data (unless I forget to start the update) and some nice search filters. Currently only products from one brand, but the design allows easy addition of further brands. Why are some parts of the website in german? Since SPAR is an austrian vendor, the product names are of course in german and the legal stuff is in german too for that reason. The rest is in english so you guys don’t need a translator. My experience So first I wanted to do this project to do some web dev again, after only doing local (mostly cli) stuff for a while. But this time in rust. First I struggeled a bit with Docker, because my AI was halluzinating again (thats on me though for using the trashy free model), but the implementation of the web scraping was pretty and db insertion was not too difficult, if I remember correctly after 3 months. Then I used react for frontend, which I knew nothing about, but after our Chatty gave me some hints on how to make things work it was fine. I also have to confess the html is ai-generated, because thats the part I really don’t care about. Price tracker ? It is called a price tracker, but it really isn’t. Once upon a time it was intended to be one, I ditched that feature in favor of storm (my other project). I never changed the name though…...
|
1793350334.9498591
|
1793436734.9498591
|
|
57118
|
My own app! by @G_Diva299 | Stardance
|
G_Diva299
|
2
|
2.0
|
16
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-21T14:05:44Z", "hours": 1.0, "multiplier": 4.2, "payout": 6, "blessing": "neutral", "text": "Sick Bae is a healthcare support app I’m working on with students on my mind. The idea was inspired by my school’s sick bay and the experiences of students who have to balance schoolwork, classes and other responsibilities while also dealing with health concerns. Sometimes, a student may feel unwell but be unsure about what to do. Other times, students visit the school nurse for concerns that could first benefit from basic health guidance. I also thought about students who feel shy or uncomfortable asking for help when something is wrong. I wanted to create something that could make getting basic health information easier and help students know when they need to seek further assistance. Sick Bae is not meant to replace a school nurse or other healthcare professional. Instead, it provides basic guidance while encouraging students to seek professional help whenever necessary. What I found challenging is the new programming language and framework I had to use which are dart and flutter respectively. This project was a bit challenging and broadened my skills for which I’m very grateful. Please let me know you’re thoughts about it", "repo": "https://github.com/gDiva-blip/Sick-bae", "demo": "https://gdiva-blip.github.io/Sick-bae/"}, {"ship_num": 2, "ts": "2026-09-08T01:48:12Z", "hours": 1.0, "multiplier": 8.4, "payout": 10, "blessing": "neutral", "text": "Sick Bay is a healthcare support app I’m creating. I haven’t created any apps before so new languages lie Dart and frameworks like flutter were a bit challenging to use", "repo": "https://github.com/gDiva-blip/Sick-bae", "demo": "https://gdiva-blip.github.io/Sick-bae/"}]...
|
[{"post_id": 76266, "ts": "202 [{"post_id": 76266, "ts": "2026-10-02T23:56:14Z", "hours": 0.4411, "text": "Today I fixed the broken-heart icon in Sick Bae’s header and corrected the error that was stopping the app from building for the web. I also set up automatic deployment through GitHub Actions. The latest build passed, and the app is now available for anyone to view at https://gdiva-blip.github.io/Sick-bae/ . I’m going to change the app launcher icon in the next devlog, byeeee!!!!"}, {"post_id": 72891, "ts": "2026-09-23T23:36:30Z", "hours": 0.3119, "text": "Today I continued developing Sick Bae and focused on improving the health-guidance experience. I added a Get Help option so users can access additional support from health personnel instead of relying only on information provided by the app. I also connected this into the health guidance flow and removed the old timezone/world-clock screen because it wasn’t central to the app’s purpose. I ran flutter analyze and got No issues found, then committed and pushed the changes to GitHub. I also spent time troubleshooting Hackatime because my recorded coding time isn’t matching the amount of time I’ve actually spent working in my Code space. The tracker is installed and configured, but my dashboard is currently showing significantly less time than expected. I’m continuing to investigate this while working on the app. To be honest, it’s really frustrating because I spend hours sometimes but currently, my entire projects has just two hours logged like what the heck! The app is now further along and I’m continuing toward a polished, review-ready demo."}, {"post_id": 68834, "ts": "2026-09-15T20:36:03Z", "hours": 0.3333, "text": "Ok. So today, I tried to setup the project for multiple platforms including Android, iOS, macOS, Windows and web. Still not done though. I fixed some Git issues and got my repository back to a clean state. Then, I redesigned the home screen since they’re a limited number of symptoms. So instead of choosing from already existing symptoms, users can describe what’s actually wrong with them hence the “What’s going on section”. It stills doesn’t really give feedback which I’ll continue tomorrow. The best part of today is that; I confirmed that the deployment worked and was able to install the preview on my PC. Oh yeah and the world clock feature isn’t really necessary. I was just trying something, even forgot to add a devlog on that."}, {"post_id": 67768, "ts": "2026-09-14T00:39:05Z", "hours": 0.3, "text": "At first, I didn’t understand the concept of a demo url so my demo url just kept taking me back to the readme file on my repository, but my reviewer drew my attention to it. I fully understood it and worked on it : Demo readiness. I set up and verified Linux desktop support. Cleaned up the flutter project and got flutter analyze passing. Verified the app could actually build and run. Addes flutter web support so the app could be demonstrated from my code space. Built the web version successfully. Served the web build through the code space. Configured a forwarded demo url so someone outside my code space can access the actual app. Verified that the url opens the Sick-bae interface and not just the GitHub ReadMe. Prepared the project for reviewer recertification. https://gdiva-blip.github.io/Sick-bae/"}, {"post_id": 63962, "ts": "2026-09-08T01:42:51Z", "hours": 0.7461, "text": "I’m working on the symptoms tab; trying to add features"}, {"post_id": 63427, "ts": "2026-09-07T08:26:44Z", "hours": 0.4394, "text": "I worked on developing SickBae;an application designed purposefully for students, to help them acess basic heath info and get guidance when they aren’t feeling well. This is to say, in the school environment during their hectic schedules. I’m working on improving the app’s design and user experience"}]...
|
Title: My own app! by @G_Diva299 | Stardance
Devl Title: My own app! by @G_Diva299 | Stardance
Devlogs:
I worked on developing SickBae;an application designed purposefully for students, to help them acess basic heath info and get guidance when they aren’t feeling well. This is to say, in the school environment during their hectic schedules. I’m working on improving the app’s design and user experience
I’m working on the symptoms tab; trying to add features
At first, I didn’t understand the concept of a demo url so my demo url just kept taking me back to the readme file on my repository, but my reviewer drew my attention to it. I fully understood it and worked on it : Demo readiness. I set up and verified Linux desktop support. Cleaned up the flutter project and got flutter analyze passing. Verified the app could actually build and run. Addes flutter web support so the app could be demonstrated from my code space. Built the web version successfully. Served the web build through the code space. Configured a forwarded demo url so someone outside my code space can access the actual app. Verified that the url opens the Sick-bae interface and not just the GitHub ReadMe. Prepared the project for reviewer recertification. https://gdiva-blip.github.io/Sick-bae/
Ok. So today, I tried to setup the project for multiple platforms including Android, iOS, macOS, Windows and web. Still not done though. I fixed some Git issues and got my repository back to a clean state. Then, I redesigned the home screen since they’re a limited number of symptoms. So instead of choosing from already existing symptoms, users can describe what’s actually wrong with them hence the “What’s going on section”. It stills doesn’t really give feedback which I’ll continue tomorrow. The best part of today is that; I confirmed that the deployment worked and was able to install the preview on my PC. Oh yeah and the world clock feature isn’t really necessary. I was just trying something, even forgot to add a devlog on that.
Today I continued developing Sick Bae and focused on improving the health-guidance experience. I added a Get Help option so users can access additional support from health personnel instead of relying only on information provided by the app. I also connected this into the health guidance flow and removed the old timezone/world-clock screen because it wasn’t central to the app’s purpose. I ran flutter analyze and got No issues found, then committed and pushed the changes to GitHub. I also spent time troubleshooting Hackatime because my recorded coding time isn’t matching the amount of time I’ve actually spent working in my Code space. The tracker is installed and configured, but my dashboard is currently showing significantly less time than expected. I’m continuing to investigate this while working on the app. To be honest, it’s really frustrating because I spend hours sometimes but currently, my entire projects has just two hours logged like what the heck! The app is now further along and I’m continuing toward a polished, review-ready demo.
Today I fixed the broken-heart icon in Sick Bae’s header and corrected the error that was stopping the app from building for the web. I also set up automatic deployment through GitHub Actions. The latest build passed, and the app is now available for anyone to view at https://gdiva-blip.github.io/Sick-bae/ . I’m going to change the app launcher icon in the next devlog, byeeee!!!!
Ships:
Sick Bay is a healthcare support app I’m creating. I haven’t created any apps before so new languages lie Dart and frameworks like flutter were a bit challenging to use
Sick Bae is a healthcare support app I’m working on with students on my mind. The idea was inspired by my school’s sick bay and the experiences of students who have to balance schoolwork, classes and other responsibilities while also dealing with health concerns. Sometimes, a student may feel unwell but be unsure about what to do. Other times, students visit the school nurse for concerns that could first benefit from basic health guidance. I also thought about students who feel shy or uncomfortable asking for help when something is wrong. I wanted to create something that could make getting basic health information easier and help students know when they need to seek further assistance. Sick Bae is not meant to replace a school nurse or other healthcare professional. Instead, it provides basic guidance while encouraging students to seek professional help whenever necessary. What I found challenging is the new programming language and framework I had to use which are dart and flutter respectively. This project was a bit challenging and broadened my skills for which I’m very grateful. Please let me know you’re thoughts about it...
|
1793256462.2774856
|
1793342862.2774856
|
|
41358
|
my project manager by @flyingfish | Stardance
|
flyingfish
|
1
|
93.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-03T01:05:33Z", "hours": 93.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "this is a project manager that i made. you have probably seen tones of project managers but this one is slightly different . the main things that i wanted to make for this i want it to be something you can keep on your desktop at all times. another thing i wanted to do is project ideas. i have hundreds of project ideas but its hard to remember all of them so i wanted to make a project manager that can store a list off all these ideas however at the same time i want a project manager that can still hold all my project data to help develop. so i also added that in but i also want something that will also have some simple use full tools so i added them all in to one a project manager / project idea list / simple tools some of the tools i added is stop watch quick notes timer you can click a button to copy the time i also was very car full to make it not take up a lot of ram so you can just leave it open i also tried to make to make it so in the future i can add stuff i am thinning a calculator and stuff also this was my first experience with qml/qt and it was an awesome learning experience", "repo": "https://github.com/dinotiger01/pproject-manager", "demo": "https://github.com/dinotiger01/pproject-manager/releases/tag/1.0.0"}]...
|
[{"post_id": 76265, "ts": "202 [{"post_id": 76265, "ts": "2026-10-02T23:44:29Z", "hours": 4.1353, "text": "read me stuff i had a friend test it really fast he told me some problem then i fixed them then i wrote a long read me file"}, {"post_id": 76049, "ts": "2026-10-02T05:54:58Z", "hours": 11.0783, "text": "last minut changes there were tones of bugs because the JSON was made with spaghetti code so it was index out of range every where so i had to just go through all of them 1x1 i also made a windows build"}, {"post_id": 75464, "ts": "2026-09-30T05:22:40Z", "hours": 8.0217, "text": "i be doing json so i made it so that all the the difrent types of data have an edit menu and it saves it to json so you can have the file saved basicly every page has a edit page that repaces everything with text boxes and edits it"}, {"post_id": 75341, "ts": "2026-09-29T19:44:46Z", "hours": 11.8719, "text": "editing and creating data i am making it so that you can edit the data in the projects. i am posting becouse of the 10hr limit i will make a goood devlog later to day"}, {"post_id": 74378, "ts": "2026-09-27T08:36:35Z", "hours": 10.255, "text": "some wack ui i did like a ton of crap i did the clear ui the files indents timer most of the functiuoanlty links can now open in a tab and the parts tab can expand and contract tasks can be checked on and off i seperated the elements in the qml so there arnt sync bugs"}, {"post_id": 74083, "ts": "2026-09-26T17:09:55Z", "hours": 8.7236, "text": "i started the logic i have the bulk of it done just not all of it i made most of the variables load into the qml before in my other project i hade the cpp and the qml talk to each other and it was suppper jaky so now i basicly have the cpp controlling the entirer thing i made it so it can view files using recursion i think it was a cool way to do it idk also i have seperated the qml in to like 500 difrent files becouse it is just esier to use that way i also desided to ditch the sql becouse it takes a lot of set up and i am going to try to use json lastime i used nolmman it kept breaking so hopefully i can figure it out this time"}, {"post_id": 73630, "ts": "2026-09-25T15:19:27Z", "hours": 5.4989, "text": "i made the task description and i started the logic part"}, {"post_id": 54714, "ts": "2026-08-25T19:48:03Z", "hours": 2.9869, "text": "so like i havent worked on this project like at all idk how i got 2-3 hrs on it if yo are a goi you can deflate this devlog"}, {"post_id": 47609, "ts": "2026-08-15T16:48:28Z", "hours": 7.2122, "text": "i made the home page i also spent like a really long time getting git hub set up on the left i have tasks that i want to do today on the right there is some quick notes and the time if you click the time it will take you to a timer/ stopwatch"}, {"post_id": 39265, "ts": "2026-08-02T03:56:52Z", "hours": 4.6489, "text": "Calender i spent a lot of time coming up with the genral lay out i am planing to refine it more latter"}, {"post_id": 38975, "ts": "2026-08-01T16:25:04Z", "hours": 4.5603, "text": "project page it is not the list page there difrent i finished up the project page list on the left there is a list that will hold all projects i am working on each list item holds 4 things picture/logo title * short description of the project * button to open a bigger description drecription this is a page that you quick ly see and be riminded of what your project does there is a title and picture at the top there is quick links to make feting to certent parts of your project easyer then there is a place where you can list all the featues and constraints you want font.pointSize: parent.height - 15 > parent.width/ text.length ? parent.width/ text.length : parent.height - 15 this code snipit was something i wrote that makes it so that text auto scales withe the page i just thought it was cool it works by setting the point size to the height but this would have not worked if the box gets to tall so what i did was to check if the width or height is small then do the smaller one and to check the width i devise the width by the text.lenghth"}, {"post_id": 38346, "ts": "2026-07-31T18:04:34Z", "hours": 2.7083, "text": "so i managed to make negative progress i forgot to save then today has been kinda bad and my code was just really bad so it ended up worst then before"}, {"post_id": 37426, "ts": "2026-07-30T04:28:29Z", "hours": 7.2503, "text": "ui is really buggy so i am using like the really weird color to help me see and design better but in the future i want to make it like slighly transparent gray with neon blue highlights in like a semi futureistic style i made the page for the list there is a list of projects o the left this list is auto generated it holds the title of your project you can scroll right title description bugs the scrollview was like really long for sum reason * i think it was beclouds i was using a tab bar witch is normal horezontal * after trying like every thing i ended up making it not a tab bar * i made it a column with with java scrip that checks witch ta is selected for a while all the stuff was layed on ton of one another * it made like this weird lump of assests * ngl i dont realy know how it fixed it just kinda did at sum point and i am not going to try to mes with it if i dont have to"}, {"post_id": 36833, "ts": "2026-07-29T04:27:38Z", "hours": 4.5086, "text": "this is my project manager i have a lot of features i want to add to this but i have never made an actual app before so its a bit of a learning curve hack a time split my stuff in to 2 projects and i dont know why but idk i just lost like 1.5 hr i fixed it by making a new project and linking both projects to it i made 4 tabs that you can switch between with the tab bar at the top"}]...
|
Title: my project manager by @flyingfish | Stardan Title: my project manager by @flyingfish | Stardance
Devlogs:
this is my project manager i have a lot of features i want to add to this but i have never made an actual app before so its a bit of a learning curve hack a time split my stuff in to 2 projects and i dont know why but idk i just lost like 1.5 hr i fixed it by making a new project and linking both projects to it i made 4 tabs that you can switch between with the tab bar at the top
ui is really buggy so i am using like the really weird color to help me see and design better but in the future i want to make it like slighly transparent gray with neon blue highlights in like a semi futureistic style i made the page for the list there is a list of projects o the left this list is auto generated it holds the title of your project you can scroll right title description bugs the scrollview was like really long for sum reason * i think it was beclouds i was using a tab bar witch is normal horezontal * after trying like every thing i ended up making it not a tab bar * i made it a column with with java scrip that checks witch ta is selected for a while all the stuff was layed on ton of one another * it made like this weird lump of assests * ngl i dont realy know how it fixed it just kinda did at sum point and i am not going to try to mes with it if i dont have to
so i managed to make negative progress i forgot to save then today has been kinda bad and my code was just really bad so it ended up worst then before
project page it is not the list page there difrent i finished up the project page list on the left there is a list that will hold all projects i am working on each list item holds 4 things picture/logo title * short description of the project * button to open a bigger description drecription this is a page that you quick ly see and be riminded of what your project does there is a title and picture at the top there is quick links to make feting to certent parts of your project easyer then there is a place where you can list all the featues and constraints you want font.pointSize: parent.height - 15 > parent.width/ text.length ? parent.width/ text.length : parent.height - 15 this code snipit was something i wrote that makes it so that text auto scales withe the page i just thought it was cool it works by setting the point size to the height but this would have not worked if the box gets to tall so what i did was to check if the width or height is small then do the smaller one and to check the width i devise the width by the text.lenghth
Calender i spent a lot of time coming up with the genral lay out i am planing to refine it more latter
i made the home page i also spent like a really long time getting git hub set up on the left i have tasks that i want to do today on the right there is some quick notes and the time if you click the time it will take you to a timer/ stopwatch
so like i havent worked on this project like at all idk how i got 2-3 hrs on it if yo are a goi you can deflate this devlog
i made the task description and i started the logic part
i started the logic i have the bulk of it done just not all of it i made most of the variables load into the qml before in my other project i hade the cpp and the qml talk to each other and it was suppper jaky so now i basicly have the cpp controlling the entirer thing i made it so it can view files using recursion i think it was a cool way to do it idk also i have seperated the qml in to like 500 difrent files becouse it is just esier to use that way i also desided to ditch the sql becouse it takes a lot of set up and i am going to try to use json lastime i used nolmman it kept breaking so hopefully i can figure it out this time
some wack ui i did like a ton of crap i did the clear ui the files indents timer most of the functiuoanlty links can now open in a tab and the parts tab can expand and contract tasks can be checked on and off i seperated the elements in the qml so there arnt sync bugs
editing and creating data i am making it so that you can edit the data in the projects. i am posting becouse of the 10hr limit i will make a goood devlog later to day
i be doing json so i made it so that all the the difrent types of data have an edit menu and it saves it to json so you can have the file saved basicly every page has a edit page that repaces everything with text boxes and edits it
last minut changes there were tones of bugs because the JSON was made with spaghetti code so it was index out of range every where so i had to just go through all of them 1x1 i also made a windows build
read me stuff i had a friend test it really fast he told me some problem then i fixed them then i wrote a long read me file
Ships:
this is a project manager that i made. you have probably seen tones of project managers but this one is slightly different . the main things that i wanted to make for this i want it to be something you can keep on your desktop at all times. another thing i wanted to do is project ideas. i have hundreds of project ideas but its hard to remember all of them so i wanted to make a project manager that can store a list off all these ideas however at the same time i want a project manager that can still hold all my project data to help develop. so i also added that in but i also want something that will also have some simple use full tools so i added them all in to one a project manager / project idea list / simple tools some of the tools i added is stop watch quick notes timer you can click a button to copy the time i also was very car full to make it not take up a lot of ram so you can just leave it open i also tried to make to make it so in the future i can add stuff i am thinning a calculator and stuff also this was my first experience with qml/qt and it was an awesome learning experience...
|
1793353719.3017004
|
1793440119.3017004
|
|
49748
|
Portfolio Website by @DaintyDust | Stardance
|
DaintyDust
|
3
|
48.0
|
253
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-03T00:20:00Z", "hours": 3.0, "multiplier": 14.51, "payout": 44, "blessing": "neutral", "text": "In the reviews on my previous ships, people gave me alot of feedback on things that were missing or bugged, So i fixed most of them this update. First people asked for a for a fill tool. Secondly a few people pointed out that in a low grid size the paint page was really laggy. Lastly people mentioned that the mobile version was pretty bad. Try out the paint page at: https://daintydust.dev/paint Check out the site at: https://daintydust.dev", "repo": "https://github.com/DaintyDust/DaintyDust.github.io", "demo": "https://daintydust.dev/paint"}, {"ship_num": 2, "ts": "2026-09-30T21:13:00Z", "hours": 12.0, "multiplier": 7.38, "payout": 86, "blessing": "neutral", "text": "I added a sandbox page so people can play around with the text and pixel colors since alot of reviews like that! you can access it at https://daintydust.dev/sandbox (or press “ctrl+/” on any page to popup the commands menu But I didn’t find that enough, i wanted more. So a friend of mine suggested making a kind of paint program where you can draw pixels, shapes and text!", "repo": "https://github.com/DaintyDust/DaintyDust.github.io", "demo": "https://daintydust.dev/paint"}, {"ship_num": 3, "ts": "2026-09-23T21:00:04Z", "hours": 33.0, "multiplier": 5.24, "payout": 123, "blessing": "neutral", "text": "I made a portfolio website to show of my projects. I made the site using react + mantine because mantine UI makes it really easy to add and create components. In the beginning it was pretty challenging because i never created a site in react or with mantine before. So i had to learn all of those from the beginning A friend of mine recommended mantine UI, because it has really nice looking UI components, its free and its opensource! Since i updated my already existing site and rewriting it in react + mantine. I already had a stylesheet to style my website. So i could easily reuse that. Visit the site at: https://daintydust.dev View my portfolio at: https://daintydust.dev/portfolio", "repo": "https://github.com/DaintyDust/DaintyDust.github.io", "demo": "https://daintydust.dev/paint"}]...
|
[{"post_id": 76263, "ts": "202 [{"post_id": 76263, "ts": "2026-10-02T23:36:35Z", "hours": 0.6783, "text": "Added proper mobile support by changing some css selectors"}, {"post_id": 76241, "ts": "2026-10-02T20:26:50Z", "hours": 1.1919, "text": "Fixed the lag on small grid sizes by rebuilding the paint rendering by doing these changes: Drawings are now cached on an offscreen canvas and rendered via a single drawImage() call every frame instead of running 30,000+ fillRect() calls per second. Grouped pixels by color to avoid expensive canvas context switching. maybe still needs some work, but its already alot faster for things like text rendering"}, {"post_id": 75990, "ts": "2026-10-01T21:36:37Z", "hours": 1.1967, "text": "I added a fill tool, this was pretty hard to do since there are some complicated calculations that needed to be made. So for the really hard calculations i used forms online and a bit of AI"}, {"post_id": 75720, "ts": "2026-09-30T21:05:46Z", "hours": 3.6944, "text": "added a text tool to my paint page, you can now add text in different sizes. this was pretty easy to do since i already had a system to display text on my homepage, so i reused most stuff for that also added a tech stack to my portfolio, so others can see what languages i can program in. and I fix a bug where the electrons wouldn’t follow the grid when changing the grid size."}, {"post_id": 75381, "ts": "2026-09-29T21:49:13Z", "hours": 6.2064, "text": "Added a page to paint the pixels. https://daintydust.dev/paint you can use tools like: pencil, brush, rectangle, circle, eraser. or change the brush size or grid size. At first i thought it was pretty easy since i already had a working grid system that could display text. But after alot of trial and error i managed to add the first pen tool. After that was done it was pretty easy adding the other tools"}, {"post_id": 74645, "ts": "2026-09-27T20:44:28Z", "hours": 1.8028, "text": "Added a sandbox page so you can play around with the text and colors and stuff. you can also do this by pressing “ctrl + /” on any page. Also added a projects widget so you can easily go to my portfolio from the homepage"}, {"post_id": 72841, "ts": "2026-09-23T20:58:33Z", "hours": 0.8103, "text": "I updated the readme so i can ship my website!"}, {"post_id": 72784, "ts": "2026-09-23T18:49:33Z", "hours": 5.9961, "text": "added a portfolio page to display all the projects that i’ve worked on! I use multiple mantine packages to make the UI creation much easier. for example for the carousel, image compare and lightbox"}, {"post_id": 67646, "ts": "2026-09-13T20:04:53Z", "hours": 2.1081, "text": "added a page to display all my roblox accounts. it fetches the avatars, usernames and group info from the roblox api based on a list of userid’s."}, {"post_id": 63851, "ts": "2026-09-07T20:39:53Z", "hours": 4.6256, "text": "The site was still pretty laggy on lower end devices. So i reduces the amount of electrons for lower end devices. I also rewrote the whole UI with the mantine UI library. because of this i didn’t have to write my own widget dragging system."}, {"post_id": 48241, "ts": "2026-08-16T15:23:22Z", "hours": 19.7219, "text": "Previously my site was really laggy. my pc used 2gb of ram and 90% GPU (on a 3070 😭) on my site alone. This is why i wanted to rewrite the site. my old site just used basic html/css, thats also another reason i wanted to rewrite my site Since i wanted to learn create a site in react a chose that. Changes: Rewrote and redesigned my site in react. Add secret menu to change the text and colors of the site. Added possibility to add more languages"}]...
|
Title: Portfolio Website by @DaintyDust | Stardanc Title: Portfolio Website by @DaintyDust | Stardance
Devlogs:
Previously my site was really laggy. my pc used 2gb of ram and 90% GPU (on a 3070 😭) on my site alone. This is why i wanted to rewrite the site. my old site just used basic html/css, thats also another reason i wanted to rewrite my site Since i wanted to learn create a site in react a chose that. Changes: Rewrote and redesigned my site in react. Add secret menu to change the text and colors of the site. Added possibility to add more languages
The site was still pretty laggy on lower end devices. So i reduces the amount of electrons for lower end devices. I also rewrote the whole UI with the mantine UI library. because of this i didn’t have to write my own widget dragging system.
added a page to display all my roblox accounts. it fetches the avatars, usernames and group info from the roblox api based on a list of userid’s.
added a portfolio page to display all the projects that i’ve worked on! I use multiple mantine packages to make the UI creation much easier. for example for the carousel, image compare and lightbox
I updated the readme so i can ship my website!
Added a sandbox page so you can play around with the text and colors and stuff. you can also do this by pressing “ctrl + /” on any page. Also added a projects widget so you can easily go to my portfolio from the homepage
Added a page to paint the pixels. https://daintydust.dev/paint you can use tools like: pencil, brush, rectangle, circle, eraser. or change the brush size or grid size. At first i thought it was pretty easy since i already had a working grid system that could display text. But after alot of trial and error i managed to add the first pen tool. After that was done it was pretty easy adding the other tools
added a text tool to my paint page, you can now add text in different sizes. this was pretty easy to do since i already had a system to display text on my homepage, so i reused most stuff for that also added a tech stack to my portfolio, so others can see what languages i can program in. and I fix a bug where the electrons wouldn’t follow the grid when changing the grid size.
I added a fill tool, this was pretty hard to do since there are some complicated calculations that needed to be made. So for the really hard calculations i used forms online and a bit of AI
Fixed the lag on small grid sizes by rebuilding the paint rendering by doing these changes: Drawings are now cached on an offscreen canvas and rendered via a single drawImage() call every frame instead of running 30,000+ fillRect() calls per second. Grouped pixels by color to avoid expensive canvas context switching. maybe still needs some work, but its already alot faster for things like text rendering
Added proper mobile support by changing some css selectors
Ships:
I made a portfolio website to show of my projects. I made the site using react + mantine because mantine UI makes it really easy to add and create components. In the beginning it was pretty challenging because i never created a site in react or with mantine before. So i had to learn all of those from the beginning A friend of mine recommended mantine UI, because it has really nice looking UI components, its free and its opensource! Since i updated my already existing site and rewriting it in react + mantine. I already had a stylesheet to style my website. So i could easily reuse that. Visit the site at: https://daintydust.dev View my portfolio at: https://daintydust.dev/portfolio
I added a sandbox page so people can play around with the text and pixel colors since alot of reviews like that! you can access it at https://daintydust.dev/sandbox (or press “ctrl+/” on any page to popup the commands menu But I didn’t find that enough, i wanted more. So a friend of mine suggested making a kind of paint program where you can draw pixels, shapes and text!
In the reviews on my previous ships, people gave me alot of feedback on things that were missing or bugged, So i fixed most of them this update. First people asked for a for a fill tool. Secondly a few people pointed out that in a low grid size the paint page was really laggy. Lastly people mentioned that the mobile version was pretty bad. Try out the paint page at: https://daintydust.dev/paint Check out the site at: https://daintydust.dev...
|
1793342885.5991907
|
1793429285.5991907
|
|
65243
|
Phronova Framework by @AuraMonster | Stardance
|
AuraMonster
|
1
|
27.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-05T17:28:40Z", "hours": 27.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Phronova Ship What is Phronova? Phronova is a Lua (not Luau, that is Roblox) Framework meant to assist you with Website and Desktop development (Like React, Tauri, Next.JS, Dioxus, etc.). Why would I use this? To make websites or desktop apps of course! And if you prefer Lua, then this is for you. I want to know more. Check the Github repository.", "repo": "https://github.com/mdmutahhar24-pixel/Phronova", "demo": "https://github.com/mdmutahhar24-pixel/Phronova/releases/tag/Phronova"}]...
|
[{"post_id": 76261, "ts": "202 [{"post_id": 76261, "ts": "2026-10-02T23:31:05Z", "hours": 2.6839, "text": "Fifth and Final Devlog of Phronova (Framework) New Features: Debug Default template page finished CLI Installation implementation Ship will be soon"}, {"post_id": 75919, "ts": "2026-10-01T16:42:42Z", "hours": 5.8544, "text": "Fourth Devlog of Phronova (Framework) Change of Plans: At first, I was planning Phronova to be a full-stack framework, however, I got an idea for a more interesting project. So therefore, Phronova will start out as a frontend framework, but will later include backend. New Features: Tailwind Template Bootstrap Template Custom CSS Template Debug Terminal Restyled In Progress: Website/App that comes up when you run dev Future Plans: Installer stuff for Desktop App mode. Public CLI for creating Phronova projects"}, {"post_id": 75202, "ts": "2026-09-29T14:02:33Z", "hours": 7.1086, "text": "Third Devlog of Phronova (Framework) New Features: Desktop Renderer Web Renderer/Socket Styles/CSS In Progress: Terminal styling and template select Tailwind and Bootstrap integration (Depending on template) Lua side of frontend Future Features (Subject to change): Phronova’s own version of CSS Routing (Maybe, still not sure) Hot refresh/reload (All it does is automatically refresh the page for you the moment you make changes to your file)"}, {"post_id": 74090, "ts": "2026-09-26T17:22:38Z", "hours": 5.6708, "text": "Second Devlog of Phronova (Framework) New Features: Desktop App WebView2 finished (Cannot show image due to me being in the middle of debugging; Also uses C++ and not Lua for this one) In Progress: Debug Connecting Lua and C++ parts together Future Features (subject to change): Website renderer More Features JavaScript Translation Routing/Custom Backend More"}, {"post_id": 73620, "ts": "2026-09-25T14:29:21Z", "hours": 5.9831, "text": "First Devlog of Phronova (Framework) What is Phronova? Phronova is a framework for Lua (Not Luau, that is Roblox suff), for Web development and Desktop application development, similar to React, Tauri, and other frameworks. New Features: You can create project through terminal You can run project through terminal Custom command for the above features (using batch files) Layout and planning complete Can now convert Lua -> HTML In Progress: WebView/Renderer Planned Features (subject to change): Desktop app integration More commands, features, etc. Custom Backend support (so this will be a full-stack framework)"}]...
|
Title: Phronova Framework by @AuraMonster | Starda Title: Phronova Framework by @AuraMonster | Stardance
Devlogs:
First Devlog of Phronova (Framework) What is Phronova? Phronova is a framework for Lua (Not Luau, that is Roblox suff), for Web development and Desktop application development, similar to React, Tauri, and other frameworks. New Features: You can create project through terminal You can run project through terminal Custom command for the above features (using batch files) Layout and planning complete Can now convert Lua -> HTML In Progress: WebView/Renderer Planned Features (subject to change): Desktop app integration More commands, features, etc. Custom Backend support (so this will be a full-stack framework)
Second Devlog of Phronova (Framework) New Features: Desktop App WebView2 finished (Cannot show image due to me being in the middle of debugging; Also uses C++ and not Lua for this one) In Progress: Debug Connecting Lua and C++ parts together Future Features (subject to change): Website renderer More Features JavaScript Translation Routing/Custom Backend More
Third Devlog of Phronova (Framework) New Features: Desktop Renderer Web Renderer/Socket Styles/CSS In Progress: Terminal styling and template select Tailwind and Bootstrap integration (Depending on template) Lua side of frontend Future Features (Subject to change): Phronova’s own version of CSS Routing (Maybe, still not sure) Hot refresh/reload (All it does is automatically refresh the page for you the moment you make changes to your file)
Fourth Devlog of Phronova (Framework) Change of Plans: At first, I was planning Phronova to be a full-stack framework, however, I got an idea for a more interesting project. So therefore, Phronova will start out as a frontend framework, but will later include backend. New Features: Tailwind Template Bootstrap Template Custom CSS Template Debug Terminal Restyled In Progress: Website/App that comes up when you run dev Future Plans: Installer stuff for Desktop App mode. Public CLI for creating Phronova projects
Fifth and Final Devlog of Phronova (Framework) New Features: Debug Default template page finished CLI Installation implementation Ship will be soon
Ships:
Phronova Ship What is Phronova? Phronova is a Lua (not Luau, that is Roblox) Framework meant to assist you with Website and Desktop development (Like React, Tauri, Next.JS, Dioxus, etc.). Why would I use this? To make websites or desktop apps of course! And if you prefer Lua, then this is for you. I want to know more. Check the Github repository....
|
1793213713.5188909
|
1793300113.5188909
|
|
17066
|
Project: BLACKHAWK by @oMeatball | Stardance
|
oMeatball
|
0
|
0.51
|
0
|
[]
|
[{"post_id": 7626, "ts": "2026 [{"post_id": 7626, "ts": "2026-06-12T19:04:38Z", "hours": 0.5089, "text": "Code is Finished. Now for testing!!"}]...
|
Title: Project: BLACKHAWK by @oMeatball | Stardanc Title: Project: BLACKHAWK by @oMeatball | Stardance
Devlogs:
Code is Finished. Now for testing!!...
|
1793224128.3969123
|
1793828928.3969123
|
|
67566
|
Personal website by @BlueScreen | Stardance
|
BlueScreen
|
0
|
0.4
|
0
|
[]
|
[{"post_id": 76255, "ts": "202 [{"post_id": 76255, "ts": "2026-10-02T22:23:08Z", "hours": 0.4042, "text": "Originally added emulator, but then removed currently just has a basic placeholder."}]...
|
Title: Personal website by @BlueScreen | Stardance Title: Personal website by @BlueScreen | Stardance
Devlogs:
Originally added emulator, but then removed currently just has a basic placeholder....
|
1793112618.1525538
|
1793717418.1525538
|
|
67354
|
FRC 5113 Puppy by @igowu | Stardance
|
igowu
|
0
|
2.66
|
0
|
[]
|
[{"post_id": 76254, "ts": "202 [{"post_id": 76254, "ts": "2026-10-02T22:20:43Z", "hours": 2.6644, "text": "Puppy - FRC 5113 What is it? Puppy is a robot designed for the REBUILT FRC 2026 game. It is our team’s outreach bot, meaning that it will be used to attract new members into our team during special events. Framework & design The biggest problem when starting this is that the deprecated RoboRIO cannot use the modern robot frameworks (used to control the robot at a high-level). The roboRIO is incompatible with the new frameworks because they are tightly coupled to the newer hardware. To overcome this, I created a new framework that mimics the behavior of the current modern frameworks. It subclasses TimedRobot , allowing for each robot mode to be encapsulated in its own module rather than all lifecycle hooks needing to be in the same class. In other words, this eliminates the problem of a gigantic robot.py file that orchestrates the entire codebase. Here’s a diagram to show how each mode is separated: Robot Framework (inherits from `TimedRobot`) │ ├── DisabledMode ├── AutonomousMode ├── TeleopMode └── TestMode Testing Unit testing robot runtime behavior isn’t feasible. Therefore, I created integration tests to ensure the correct behavior of the lifecycle methods in each mode (i.e. entered, periodic, exited). Robot Code I completed the drivetrain subsystem as a model for the rest of the subsystems to follow. The file structure encapsulates each of the subsystems, making it impossible for other subsystems to talk with or command the hardware of any others. For example: drivetrain/ ├── io/ │ ├── base_io.py │ ├── real_io.py │ └── sim_io.py ├── constants.py ├── drivetrain.py └── controller.py **Note: The image is of our competition bot that we’re going to use for an upcoming offseason event - I couldn’t find one of Puppy. I’ll post one next week!"}]...
|
Title: FRC 5113 Puppy by @igowu | Stardance
Devlo Title: FRC 5113 Puppy by @igowu | Stardance
Devlogs:
Puppy - FRC 5113 What is it? Puppy is a robot designed for the REBUILT FRC 2026 game. It is our team’s outreach bot, meaning that it will be used to attract new members into our team during special events. Framework & design The biggest problem when starting this is that the deprecated RoboRIO cannot use the modern robot frameworks (used to control the robot at a high-level). The roboRIO is incompatible with the new frameworks because they are tightly coupled to the newer hardware. To overcome this, I created a new framework that mimics the behavior of the current modern frameworks. It subclasses TimedRobot , allowing for each robot mode to be encapsulated in its own module rather than all lifecycle hooks needing to be in the same class. In other words, this eliminates the problem of a gigantic robot.py file that orchestrates the entire codebase. Here’s a diagram to show how each mode is separated: Robot Framework (inherits from `TimedRobot`) │ ├── DisabledMode ├── AutonomousMode ├── TeleopMode └── TestMode Testing Unit testing robot runtime behavior isn’t feasible. Therefore, I created integration tests to ensure the correct behavior of the lifecycle methods in each mode (i.e. entered, periodic, exited). Robot Code I completed the drivetrain subsystem as a model for the rest of the subsystems to follow. The file structure encapsulates each of the subsystems, making it impossible for other subsystems to talk with or command the hardware of any others. For example: drivetrain/ ├── io/ │ ├── base_io.py │ ├── real_io.py │ └── sim_io.py ├── constants.py ├── drivetrain.py └── controller.py **Note: The image is of our competition bot that we’re going to use for an upcoming offseason event - I couldn’t find one of Puppy. I’ll post one next week!...
|
1793109125.7370496
|
1793713925.7370496
|
|
67564
|
My very own WebOS by @Ziko | Stardance
|
Ziko
|
0
|
0.34
|
0
|
[]
|
[{"post_id": 76251, "ts": "202 [{"post_id": 76251, "ts": "2026-10-02T22:10:57Z", "hours": 0.3381, "text": "just starting"}]...
|
Title: My very own WebOS by @Ziko | Stardance
Dev Title: My very own WebOS by @Ziko | Stardance
Devlogs:
just starting...
|
1793112613.6312153
|
1793717413.6312153
|
|
24926
|
Automated cat feeder by @Mrpickles07 | Stardance
|
Mrpickles07
|
0
|
35.08
|
0
|
[]
|
[{"post_id": 76240, "ts": "202 [{"post_id": 76240, "ts": "2026-10-02T20:25:19Z", "hours": 11.6669, "text": "I’ve worked on getting all of the settings to be easily editable, and finished up the settings menu. Fixed bugs with setting the hours on 1-12 range Fixed the issues with the initialization of the arrays of different times. Added EEPROM Code to svae settings between power cut-offs. Adjusted the settings menu to be more navigate-able Commented-up the code"}, {"post_id": 63038, "ts": "2026-09-06T16:38:48Z", "hours": 7.115, "text": "So far, on coding, I’ve started up some of the features of the user interface. I’ve coded up the setup for the voice narrated settings with the Talkie PCM library I’ve finished the buttons logic to cycle through the menus Revised the settings menu layout to be more navigatable Working on the actual editing of each setting"}, {"post_id": 38327, "ts": "2026-07-31T17:31:59Z", "hours": 7.0497, "text": "I finally got the whole 3d model done and printed and started on the electronics part. Since I did not add enough space to store the electronics I 3d modeled a part that attaches to the back and stores the electronics. It also has holes for the buttons and speaker and cord. to prevent harm to my cat I cut up a ziploc bag and put the pieces along the walls of where the cat food is being stored so no filament will get in the cat food I got most of the soldering done and started coding. there will be two buttons on the back and you press them to set the time you want it to dispense the cat food the speaker tells you what time you have set. I finally got a new 3d printer and printed some of the parts on it :D"}, {"post_id": 17222, "ts": "2026-06-27T22:43:03Z", "hours": 6.0008, "text": "I worked for six hours and finally got the mechanism to work and completed 90% of the 3d model I finally got most of the 3d modeling done and did some test prints with the new food safe filament I got I did some testing with the mechanism and I confirmed that the mechanism does work (I think) I started the first print today and hopefully it works 🤞(it’s ten hours long)"}, {"post_id": 15341, "ts": "2026-06-24T22:34:12Z", "hours": 3.2494, "text": "Today I stared on my first project, an automated cat feeder. At first I thought of making the dispensing mechanism was just a door that opened and closed but the problem with that was it wasn’t precise enough and would likely get jammed. So I went for a different approach, a rotating wheel that could dispense the cat food in measurable increments. I also did all the measurements for the dimensions of the cat feeder so everything would fit in place. I also did a lot of research on food safe filaments and what kinds of motors to get to make the product actually function. I am really happy with the work I got done today and hopefully by the next devlog I will have the majority of the mechanism working."}]...
|
Title: Automated cat feeder by @Mrpickles07 | Star Title: Automated cat feeder by @Mrpickles07 | Stardance
Devlogs:
Today I stared on my first project, an automated cat feeder. At first I thought of making the dispensing mechanism was just a door that opened and closed but the problem with that was it wasn’t precise enough and would likely get jammed. So I went for a different approach, a rotating wheel that could dispense the cat food in measurable increments. I also did all the measurements for the dimensions of the cat feeder so everything would fit in place. I also did a lot of research on food safe filaments and what kinds of motors to get to make the product actually function. I am really happy with the work I got done today and hopefully by the next devlog I will have the majority of the mechanism working.
I worked for six hours and finally got the mechanism to work and completed 90% of the 3d model I finally got most of the 3d modeling done and did some test prints with the new food safe filament I got I did some testing with the mechanism and I confirmed that the mechanism does work (I think) I started the first print today and hopefully it works 🤞(it’s ten hours long)
I finally got the whole 3d model done and printed and started on the electronics part. Since I did not add enough space to store the electronics I 3d modeled a part that attaches to the back and stores the electronics. It also has holes for the buttons and speaker and cord. to prevent harm to my cat I cut up a ziploc bag and put the pieces along the walls of where the cat food is being stored so no filament will get in the cat food I got most of the soldering done and started coding. there will be two buttons on the back and you press them to set the time you want it to dispense the cat food the speaker tells you what time you have set. I finally got a new 3d printer and printed some of the parts on it :D
So far, on coding, I’ve started up some of the features of the user interface. I’ve coded up the setup for the voice narrated settings with the Talkie PCM library I’ve finished the buttons logic to cycle through the menus Revised the settings menu layout to be more navigatable Working on the actual editing of each setting
I’ve worked on getting all of the settings to be easily editable, and finished up the settings menu. Fixed bugs with setting the hours on 1-12 range Fixed the issues with the initialization of the arrays of different times. Added EEPROM Code to svae settings between power cut-offs. Adjusted the settings menu to be more navigate-able Commented-up the code...
|
1793368104.6213672
|
1793972904.6213672
|
|
54380
|
Space Simulator by @Coverst_dev | Stardance
|
Coverst_dev
|
1
|
19.69
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-01T19:11:08Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an interactive pulsar simulation with 3D magnetic field lines, rotating polar beams, adjustable rotation speed/tilt, camera controls and a few live values. The most annoying part was probably getting the field lines, depth and render order to stop looking weird together, but I got it into a state I’m actually happy with. The physics side is handled through my C++ backend and the rendering is done in Python/Pygame. For testing: arrow keys rotate the camera, scroll zooms, A/D changes rotation speed, W/S changes the magnetic tilt and Space pauses it. I also packaged it into a Windows .exe so you can just download it and try it This is the github release, the website is just for documentation and research purposes, a fancy README https://github.com/Coverst-ux/space-sim/releases/tag/v1.0.0", "repo": "https://github.com/Coverst-ux/space-sim", "demo": "https://coverst-ux.github.io/space-sim-site/"}]...
|
[{"post_id": 76236, "ts": "202 [{"post_id": 76236, "ts": "2026-10-02T19:53:22Z", "hours": 1.0089, "text": "README rework I did a MAJOR readme overhaul by restructuring it into like one continuous story while also making it sound less like a research paper (although the research paper vibe was my goal at the start) Before, my readme was messy with no structure and just mixed into each other My cleanup was mainly just reordering it and changing a few paragraphs to sound less research-y and more fun/story vibe Most of the info was already previously there from the first version of the readme so this session was just about presentation"}, {"post_id": 70686, "ts": "2026-09-19T16:21:18Z", "hours": 2.6603, "text": "Energy loss Normally, a pulsar loses energy when the magnetic field rotates. My simulation previously didn’t account for that. So that brought me to the idea of making the pulsar more realistic by implementing an energy loss system that causes the pulsar to slow down over time New physics that was implemented Magnetic field radiation power: Calculated how much rotational energy the pulsar loses Spin down: Using that energy loss to calculate how quickly the velocity decreases Sneak peek into the actual physics behind this : P = -I × Ω × Ω̇ Where: P is the power radiated by the pulsar, measured in watts. I is the pulsar’s moment of inertia, which describes how difficult it is to change its rotation. Ω is its angular velocity, measured in radians per second. Ω̇ is the rate of change of angular velocity, measured in radians per second squared. The negative sign is for the loss of rotational energy. Since the pulsar is slowing down, its spin down rate is negative, while the pulsar’s radiated power is positive Lastly, connecting everything I updated my pybind11 bindings to integrate the new C++ code into my pygame visualization. I also made sure that rotation speed doesn’t cause the magnetic axis to jump and that everything works as intended https://github.com/Coverst-ux/Space-sim-Cpp-Port"}, {"post_id": 68154, "ts": "2026-09-14T16:36:48Z", "hours": 3.0175, "text": "I spent most of my time today polishing up my README for the stardance so I can actually reship the project I really just broke down the details of the stardance/pulsar work with a little more explanation so the reader knows what’s going on such as rotation period, light cylinder, magnetic dipole field, etc… Finally, I updated the demo website on my github to have the github icon actually point to the source code instead of just pointing to my general github profile Probably not my most productive/impressive session but definitely was needed Any feedback or suggestions is greatly appreciated!"}, {"post_id": 59804, "ts": "2026-09-01T19:06:45Z", "hours": 0.9639, "text": "I just finished the final touches on the pulsar visualization. I changed the beams to be more cone-like for visualization purposes, added control panel functionality and packaged it all into a .exe for you guys to try I’ll try to create alternative for the goated non-Windows users https://github.com/Coverst-ux/space-sim/releases/tag/v1.0.0 <- .exe file https://github.com/Coverst-ux/space-sim <- github repo/readme"}, {"post_id": 59062, "ts": "2026-08-31T17:33:54Z", "hours": 2.1881, "text": "I thought the hardest part would be the pulsar physics, turns out it was the rendering that was a genuine pain I reworked the field lines into 3D instead of the ugly previous 2D, added rotation, added a beam that you see in pulsars, and basic camera controls. I’m quite happy with how its all coming together."}, {"post_id": 57528, "ts": "2026-08-29T18:16:30Z", "hours": 1.4236, "text": "Devlog 3 The pulsar is finally starting to look 3D Today I connected it to the camera system from the rest of the simulator, so I can rotate and zoom around it properly now. I also added a 3D background starfield, which surprisingly helped a lot because you can actually between the front and the back of the simulation The magnetic field lines were also moved from 2D plane into a 3D plane around the neutron star. I added some glow to them and worked on a feature where the lines that go behind it just disappear instead of awkwardly just being in the background There were a couple annoying bugs with lines randomly disappearing and even entering the star itself, but those are fixed now It still has a LONG way to go visually, but I think it’s starting to resemble the kind of pulsar simulation I had in mind"}, {"post_id": 57147, "ts": "2026-08-29T07:51:10Z", "hours": 2.9142, "text": "Devlog 2 I finally got the rendering to an (Okay?) place. Most of my work was on the physics side of the pulsar. Which isn’t exactly the “most exciting” per se. So I decided to get the visualization and get it looking like an actual simulation instead of a bunch of nerdy physics. The big blue ball in the middle is the neutron star ofc. And those lines are the magnetic field lines that surround the star. Tracing them was quite the pain. I had to trace the magnetic field from all the different points around the star. Then, figure out how to like follow it in both directions and have a copy of each field line on each side as you can see. It is DEFINITELY not staying like this. I wanna get it up to par with the rest of my work which is in the README (go check it out 😊). Although, not having models/assets is a big obstacle so I’m forced to draw everything with Pygame. Currently, the physics is simplified so I can get a minimum viable product of the simulation. So now I’m stuck between two choices: A) Get the simulator to look significantly better or B) Unsimplify the physics and make it technically impressive I’ll go start figuring out that one next"}, {"post_id": 56261, "ts": "2026-08-27T23:15:52Z", "hours": 5.8097, "text": "Researched and wrote notes for the simplified pulsar physics. Implemented the 3D magnetic field calculation. Tested the logic, scaling, and guards for invalid behavior. Compiled the pulsar module and confirmed that all tests passed. My next course of action would probably be connecting the C++ physics engine to python for visualization."}]...
|
Title: Space Simulator by @Coverst_dev | Stardance Title: Space Simulator by @Coverst_dev | Stardance
Devlogs:
Researched and wrote notes for the simplified pulsar physics. Implemented the 3D magnetic field calculation. Tested the logic, scaling, and guards for invalid behavior. Compiled the pulsar module and confirmed that all tests passed. My next course of action would probably be connecting the C++ physics engine to python for visualization.
Devlog 2 I finally got the rendering to an (Okay?) place. Most of my work was on the physics side of the pulsar. Which isn’t exactly the “most exciting” per se. So I decided to get the visualization and get it looking like an actual simulation instead of a bunch of nerdy physics. The big blue ball in the middle is the neutron star ofc. And those lines are the magnetic field lines that surround the star. Tracing them was quite the pain. I had to trace the magnetic field from all the different points around the star. Then, figure out how to like follow it in both directions and have a copy of each field line on each side as you can see. It is DEFINITELY not staying like this. I wanna get it up to par with the rest of my work which is in the README (go check it out 😊). Although, not having models/assets is a big obstacle so I’m forced to draw everything with Pygame. Currently, the physics is simplified so I can get a minimum viable product of the simulation. So now I’m stuck between two choices: A) Get the simulator to look significantly better or B) Unsimplify the physics and make it technically impressive I’ll go start figuring out that one next
Devlog 3 The pulsar is finally starting to look 3D Today I connected it to the camera system from the rest of the simulator, so I can rotate and zoom around it properly now. I also added a 3D background starfield, which surprisingly helped a lot because you can actually between the front and the back of the simulation The magnetic field lines were also moved from 2D plane into a 3D plane around the neutron star. I added some glow to them and worked on a feature where the lines that go behind it just disappear instead of awkwardly just being in the background There were a couple annoying bugs with lines randomly disappearing and even entering the star itself, but those are fixed now It still has a LONG way to go visually, but I think it’s starting to resemble the kind of pulsar simulation I had in mind
I thought the hardest part would be the pulsar physics, turns out it was the rendering that was a genuine pain I reworked the field lines into 3D instead of the ugly previous 2D, added rotation, added a beam that you see in pulsars, and basic camera controls. I’m quite happy with how its all coming together.
I just finished the final touches on the pulsar visualization. I changed the beams to be more cone-like for visualization purposes, added control panel functionality and packaged it all into a .exe for you guys to try I’ll try to create alternative for the goated non-Windows users https://github.com/Coverst-ux/space-sim/releases/tag/v1.0.0 <- .exe file https://github.com/Coverst-ux/space-sim <- github repo/readme
I spent most of my time today polishing up my README for the stardance so I can actually reship the project I really just broke down the details of the stardance/pulsar work with a little more explanation so the reader knows what’s going on such as rotation period, light cylinder, magnetic dipole field, etc… Finally, I updated the demo website on my github to have the github icon actually point to the source code instead of just pointing to my general github profile Probably not my most productive/impressive session but definitely was needed Any feedback or suggestions is greatly appreciated!
Energy loss Normally, a pulsar loses energy when the magnetic field rotates. My simulation previously didn’t account for that. So that brought me to the idea of making the pulsar more realistic by implementing an energy loss system that causes the pulsar to slow down over time New physics that was implemented Magnetic field radiation power: Calculated how much rotational energy the pulsar loses Spin down: Using that energy loss to calculate how quickly the velocity decreases Sneak peek into the actual physics behind this : P = -I × Ω × Ω̇ Where: P is the power radiated by the pulsar, measured in watts. I is the pulsar’s moment of inertia, which describes how difficult it is to change its rotation. Ω is its angular velocity, measured in radians per second. Ω̇ is the rate of change of angular velocity, measured in radians per second squared. The negative sign is for the loss of rotational energy. Since the pulsar is slowing down, its spin down rate is negative, while the pulsar’s radiated power is positive Lastly, connecting everything I updated my pybind11 bindings to integrate the new C++ code into my pygame visualization. I also made sure that rotation speed doesn’t cause the magnetic axis to jump and that everything works as intended https://github.com/Coverst-ux/Space-sim-Cpp-Port
README rework I did a MAJOR readme overhaul by restructuring it into like one continuous story while also making it sound less like a research paper (although the research paper vibe was my goal at the start) Before, my readme was messy with no structure and just mixed into each other My cleanup was mainly just reordering it and changing a few paragraphs to sound less research-y and more fun/story vibe Most of the info was already previously there from the first version of the readme so this session was just about presentation
Ships:
I made an interactive pulsar simulation with 3D magnetic field lines, rotating polar beams, adjustable rotation speed/tilt, camera controls and a few live values. The most annoying part was probably getting the field lines, depth and render order to stop looking weird together, but I got it into a state I’m actually happy with. The physics side is handled through my C++ backend and the rendering is done in Python/Pygame. For testing: arrow keys rotate the camera, scroll zooms, A/D changes rotation speed, W/S changes the magnetic tilt and Space pauses it. I also packaged it into a Windows .exe so you can just download it and try it This is the github release, the website is just for documentation and research purposes, a fancy README https://github.com/Coverst-ux/space-sim/releases/tag/v1.0.0...
|
1793224288.1247134
|
1793310688.1247134
|
|
67094
|
My awesome macropad! by @Andreas123 | Stardance
|
Andreas123
|
0
|
2.68
|
0
|
[]
|
[{"post_id": 76235, "ts": "202 [{"post_id": 76235, "ts": "2026-10-02T19:49:37Z", "hours": 2.6783, "text": "Helloooo Today I decided to begin designing the PCB of my Micropad. This was the first Time working with kicad and PCBs To get Into the matter I followed the Hackpad Instructions. After I have learned the basics I began designing my own, custom Hackpad It was very fun and I think I will continue tomorrow. Have a Great Dayyy"}]...
|
Title: My awesome macropad! by @Andreas123 | Stard Title: My awesome macropad! by @Andreas123 | Stardance
Devlogs:
Helloooo Today I decided to begin designing the PCB of my Micropad. This was the first Time working with kicad and PCBs To get Into the matter I followed the Hackpad Instructions. After I have learned the basics I began designing my own, custom Hackpad It was very fun and I think I will continue tomorrow. Have a Great Dayyy...
|
1793105665.0191734
|
1793710465.0191734
|
|
2485
|
Pocket Universe by @theinfamousben | Stardance
|
theinfamousben
|
1
|
24.4
|
167
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-11T21:37:22Z", "hours": 23.0, "multiplier": 7.37, "payout": 167, "blessing": "neutral", "text": "Ship 1 Hey guys! I’m proud to announce I’ve developed Pocket Universe to an acceptable degree - with more updates coming soon! Why did I publish so soon? I have a few projects coming up (haven-related) and I want to get this out of the way so I don’t have any unfinished business. What is this project anyways? Pocket Universe is an Interactive Incremental game, which focuses on building up our modern universe from scratch, meaning from the fundamental Interactions up all the way to Galaxies and Nebulae What’s Included in the game right now? I have 4 Generator nodes and 7 Upgrade nodes, with the framework built to add more quickly. Was AI used in this Project? Yes. I used a lot of AI for troubleshooting my final build, as I’ve never built for MacOS and the web before. I also used AI to generate the placeholder SVG images, which will be replaced once the game reaches an alpha / open beta stage.", "repo": "https://github.com/theinfamousben/pocket-universe", "demo": "https://benmudev.itch.io/pocket-universe"}]...
|
[{"post_id": 76232, "ts": "202 [{"post_id": 76232, "ts": "2026-10-02T19:44:55Z", "hours": 1.3992, "text": "Devlog 15 - Trying to make it look a bit better Changes Added Modal Background Moved Menu and Energy Display into Top Bar ** AI was used to generate an SVG for the modal background and to fix the positioning of the elements ** Notes I originally only shipped this project because I thought The event was going to end soon and I was gonna be busy with Haven, but now since the event has been extended, I figured I can continue working on it :)"}, {"post_id": 66193, "ts": "2026-09-11T21:12:27Z", "hours": 2.2889, "text": "Devlog 14 - I am an IDIOT Changes Recreated all SOs to fix their attached script Build 5 broken and 1 working prototype Remove quarks as a resource Add menu with exit button Notes I am the definition of stupid. I had a problem for 2 WHOLE HOURS, and the fix was simply putting the script for the SOs into its own file. I am my own worst enemy, because of my own stupidity. Well, the more you know."}, {"post_id": 63204, "ts": "2026-09-06T21:30:11Z", "hours": 1.4367, "text": "Devlog 13 - double parents :3 Changes Allowed multiple parents per node Fixed false dragging assertions Notes I’m almost done with the base game mechanics, after that it’s just textures, sounds, and gameplay and then I’m ready for my first ship!"}, {"post_id": 63049, "ts": "2026-09-06T16:59:35Z", "hours": 0.9769, "text": "Devlog 12 Changes Added button colors for hover, select, and normal events made button in the Node Info modal uninteractible if node is locked fixed unlocked check for Upgrade Nodes"}, {"post_id": 62782, "ts": "2026-09-06T09:26:48Z", "hours": 0.6336, "text": "Devlog 11 - wow it finally looks okay Changes Added Icons Made NodeInfo Effect Text yellow AI was used to create the icons - This is temporary * until I figure out how to use Inkscape Notes Didn’t do a lot of programming, and unity refused to track my time for some reason, i did more like an hour, so its not a big deal"}, {"post_id": 61042, "ts": "2026-09-03T19:06:58Z", "hours": 1.1097, "text": "Devlog 10 Changes Added 6 Nodes Added 3 Generator Nodes Added 3 Upgrade Nodes Implemented handling of locked/invisible nodes Locked nodes now won’t be able to be bought unless the parent node is bought at least once Nodes behind a locked node are invisible until the locked node is bought Notes This is fun! I’m working on the game mechanics and I’m not running into a lot of issues. All my bugs (except one) were caught pretty early on, so its a win in my book :] That brings me to the one bug, the bane of my existence… For some bizarre reason, clicking on my nodes doesn’t buy them regularly. Sometimes i need to click many many times, and in the log it doesn’t even register that I clicked the nodes! Maybe it has something to do with the epsilon value which i use to distinguish between dragging the screen and selecting a node, which currently evaluates epsilon before the mouseup event, so maybe i can switch it around and it’ll work. maybe… other than that I’m pretty happy with how it’s turning out. I am a bit worried about making textures, though, since they all look like some weird corporate/ai generated logo because i’m not good enough at art / graphic design"}, {"post_id": 60388, "ts": "2026-09-02T18:05:02Z", "hours": 1.29, "text": "Devlog 9 Changes Completed Node Info Box Header Description for the Node Effect, basically what the node does Button to buy the node Added 2 Starting nodes 1 Generator Node named “Fundamental Interaction” 1 Upgrade Node named “Strong Nuclear Force” AI was used in this timespan for troubleshooting max width for the Node info box Notes This was honestly very fun to work on. I’ve really started putting in more time for this project since I’m now under pressure to get it done by the end of summer break (2 weeks :p) I had little trouble figuring everything out, and thanks to some wonderful help from my buddy github copilot i was never truly stuck on anything in this timespan"}, {"post_id": 58253, "ts": "2026-08-30T16:50:28Z", "hours": 1.5778, "text": "Devlog 8 Changes Added Node Info Text Box Shows Title, info about the node, and a button to buy with a set price Refactored Node Script Structure Notes I have been saved by the power of abstract classes! I unified the nodes into one abstract Node class, and made completion classes for Generators and Upgrades. Now it works by simply accessing the base Node class instead of not knowing whether the class is GeneratorNode or UpgradeNode. This makes it much easier. I am planning now to get some interesting node names from physics, like building up from quarks to larger structures, and i also am going to make some textures so the game doesnt look as shitty :p"}, {"post_id": 55915, "ts": "2026-08-27T19:56:21Z", "hours": 2.7292, "text": "Devlog 7.1 Changes Added Line Drawn to Parent node Will be used for hierarchical unlocking in the future Started work on the sidebar Notes Yeah, I’m a bit screwed. The current structure of my nodes is kind of weird; I have two types of nodes: Generators and Upgrades, each having two unique scripts. That’s good, because they have different logic. Thats not so good because they also share some logic. That’s horrific because they sometimes need to be accessed interchangeably. So here are a few things i could do: Merge both scripts into one, with an enum or something for the different node types Make a base which both nodes can inherit and use give up and cry option 3 sounds the easiest right now, my brain is so broken :’)"}, {"post_id": 17851, "ts": "2026-06-28T19:52:53Z", "hours": 3.2889, "text": "Devlog 7 Changes Added Modal Functionality Test Modal for debug purposes Alert Modal for important stuff (save on exit, etc.) Made HUD better for cross-device formatting Included a vertical layout group for all of the displayed currencies Notes It’s been a bit annoying, to say the least. First off, I wanted the Modals to be completely modular from the start, but I kept getting NullReference errors that didn’t make sense to me, so I had to make a script for each modal type and serialize the GameObjects and other stuff individually. It’s not as modular as I want, but what can ya do :p As for the HUD, I hope it works across devices, I sometimes code on my MacBook and sometimes on my PC, and the layout always breaks. I haven’t tested it yet, so I’ll be as surprised as you are if it doesn’t work."}, {"post_id": 13688, "ts": "2026-06-22T13:15:29Z", "hours": 0.8022, "text": "Devlog 6 Changes Added Generator Production cost: Each generator can now require a certain amount of every resource Notes This is a rather small update, but I’m still trying to get back on my feet from my hiatus. More updates coming soon though, I’ve got some more motivation *By the way: If there’s anyone that would like to do some texture designing, I would be more than happy to accept your work! Credit is, of course, guaranteed (I’m working on a credit screen anyways ;p)."}, {"post_id": 12119, "ts": "2026-06-19T19:58:45Z", "hours": 1.2919, "text": "Devlog 5 Changes Added code to allow for generation of different resource types Notes I have been on a long creative block, I can’t really seem to pick up my laptop and continue coding. It might have a bit to do with the fact that I was very busy the last week or so, so i didn’t have much energy and motivation left to program. I kind of forced myself to implement this feature which i half-assed earlier this week, it’s really simple but it’s a start at getting more motivated :) Next week I don’t have as many exams, pressure from DLRG tests and all that stuff, so I’ll have more time to code :]"}, {"post_id": 5092, "ts": "2026-06-08T19:37:39Z", "hours": 1.9783, "text": "Devlog 4 Changes Added functionality to pan & zoom around Moved the HUD (Energy Display) into a separate canvas Notes this took me longer than I’d like to admit, because Unity was being a bit finicky about my GameObject and refused to run its code for some reason. I used AI for troubleshooting the problem, but used none of its code."}, {"post_id": 3443, "ts": "2026-06-06T11:51:02Z", "hours": 1.1675, "text": "Devlog 3 I have continued my work on Pocket Universe, and have added following: Split Node Prefabs into Generator and Upgrade Nodes Added a NodeBoost Scriptable Object Worked on Node Visibility Logic One problem I have is that a lot of the code for Generator and Upgrade Nodes is identical. I would have made a Node Monobehavior script that handles both and individual sub-classes, but that is kind of messy, at least for now. We will see in about 5 Devlogs if I made the right choice :p"}, {"post_id": 3060, "ts": "2026-06-05T23:01:54Z", "hours": 1.4725, "text": "Devlog 2 - Added Nodes for generation These nodes are clickable by the player in order to buy Generators, which create Energy or other resources. They are comparable to the Cell to Singularity nodes. There will be Generator and Upgrade Nodes; Generator Nodes will be able to be bought multiple times, while upgrade nodes will only be able to be bought once."}, {"post_id": 2356, "ts": "2026-06-04T20:06:13Z", "hours": 0.6289, "text": "Starting work This is a really ambitious project I doubt I’ll be able to finish completely by October, but I’ll try to get as far as possible, so lets see :3"}]...
|
Title: Pocket Universe by @theinfamousben | Starda Title: Pocket Universe by @theinfamousben | Stardance
Devlogs:
Starting work This is a really ambitious project I doubt I’ll be able to finish completely by October, but I’ll try to get as far as possible, so lets see :3
Devlog 2 - Added Nodes for generation These nodes are clickable by the player in order to buy Generators, which create Energy or other resources. They are comparable to the Cell to Singularity nodes. There will be Generator and Upgrade Nodes; Generator Nodes will be able to be bought multiple times, while upgrade nodes will only be able to be bought once.
Devlog 3 I have continued my work on Pocket Universe, and have added following: Split Node Prefabs into Generator and Upgrade Nodes Added a NodeBoost Scriptable Object Worked on Node Visibility Logic One problem I have is that a lot of the code for Generator and Upgrade Nodes is identical. I would have made a Node Monobehavior script that handles both and individual sub-classes, but that is kind of messy, at least for now. We will see in about 5 Devlogs if I made the right choice :p
Devlog 4 Changes Added functionality to pan & zoom around Moved the HUD (Energy Display) into a separate canvas Notes this took me longer than I’d like to admit, because Unity was being a bit finicky about my GameObject and refused to run its code for some reason. I used AI for troubleshooting the problem, but used none of its code.
Devlog 5 Changes Added code to allow for generation of different resource types Notes I have been on a long creative block, I can’t really seem to pick up my laptop and continue coding. It might have a bit to do with the fact that I was very busy the last week or so, so i didn’t have much energy and motivation left to program. I kind of forced myself to implement this feature which i half-assed earlier this week, it’s really simple but it’s a start at getting more motivated :) Next week I don’t have as many exams, pressure from DLRG tests and all that stuff, so I’ll have more time to code :]
Devlog 6 Changes Added Generator Production cost: Each generator can now require a certain amount of every resource Notes This is a rather small update, but I’m still trying to get back on my feet from my hiatus. More updates coming soon though, I’ve got some more motivation *By the way: If there’s anyone that would like to do some texture designing, I would be more than happy to accept your work! Credit is, of course, guaranteed (I’m working on a credit screen anyways ;p).
Devlog 7 Changes Added Modal Functionality Test Modal for debug purposes Alert Modal for important stuff (save on exit, etc.) Made HUD better for cross-device formatting Included a vertical layout group for all of the displayed currencies Notes It’s been a bit annoying, to say the least. First off, I wanted the Modals to be completely modular from the start, but I kept getting NullReference errors that didn’t make sense to me, so I had to make a script for each modal type and serialize the GameObjects and other stuff individually. It’s not as modular as I want, but what can ya do :p As for the HUD, I hope it works across devices, I sometimes code on my MacBook and sometimes on my PC, and the layout always breaks. I haven’t tested it yet, so I’ll be as surprised as you are if it doesn’t work.
Devlog 7.1 Changes Added Line Drawn to Parent node Will be used for hierarchical unlocking in the future Started work on the sidebar Notes Yeah, I’m a bit screwed. The current structure of my nodes is kind of weird; I have two types of nodes: Generators and Upgrades, each having two unique scripts. That’s good, because they have different logic. Thats not so good because they also share some logic. That’s horrific because they sometimes need to be accessed interchangeably. So here are a few things i could do: Merge both scripts into one, with an enum or something for the different node types Make a base which both nodes can inherit and use give up and cry option 3 sounds the easiest right now, my brain is so broken :’)
Devlog 8 Changes Added Node Info Text Box Shows Title, info about the node, and a button to buy with a set price Refactored Node Script Structure Notes I have been saved by the power of abstract classes! I unified the nodes into one abstract Node class, and made completion classes for Generators and Upgrades. Now it works by simply accessing the base Node class instead of not knowing whether the class is GeneratorNode or UpgradeNode. This makes it much easier. I am planning now to get some interesting node names from physics, like building up from quarks to larger structures, and i also am going to make some textures so the game doesnt look as shitty :p
Devlog 9 Changes Completed Node Info Box Header Description for the Node Effect, basically what the node does Button to buy the node Added 2 Starting nodes 1 Generator Node named “Fundamental Interaction” 1 Upgrade Node named “Strong Nuclear Force” AI was used in this timespan for troubleshooting max width for the Node info box Notes This was honestly very fun to work on. I’ve really started putting in more time for this project since I’m now under pressure to get it done by the end of summer break (2 weeks :p) I had little trouble figuring everything out, and thanks to some wonderful help from my buddy github copilot i was never truly stuck on anything in this timespan
Devlog 10 Changes Added 6 Nodes Added 3 Generator Nodes Added 3 Upgrade Nodes Implemented handling of locked/invisible nodes Locked nodes now won’t be able to be bought unless the parent node is bought at least once Nodes behind a locked node are invisible until the locked node is bought Notes This is fun! I’m working on the game mechanics and I’m not running into a lot of issues. All my bugs (except one) were caught pretty early on, so its a win in my book :] That brings me to the one bug, the bane of my existence… For some bizarre reason, clicking on my nodes doesn’t buy them regularly. Sometimes i need to click many many times, and in the log it doesn’t even register that I clicked the nodes! Maybe it has something to do with the epsilon value which i use to distinguish between dragging the screen and selecting a node, which currently evaluates epsilon before the mouseup event, so maybe i can switch it around and it’ll work. maybe… other than that I’m pretty happy with how it’s turning out. I am a bit worried about making textures, though, since they all look like some weird corporate/ai generated logo because i’m not good enough at art / graphic design
Devlog 11 - wow it finally looks okay Changes Added Icons Made NodeInfo Effect Text yellow AI was used to create the icons - This is temporary * until I figure out how to use Inkscape Notes Didn’t do a lot of programming, and unity refused to track my time for some reason, i did more like an hour, so its not a big deal
Devlog 12 Changes Added button colors for hover, select, and normal events made button in the Node Info modal uninteractible if node is locked fixed unlocked check for Upgrade Nodes
Devlog 13 - double parents :3 Changes Allowed multiple parents per node Fixed false dragging assertions Notes I’m almost done with the base game mechanics, after that it’s just textures, sounds, and gameplay and then I’m ready for my first ship!
Devlog 14 - I am an IDIOT Changes Recreated all SOs to fix their attached script Build 5 broken and 1 working prototype Remove quarks as a resource Add menu with exit button Notes I am the definition of stupid. I had a problem for 2 WHOLE HOURS, and the fix was simply putting the script for the SOs into its own file. I am my own worst enemy, because of my own stupidity. Well, the more you know.
Devlog 15 - Trying to make it look a bit better Changes Added Modal Background Moved Menu and Energy Display into Top Bar ** AI was used to generate an SVG for the modal background and to fix the positioning of the elements ** Notes I originally only shipped this project because I thought The event was going to end soon and I was gonna be busy with Haven, but now since the event has been extended, I figured I can continue working on it :)
Ships:
Ship 1 Hey guys! I’m proud to announce I’ve developed Pocket Universe to an acceptable degree - with more updates coming soon! Why did I publish so soon? I have a few projects coming up (haven-related) and I want to get this out of the way so I don’t have any unfinished business. What is this project anyways? Pocket Universe is an Interactive Incremental game, which focuses on building up our modern universe from scratch, meaning from the fundamental Interactions up all the way to Galaxies and Nebulae What’s Included in the game right now? I have 4 Generator nodes and 7 Upgrade nodes, with the framework built to add more quickly. Was AI used in this Project? Yes. I used a lot of AI for troubleshooting my final build, as I’ve never built for MacOS and the web before. I also used AI to generate the placeholder SVG images, which will be replaced once the game reaches an alpha / open beta stage....
|
1793339333.743069
|
1793425733.743069
|
|
66593
|
KernOS by @PahalDesai | Stardance
|
PahalDesai
|
1
|
6.32
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-01T16:20:05Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "KernOS KernOS is an x86 hobby operating system written in C and Assembly. It features a custom shell with commands like help , ver , clear , and neofetch , keyboard input, hardware information detection, a Hangman game, and a custom hand-made boot screen. What was challenging The assembly part was very painful. Assembly itself is difficult to understand. after spending a lot of time in assembly and figuring out nothing, I decided to make the kernel in C. It made it much easier. But C was still challenging as it lacked libc. So, the basic functions like printf() , comparison of 2 strings in the if statement, scanf() and all were not available. I had to manually define all of them before using them. I am proud of I made the very first version of a custom operating system with minimal use of ai! what comes in the next ship In the next ship of this project, I will add features to create/edit/delete files and a custom text editor. for people testing the project Download the iso file from the GitHub releases page. use qemu with the following command - qemu-system-i386 -cdrom KernOS.iso -device isa-debug-exit,iobase=0xf4,iosize=0x04", "repo": "https://github.com/pahal-desai/kernel/", "demo": "https://github.com/pahal-desai/kernel/releases/tag/v1.0"}]...
|
[{"post_id": 76223, "ts": "202 [{"post_id": 76223, "ts": "2026-10-02T18:43:22Z", "hours": 0.3178, "text": "Devlog 5 Added testing instructions in the readme file."}, {"post_id": 75910, "ts": "2026-10-01T16:02:40Z", "hours": 1.0883, "text": "Devlog 4 I added a new hangman minigame and a new custom bootscreen (designed by hand on a touchpad :D) This makes kernos ready for the first ship!!"}, {"post_id": 75653, "ts": "2026-09-30T17:24:01Z", "hours": 2.2428, "text": "DEVLOG 3 I finally learnt the proper way to write devlogs :D i added a lot of things:- The logic of commands and outputs Some basic commands like clear, help, ver Neofetch command!! (the beggest one) And an easter egg command I have had a really terrible experience here as i had to define every single thing. It doesn’t have libc. i had to define basic functions like printf() and it coudn’t even compare 2 strings in the if statement. i had to define the compare 2 strings function T_T. but now it’s a nice and good looking CLI os kinda thing ig."}, {"post_id": 75185, "ts": "2026-09-29T12:39:46Z", "hours": 1.4667, "text": "I tried moving to the kernel section. I spent some time programming the kernel in assembly. it was really painful… really…. really…. really…. painful 💔. So i shifted to a kernel written in C. It really made the task much easier than to code in assembly (precisely x86 32 bit protected mode NASM assembly 🥴). I wrote the kernel hello world kinda test program in C (the one used in kernel, da real c is way easier). Also, i used GRUB as the bootloader!"}, {"post_id": 74951, "ts": "2026-09-28T17:38:21Z", "hours": 0.7992, "text": "today i learnt some very basic assembly and wrote my first hello world os!"}]...
|
Title: KernOS by @PahalDesai | Stardance
Devlogs: Title: KernOS by @PahalDesai | Stardance
Devlogs:
today i learnt some very basic assembly and wrote my first hello world os!
I tried moving to the kernel section. I spent some time programming the kernel in assembly. it was really painful… really…. really…. really…. painful 💔. So i shifted to a kernel written in C. It really made the task much easier than to code in assembly (precisely x86 32 bit protected mode NASM assembly 🥴). I wrote the kernel hello world kinda test program in C (the one used in kernel, da real c is way easier). Also, i used GRUB as the bootloader!
DEVLOG 3 I finally learnt the proper way to write devlogs :D i added a lot of things:- The logic of commands and outputs Some basic commands like clear, help, ver Neofetch command!! (the beggest one) And an easter egg command I have had a really terrible experience here as i had to define every single thing. It doesn’t have libc. i had to define basic functions like printf() and it coudn’t even compare 2 strings in the if statement. i had to define the compare 2 strings function T_T. but now it’s a nice and good looking CLI os kinda thing ig.
Devlog 4 I added a new hangman minigame and a new custom bootscreen (designed by hand on a touchpad :D) This makes kernos ready for the first ship!!
Devlog 5 Added testing instructions in the readme file.
Ships:
KernOS KernOS is an x86 hobby operating system written in C and Assembly. It features a custom shell with commands like help , ver , clear , and neofetch , keyboard input, hardware information detection, a Hangman game, and a custom hand-made boot screen. What was challenging The assembly part was very painful. Assembly itself is difficult to understand. after spending a lot of time in assembly and figuring out nothing, I decided to make the kernel in C. It made it much easier. But C was still challenging as it lacked libc. So, the basic functions like printf() , comparison of 2 strings in the if statement, scanf() and all were not available. I had to manually define all of them before using them. I am proud of I made the very first version of a custom operating system with minimal use of ai! what comes in the next ship In the next ship of this project, I will add features to create/edit/delete files and a custom text editor. for people testing the project Download the iso file from the GitHub releases page. use qemu with the following command - qemu-system-i386 -cdrom KernOS.iso -device isa-debug-exit,iobase=0xf4,iosize=0x04...
|
1793216975.8832557
|
1793303375.8832557
|
|
67538
|
Marvelous by @udayprakashgupta999 | Stardance
|
udayprakashgupta999
|
1
|
7.0
|
9
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-02T18:37:35Z", "hours": 7.0, "multiplier": 1.36, "payout": 9, "blessing": "neutral", "text": "during this journey i learned a lot about css and practiced a lot flex-box and pseudo classes i think i have done a great while learning i learned a lot of things like transition and how to fetch a header file and re use that element everywhere in page so that i dont have to write again whole lot of header and use all over the page i made lots of reusable components and learn a lot about file structure .", "repo": "https://github.com/udayprakash999/Marvelous", "demo": "https://udayprakash999.github.io/Marvelous/"}]...
|
[{"post_id": 76221, "ts": "202 [{"post_id": 76221, "ts": "2026-10-02T18:32:08Z", "hours": 6.8108, "text": "First i did the basic html CSS code and Made gallery using Flex-box and also learned a lot of things about CSS , about page took lots of time while i was figuring out how ::before and all the pseudo classes uses case , i learn a lot in this journey"}]...
|
Title: Marvelous by @udayprakashgupta999 | Stardan Title: Marvelous by @udayprakashgupta999 | Stardance
Devlogs:
First i did the basic html CSS code and Made gallery using Flex-box and also learned a lot of things about CSS , about page took lots of time while i was figuring out how ::before and all the pseudo classes uses case , i learn a lot in this journey
Ships:
during this journey i learned a lot about css and practiced a lot flex-box and pseudo classes i think i have done a great while learning i learned a lot of things like transition and how to fetch a header file and re use that element everywhere in page so that i dont have to write again whole lot of header and use all over the page i made lots of reusable components and learn a lot about file structure ....
|
1793217103.8415604
|
1793303503.8415604
|
|
65478
|
My Own Site by @yourfiyan | Stardance
|
yourfiyan
|
0
|
1.75
|
0
|
[]
|
[{"post_id": 76219, "ts": "202 [{"post_id": 76219, "ts": "2026-10-02T18:27:29Z", "hours": 1.7489, "text": "Ok Restart Everything, this time i’m thinking on building a Treelink style personal website Idk here’s the skeleton layout rn i will modify it from here on"}]...
|
Title: My Own Site by @yourfiyan | Stardance
Devl Title: My Own Site by @yourfiyan | Stardance
Devlogs:
Ok Restart Everything, this time i’m thinking on building a Treelink style personal website Idk here’s the skeleton layout rn i will modify it from here on...
|
1793087556.8939264
|
1793692356.8939264
|
|
63502
|
Tic Tac Toe by @Midhunesh | Stardance
|
Midhunesh
|
2
|
4.0
|
1
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-03T09:16:36Z", "hours": 1.0, "multiplier": 1.51, "payout": 1, "blessing": "neutral", "text": "I made a small gaming website of Tic Tac Toe and gave my website a pule with JS. My challenging part was Java Script because it was my fist time coding Java Script. I am really proud that I overcame every hurdles in making this website. There were so many challenges for me in the making of the website. I made this website to make people relief from stress and dive into a world of fun and entertainment. People can consider this project to test as it is a stress reliefer small gaming website !", "repo": "https://github.com/midhuneshbraj123/Tic-Tac-Toe", "demo": "https://midhuneshbraj123.github.io/Tic-Tac-Toe/"}, {"ship_num": 2, "ts": "2026-09-29T17:25:04Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a small gaming website of Tic Tac Toe with detailed animations and gave my website a pule with detailed JS. My challenging part was Java Script because it was my fist time coding Java Script. I am really proud that I overcame every hurdles in making this website. There were so many challenges for me in the making of the website. I made this website to make people relief from stress and dive into a world of fun and entertainment. People can consider this project to test as it is a stress reliefer small gaming website !", "repo": "https://github.com/midhuneshbraj123/Tic-Tac-Toe", "demo": "https://midhuneshbraj123.github.io/Tic-Tac-Toe/"}]...
|
[{"post_id": 76215, "ts": "202 [{"post_id": 76215, "ts": "2026-10-02T18:20:42Z", "hours": 0.4014, "text": "Devlog Number 9: Finally, I made my website so simple and now it looks like very basic. I deleted all the additional animations that I had in my mind and with the help of AI, I coded that but they didn’t approve it. So, I changed everything and I made it only the board and a simple background. I Hope you like it…"}, {"post_id": 75629, "ts": "2026-09-30T16:28:26Z", "hours": 0.2583, "text": "Devlog Number 8: Again it mentioned to edit my project due to 30% usage of AI but I used AI only to learn the keywords and basics of Script Java. Yet, I have redesigned it from the start!"}, {"post_id": 75506, "ts": "2026-09-30T09:38:11Z", "hours": 0.2744, "text": "Devlog Number 7: I shipped my website but they instructed me to do some changes and I have changed some code. I hope this time they will accept my project!"}, {"post_id": 75287, "ts": "2026-09-29T17:15:23Z", "hours": 0.2806, "text": "Devlog Number 7: I have completed my first gaming website. It was a long process and now i have developed a space themed Tic Tac Toe website which gives a relief to you while playing with the computer!!!"}, {"post_id": 75270, "ts": "2026-09-29T16:31:01Z", "hours": 0.5803, "text": "Devlog Number 6: It has reached almost the end of the coding. I am now working on the background of the gaming website. It really looks cool…"}, {"post_id": 75246, "ts": "2026-09-29T15:49:27Z", "hours": 0.6622, "text": "Devlog Number 5: After a long period of time, I learnt to make the java script and I used the help of AI to learn and make the code. It was a really big job…"}, {"post_id": 74895, "ts": "2026-09-28T15:20:51Z", "hours": 0.2933, "text": "Devlog Number 4: I have totally completed CSS and now I have started doing the java. Script. I have to work a lot for java to make the website more interesting…"}, {"post_id": 74883, "ts": "2026-09-28T14:42:51Z", "hours": 0.3572, "text": "Devlog Number 3: I have finally found the solution for the problem and now I am just developing my CSS for the website to make it look more cool and fun. I am developing with the help of AI…"}, {"post_id": 74875, "ts": "2026-09-28T14:15:04Z", "hours": 0.2875, "text": "Devlog Number 2: I have completed the HTML of the mini gaming website and now I am working for CSS. The grid size and allignment is not working properly. So, I am trying to figure out what is wrong!!!"}, {"post_id": 70704, "ts": "2026-09-19T16:49:01Z", "hours": 0.2681, "text": "Devlog Number 1: This is my second website. I have shipped my first website and its under review. This time I decided to build a small beginner game website. It is very interesting because I am going to do Script.js for the first time. I am looking forward to do this website…"}]...
|
Title: Tic Tac Toe by @Midhunesh | Stardance
Devl Title: Tic Tac Toe by @Midhunesh | Stardance
Devlogs:
Devlog Number 1: This is my second website. I have shipped my first website and its under review. This time I decided to build a small beginner game website. It is very interesting because I am going to do Script.js for the first time. I am looking forward to do this website…
Devlog Number 2: I have completed the HTML of the mini gaming website and now I am working for CSS. The grid size and allignment is not working properly. So, I am trying to figure out what is wrong!!!
Devlog Number 3: I have finally found the solution for the problem and now I am just developing my CSS for the website to make it look more cool and fun. I am developing with the help of AI…
Devlog Number 4: I have totally completed CSS and now I have started doing the java. Script. I have to work a lot for java to make the website more interesting…
Devlog Number 5: After a long period of time, I learnt to make the java script and I used the help of AI to learn and make the code. It was a really big job…
Devlog Number 6: It has reached almost the end of the coding. I am now working on the background of the gaming website. It really looks cool…
Devlog Number 7: I have completed my first gaming website. It was a long process and now i have developed a space themed Tic Tac Toe website which gives a relief to you while playing with the computer!!!
Devlog Number 7: I shipped my website but they instructed me to do some changes and I have changed some code. I hope this time they will accept my project!
Devlog Number 8: Again it mentioned to edit my project due to 30% usage of AI but I used AI only to learn the keywords and basics of Script Java. Yet, I have redesigned it from the start!
Devlog Number 9: Finally, I made my website so simple and now it looks like very basic. I deleted all the additional animations that I had in my mind and with the help of AI, I coded that but they didn’t approve it. So, I changed everything and I made it only the board and a simple background. I Hope you like it…
Ships:
I made a small gaming website of Tic Tac Toe with detailed animations and gave my website a pule with detailed JS. My challenging part was Java Script because it was my fist time coding Java Script. I am really proud that I overcame every hurdles in making this website. There were so many challenges for me in the making of the website. I made this website to make people relief from stress and dive into a world of fun and entertainment. People can consider this project to test as it is a stress reliefer small gaming website !
I made a small gaming website of Tic Tac Toe and gave my website a pule with JS. My challenging part was Java Script because it was my fist time coding Java Script. I am really proud that I overcame every hurdles in making this website. There were so many challenges for me in the making of the website. I made this website to make people relief from stress and dive into a world of fun and entertainment. People can consider this project to test as it is a stress reliefer small gaming website !...
|
1793213317.2112708
|
1793299717.2112708
|
|
66291
|
My Portfolio by @revankotapati | Stardance
|
revankotapati
|
1
|
1.55
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-02T16:36:58Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Created a minimalistic version of my portfolio containing some of project overview, contact information, and an about-me section. It was a simple project without much difficulty.", "repo": "https://github.com/RevanK10/Portfolio_V2", "demo": "https://revank10.github.io/Portfolio_V2/"}]...
|
[{"post_id": 76213, "ts": "202 [{"post_id": 76213, "ts": "2026-10-02T18:19:46Z", "hours": 0.5489, "text": "Changed the look of my portfolio to follow my first version that I did when I was in 10th grade for the nostalgic feel."}, {"post_id": 76176, "ts": "2026-10-02T16:15:53Z", "hours": 0.5744, "text": "I am working on my portfolio site. This is just a minimalstic version of the site. I will continue to build on it over time. The site shows 3 of my projects and my contact info, like LinkedIn."}]...
|
Title: My Portfolio by @revankotapati | Stardance
Title: My Portfolio by @revankotapati | Stardance
Devlogs:
I am working on my portfolio site. This is just a minimalstic version of the site. I will continue to build on it over time. The site shows 3 of my projects and my contact info, like LinkedIn.
Changed the look of my portfolio to follow my first version that I did when I was in 10th grade for the nostalgic feel.
Ships:
Created a minimalistic version of my portfolio containing some of project overview, contact information, and an about-me section. It was a simple project without much difficulty....
|
1793216926.8038943
|
1793303326.8038943
|
|
67433
|
TicTacToe Game by @Aayansh | Stardance
|
Aayansh
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-02T17:46:21Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So, this is my small game that i made in my free time ……. So, just download the .exe file and enjoy !!!", "repo": "https://github.com/Aayansh07-07-12/TicTacToe-Game-", "demo": "https://github.com/Aayansh07-07-12/TicTacToe-Game-/releases/tag/v1.0"}]...
|
[{"post_id": 76206, "ts": "202 [{"post_id": 76206, "ts": "2026-10-02T17:44:30Z", "hours": 0.9556, "text": "so i have finally completed the project and fixed all the bugs …."}, {"post_id": 76085, "ts": "2026-10-02T09:33:11Z", "hours": 0.3661, "text": "I have successfully created the UI of the game ….and now i ’m completing it…."}]...
|
Title: TicTacToe Game by @Aayansh | Stardance
Dev Title: TicTacToe Game by @Aayansh | Stardance
Devlogs:
I have successfully created the UI of the game ….and now i ’m completing it….
so i have finally completed the project and fixed all the bugs ….
Ships:
So, this is my small game that i made in my free time ……. So, just download the .exe file and enjoy !!!...
|
1793217088.1533031
|
1793303488.1533031
|
|
61116
|
My Personal Website by @saanvii_agarwall | Stardan My Personal Website by @saanvii_agarwall | Stardance...
|
saanvii_agarwall
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-02T17:30:52Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my personal site, I hope this site outlay can be used by others and at the same time they can be encouraged to make it their own! The hardest challenge was bringing my imagination to life with my limited set of skills. It was a constant compromise of learning and sometimes discarding ideas.", "repo": "https://github.com/saanviiagarwall/my-website", "demo": "https://saanviiagarwall.github.io/my-website/"}]...
|
[{"post_id": 76202, "ts": "202 [{"post_id": 76202, "ts": "2026-10-02T17:27:43Z", "hours": 0.2703, "text": "Little friend who leads you guys to me!"}, {"post_id": 76180, "ts": "2026-10-02T16:38:44Z", "hours": 5.9775, "text": "I’ve been sick, so I have mostly been doing a lot of work on my phone, but safe to say a lot of errors that I had to correct after coming back on the pc. This will be my last bit. Time to bid this project a farewell! Heres a sneak peak fore you guys!! Please rate it, it would mean a lot to me."}, {"post_id": 67570, "ts": "2026-09-13T18:26:42Z", "hours": 0.6228, "text": "QUICK UPDATE after a long break I decided to just go for a simple button, it matches the theme so that’s good for me! Okay next page is in progress see you guys soon :))"}, {"post_id": 67347, "ts": "2026-09-13T12:50:22Z", "hours": 1.4869, "text": "OKAY UPDATE NO 2!!! I Made the “welcome” part finally moving, figured it out (it took me so much time to get it to the perfect timing so it looks like a loop). ANYWAYS next i got the introduction part of the personal website done and dusted this was surprisingly the easiest part! Moving on to whatever you would like to call that ugly button ruining the whole vibe. This was my second attempt at designing it but it doesn’t in the slightest look like the one I have in mind! If anyone could help me out with designs I can try that would fit cyberpunk ui theme I would really appreciate it. PS: I completed cyberpunk edgerunners and WHY IS IT SO SAD SOMEONE HANG ME!!!!"}, {"post_id": 66132, "ts": "2026-09-11T19:04:45Z", "hours": 1.1664, "text": "Today I decided to do start with a personal website, I have always wanted to make one but I ended up procrastinating. This time however I’m determined to complete it. Recently I started watching cyberpunk edgerunners so I wanted to make the website inspired from it, The whole theme kind of went well with the stardance website too! This is so far my homepage I’m still thinking of what else to improve. I would love other’s insight on the aesthetics/working on the site so I can make improvements. Thank you so much for reading if you guys did! ( ̄﹃ ̄)"}]...
|
Title: My Personal Website by @saanvii_agarwall | Title: My Personal Website by @saanvii_agarwall | Stardance
Devlogs:
Today I decided to do start with a personal website, I have always wanted to make one but I ended up procrastinating. This time however I’m determined to complete it. Recently I started watching cyberpunk edgerunners so I wanted to make the website inspired from it, The whole theme kind of went well with the stardance website too! This is so far my homepage I’m still thinking of what else to improve. I would love other’s insight on the aesthetics/working on the site so I can make improvements. Thank you so much for reading if you guys did! ( ̄﹃ ̄)
OKAY UPDATE NO 2!!! I Made the “welcome” part finally moving, figured it out (it took me so much time to get it to the perfect timing so it looks like a loop). ANYWAYS next i got the introduction part of the personal website done and dusted this was surprisingly the easiest part! Moving on to whatever you would like to call that ugly button ruining the whole vibe. This was my second attempt at designing it but it doesn’t in the slightest look like the one I have in mind! If anyone could help me out with designs I can try that would fit cyberpunk ui theme I would really appreciate it. PS: I completed cyberpunk edgerunners and WHY IS IT SO SAD SOMEONE HANG ME!!!!
QUICK UPDATE after a long break I decided to just go for a simple button, it matches the theme so that’s good for me! Okay next page is in progress see you guys soon :))
I’ve been sick, so I have mostly been doing a lot of work on my phone, but safe to say a lot of errors that I had to correct after coming back on the pc. This will be my last bit. Time to bid this project a farewell! Heres a sneak peak fore you guys!! Please rate it, it would mean a lot to me.
Little friend who leads you guys to me!
Ships:
This is my personal site, I hope this site outlay can be used by others and at the same time they can be encouraged to make it their own! The hardest challenge was bringing my imagination to life with my limited set of skills. It was a constant compromise of learning and sometimes discarding ideas....
|
1793206630.2121215
|
1793293030.2121215
|
|
66541
|
MineAlarm by @rapidSpeed | Stardance
|
rapidSpeed
|
0
|
1.72
|
0
|
[]
|
[{"post_id": 76197, "ts": "202 [{"post_id": 76197, "ts": "2026-10-02T17:11:13Z", "hours": 1.7167, "text": "Completed building the pcb. Im trying to add something custom to the pcb, like writings on it or logo sm. Idk what to put, maybe a minecraft logo? I think i should try doing the same for MinePad."}]...
|
Title: MineAlarm by @rapidSpeed | Stardance
Devlo Title: MineAlarm by @rapidSpeed | Stardance
Devlogs:
Completed building the pcb. Im trying to add something custom to the pcb, like writings on it or logo sm. Idk what to put, maybe a minecraft logo? I think i should try doing the same for MinePad....
|
1793098545.0008595
|
1793703345.0008595
|
|
57811
|
PersonalSite by @Pirajin | Stardance
|
Pirajin
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-04T16:45:42Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hey guys, it was my first time building a website… And seeing that my first website is mine it feels amazing… Actually i saw some videos on making your own website from scratch and got it working in the first time and i was so happy and edited somethings in between… So check my website… And an important part to mention, since I used Github to deploy this to the public i made an fake version of the website fully on html which I didn’t document, because it should not be counted in the original website… I’m sorry friends pls see the screenshot, it’s the original website… The difference is just the profile phot and some mis-allignments in the fake one, every others are just the same… So pls try it and Rate my Project… Your rating means a lot!…", "repo": "https://github.com/pirajin28/Personal-Website", "demo": "https://pirajin28.github.io/Personal-Website/INDEX!.html"}]...
|
[{"post_id": 76195, "ts": "202 [{"post_id": 76195, "ts": "2026-10-02T17:10:29Z", "hours": 0.6225, "text": "Finally completed my Personal Site… Thanks to ChatGPT, it helped me learn how to build website from scratch…. Sorry i couldn’t document me learning it…"}, {"post_id": 73155, "ts": "2026-09-24T14:32:18Z", "hours": 0.3697, "text": "Today i completed the css code also. It is the official v1. And I will be creating the v2 soon. Stay tuned."}, {"post_id": 60982, "ts": "2026-09-03T17:43:44Z", "hours": 0.7942, "text": "#Devlog 1 - This is the first time creating a website. I’m currently working on making my personal website which is completely about me… Today I worked for an hour around this, used HTML to create it, got some errors but still managed to solve them and created a prototype, PROTOTYPE 1… Stay tuned to know how I’m going to develop it further!"}]...
|
Title: PersonalSite by @Pirajin | Stardance
Devlo Title: PersonalSite by @Pirajin | Stardance
Devlogs:
#Devlog 1 - This is the first time creating a website. I’m currently working on making my personal website which is completely about me… Today I worked for an hour around this, used HTML to create it, got some errors but still managed to solve them and created a prototype, PROTOTYPE 1… Stay tuned to know how I’m going to develop it further!
Today i completed the css code also. It is the official v1. And I will be creating the v2 soon. Stay tuned.
Finally completed my Personal Site… Thanks to ChatGPT, it helped me learn how to build website from scratch…. Sorry i couldn’t document me learning it…
Ships:
Hey guys, it was my first time building a website… And seeing that my first website is mine it feels amazing… Actually i saw some videos on making your own website from scratch and got it working in the first time and i was so happy and edited somethings in between… So check my website… And an important part to mention, since I used Github to deploy this to the public i made an fake version of the website fully on html which I didn’t document, because it should not be counted in the original website… I’m sorry friends pls see the screenshot, it’s the original website… The difference is just the profile phot and some mis-allignments in the fake one, every others are just the same… So pls try it and Rate my Project… Your rating means a lot!…...
|
1793350257.4178214
|
1793436657.4178214
|
|
57106
|
Mini arduino car by @TheLemonEater | Stardance
|
TheLemonEater
|
1
|
1.25
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T15:31:16Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I tried to build a arduino based car with a ultra sonic sensor so it can detect objects in front of it. For the motors i reused some from a old drone but that is the problem about my project now because the motors where from a drone they were made just to spin with no resistence but when you put them on the ground they need a lot of power to even push the car a little and because i also used a step by step motor module, the motors arent getting enough power so thats why only 2 motors can spin at the same time even if they are in the air. I would have fixed the problem but stardance is almost ending and i have to ship the project.", "repo": "https://github.com/TheLemonEater312/arduino-obstacle-avoiding-car/blob/main/README.md", "demo": ""}]...
|
[{"post_id": 76187, "ts": "202 [{"post_id": 76187, "ts": "2026-10-02T16:53:09Z", "hours": 1.25, "text": "Im back and this time i dissasembled the car because im going to use 2 dc 6v motors so it can actually move now. I also soldered some wires to a dc motor module so i can connect it easier to the arduino and motors. I want to warn anybody that wants to dissasemble a water proof care that it would be so hard and messy because all of the components are covered in silicone(i think) and glue as you can see in the photo."}, {"post_id": 74470, "ts": "2026-09-27T13:29:11Z", "hours": 1.4028, "text": "i had to scrap the rc car idea beacus i dont know how but the ir receptor dosent work but i switched to the first idea that i had and i used a sensor and now when it sees a object in a range of 20cm it will try to go around( i chose 20cm beacus it turns right or left really hard). I mounted everything on the “case” of the car but i left the arduino out beacus i still dont have a way to power it."}, {"post_id": 71144, "ts": "2026-09-20T10:56:03Z", "hours": 1.0853, "text": "i made a wheel for the mototrs. It isnt the best design but i think it will work for a demo"}, {"post_id": 70564, "ts": "2026-09-19T11:31:28Z", "hours": 1.1836, "text": "i mounted everything on the “case” and now i just need to find a way to power the arduino nano beacus the battery that i have only has 3.7v and it isnt enough to power the module and the arduino nano"}, {"post_id": 66494, "ts": "2026-09-12T10:24:10Z", "hours": 1.4956, "text": "i made a case for the car but as you can see i am not that good at 3d modeling but it will do the job"}, {"post_id": 60840, "ts": "2026-09-03T13:48:28Z", "hours": 1.15, "text": "i tested it with more motor,made a battery holder so it can have more power and added a remote but i tested it with only one motor"}, {"post_id": 60340, "ts": "2026-09-02T16:52:48Z", "hours": 0.6544, "text": "tested the reused motors and combined them with a arduino nano and a stepper model module"}]...
|
Title: Mini arduino car by @TheLemonEater | Starda Title: Mini arduino car by @TheLemonEater | Stardance
Devlogs:
tested the reused motors and combined them with a arduino nano and a stepper model module
i tested it with more motor,made a battery holder so it can have more power and added a remote but i tested it with only one motor
i made a case for the car but as you can see i am not that good at 3d modeling but it will do the job
i mounted everything on the “case” and now i just need to find a way to power the arduino nano beacus the battery that i have only has 3.7v and it isnt enough to power the module and the arduino nano
i made a wheel for the mototrs. It isnt the best design but i think it will work for a demo
i had to scrap the rc car idea beacus i dont know how but the ir receptor dosent work but i switched to the first idea that i had and i used a sensor and now when it sees a object in a range of 20cm it will try to go around( i chose 20cm beacus it turns right or left really hard). I mounted everything on the “case” of the car but i left the arduino out beacus i still dont have a way to power it.
Im back and this time i dissasembled the car because im going to use 2 dc 6v motors so it can actually move now. I also soldered some wires to a dc motor module so i can connect it easier to the arduino and motors. I want to warn anybody that wants to dissasemble a water proof care that it would be so hard and messy because all of the components are covered in silicone(i think) and glue as you can see in the photo.
Ships:
I tried to build a arduino based car with a ultra sonic sensor so it can detect objects in front of it. For the motors i reused some from a old drone but that is the problem about my project now because the motors where from a drone they were made just to spin with no resistence but when you put them on the ground they need a lot of power to even push the car a little and because i also used a step by step motor module, the motors arent getting enough power so thats why only 2 motors can spin at the same time even if they are in the air. I would have fixed the problem but stardance is almost ending and i have to ship the project....
|
1793347036.084376
|
1793433436.084376
|
|
67311
|
Vrael by @F3rro_32 | Stardance
|
F3rro_32
|
0
|
1.57
|
0
|
[]
|
[{"post_id": 76184, "ts": "202 [{"post_id": 76184, "ts": "2026-10-02T16:48:07Z", "hours": 1.5653, "text": "Hey guys, how it’s going? I’m working on this super cool project, in my opinion, called Vrael. The idea comes from a need of mine: knowing which songs I listened to every year. I know, you could just take f. e. your spotify data, download it, extract every single record, and there you are. But what I want to achieve is far more interesting. I want to create something that does it live: every time a song plays for at least 75% of its length (maybe I’m gonna fix this value, I still don’t have a fixed percentage), Vrael adds it to that year’s playlist, automatically. No exports, no waiting days for Spotify to send you a zip. At the end of the year you already have “Lifetime 2026” sitting in your library, with every song that actually mattered to you, not the ones you skipped after 10 seconds. Sounds easy, right? Not really. Spotify’s API has no “this song was 75% played” event. So Vrael has to poll what you’re listening to every few seconds and do the math itself. And just checking progress / duration isn’t enough: if you skip ahead to the end of a song, you’d “listen” to it in two polls. So Vrael only counts the progress that could really have happened in the time that passed. If you skip ahead, pause, or restart the song, it doesn’t count. Then there are the limits: a Spotify playlist holds at most 10,000 songs, so I’m doing one playlist per year from the start (and if a year fills one up, it splits into 2026-1, 2026-2…). You’ll also be able to import your old Extended Streaming History, so past years aren’t lost. On top of that I’ll build a small web app (installable as a PWA) with stats like last.fm: top artists, charts, history, a listening heatmap. I must say that last.fm was something that really inspired me, so I have to give some credit also to them. What I did so far: the stack is Python + FastAPI + SQLite. I set up the project, the .env.example and the config module, which fails right away if your Spotify credentials are missing instead of breaking later. Next up: the database layer, where every play and every qualifying song gets saved. See you in the next devlog!"}]...
|
Title: Vrael by @F3rro_32 | Stardance
Devlogs:
He Title: Vrael by @F3rro_32 | Stardance
Devlogs:
Hey guys, how it’s going? I’m working on this super cool project, in my opinion, called Vrael. The idea comes from a need of mine: knowing which songs I listened to every year. I know, you could just take f. e. your spotify data, download it, extract every single record, and there you are. But what I want to achieve is far more interesting. I want to create something that does it live: every time a song plays for at least 75% of its length (maybe I’m gonna fix this value, I still don’t have a fixed percentage), Vrael adds it to that year’s playlist, automatically. No exports, no waiting days for Spotify to send you a zip. At the end of the year you already have “Lifetime 2026” sitting in your library, with every song that actually mattered to you, not the ones you skipped after 10 seconds. Sounds easy, right? Not really. Spotify’s API has no “this song was 75% played” event. So Vrael has to poll what you’re listening to every few seconds and do the math itself. And just checking progress / duration isn’t enough: if you skip ahead to the end of a song, you’d “listen” to it in two polls. So Vrael only counts the progress that could really have happened in the time that passed. If you skip ahead, pause, or restart the song, it doesn’t count. Then there are the limits: a Spotify playlist holds at most 10,000 songs, so I’m doing one playlist per year from the start (and if a year fills one up, it splits into 2026-1, 2026-2…). You’ll also be able to import your old Extended Streaming History, so past years aren’t lost. On top of that I’ll build a small web app (installable as a PWA) with stats like last.fm: top artists, charts, history, a listening heatmap. I must say that last.fm was something that really inspired me, so I have to give some credit also to them. What I did so far: the stack is Python + FastAPI + SQLite. I set up the project, the .env.example and the config module, which fails right away if your Spotify credentials are missing instead of breaking later. Next up: the database layer, where every play and every qualifying song gets saved. See you in the next devlog!...
|
1793109059.806264
|
1793713859.806264
|
|
67118
|
Alarm Clock by @jovanovicv529 | Stardance
|
jovanovicv529
|
0
|
2.34
|
0
|
[]
|
[{"post_id": 76173, "ts": "202 [{"post_id": 76173, "ts": "2026-10-02T15:59:08Z", "hours": 1.455, "text": "Done with the case! Switched to fusion since I know it better"}, {"post_id": 75735, "ts": "2026-09-30T21:52:16Z", "hours": 0.8889, "text": "Done with the pcb for now, I’ll probably add some more components later. I know KiCAD a lot better since the last project."}]...
|
Title: Alarm Clock by @jovanovicv529 | Stardance
Title: Alarm Clock by @jovanovicv529 | Stardance
Devlogs:
Done with the pcb for now, I’ll probably add some more components later. I know KiCAD a lot better since the last project.
Done with the case! Switched to fusion since I know it better...
|
1793105697.925749
|
1793710497.925749
|
|
47270
|
OS of the century by @sriharsha | Stardance
|
sriharsha
|
0
|
2.39
|
0
|
[]
|
[{"post_id": 76172, "ts": "202 [{"post_id": 76172, "ts": "2026-10-02T15:55:42Z", "hours": 0.4964, "text": "I have been working on making an OS name the Nebula OS which is an Space themed OS which has all the basic features required soon i will add an lock screen and add more features"}, {"post_id": 48902, "ts": "2026-08-17T13:47:27Z", "hours": 1.8928, "text": "I have been working on makin an OS But before that i needed to strengthen my basics so i made an Bank website with interactable output window and also an file compression code which compress the size of the file"}]...
|
Title: OS of the century by @sriharsha | Stardance Title: OS of the century by @sriharsha | Stardance
Devlogs:
I have been working on makin an OS But before that i needed to strengthen my basics so i made an Bank website with interactable output window and also an file compression code which compress the size of the file
I have been working on making an OS name the Nebula OS which is an Space themed OS which has all the basic features required soon i will add an lock screen and add more features...
|
1793177255.0462346
|
1793782055.0462346
|
|
65754
|
Python LMC Emulator by @TomTTFB | Stardance
|
TomTTFB
|
0
|
3.62
|
0
|
[]
|
[{"post_id": 76165, "ts": "202 [{"post_id": 76165, "ts": "2026-10-02T15:31:55Z", "hours": 2.0925, "text": "Devlog #2 I started working on the Tkinter GUI, so far it only shows the state of the registers and a “Step” button to do the next instruction But before I started that, i made an assembler, before you would have to count the lines in your program to line up memory addresses. The assembler reads the program twice: once to find every label and note which address it’s on, and again to replace each label with that address, so I can write BRA loop instead of counting the lines and hoping it works. e.g: INP loop OUT SUB one BRZ end BRA loop end HLT one 1 when passed through the assembler: INP OUT SUB 6 BRZ 5 BRA 1 HLT 1 Next up i need to continue on the GUI, adding the memory viewer, reset button and more"}, {"post_id": 74864, "ts": "2026-09-28T14:03:00Z", "hours": 1.5283, "text": "Devlog #1 So far ive made the basic emulator, it works by typing instructions into program.txt then running the script which outputs the state of the registers and the output if the OUT instruction is used Next will be a tkinter GUI to make running and writing programs easier"}]...
|
Title: Python LMC Emulator by @TomTTFB | Stardance Title: Python LMC Emulator by @TomTTFB | Stardance
Devlogs:
Devlog #1 So far ive made the basic emulator, it works by typing instructions into program.txt then running the script which outputs the state of the registers and the output if the OUT instruction is used Next will be a tkinter GUI to make running and writing programs easier
Devlog #2 I started working on the Tkinter GUI, so far it only shows the state of the registers and a “Step” button to do the next instruction But before I started that, i made an assembler, before you would have to count the lines in your program to line up memory addresses. The assembler reads the program twice: once to find every label and note which address it’s on, and again to replace each label with that address, so I can write BRA loop instead of counting the lines and hoping it works. e.g: INP loop OUT SUB one BRZ end BRA loop end HLT one 1 when passed through the assembler: INP OUT SUB 6 BRZ 5 BRA 1 HLT 1 Next up i need to continue on the GUI, adding the memory viewer, reset button and more...
|
1792457358.6344204
|
1793321358.6344204
|
|
64733
|
Realtab by @realguyxgammer | Stardance
|
realguyxgammer
|
0
|
0.81
|
0
|
[]
|
[{"post_id": 76156, "ts": "202 [{"post_id": 76156, "ts": "2026-10-02T15:07:46Z", "hours": 0.8094, "text": "HELLOO everyone today I did the setup and everything today for the project and wrote the index part and started planning for the color contrasts and theme i want this project to look upon also started with javascript part. This is my 2nd time making this project so i wont be confused as i was before lol so yeah i am done for today would take my sweet little time to complete this project"}]...
|
Title: Realtab by @realguyxgammer | Stardance
Dev Title: Realtab by @realguyxgammer | Stardance
Devlogs:
HELLOO everyone today I did the setup and everything today for the project and wrote the index part and started planning for the color contrasts and theme i want this project to look upon also started with javascript part. This is my 2nd time making this project so i wont be confused as i was before lol so yeah i am done for today would take my sweet little time to complete this project...
|
1793065973.0046887
|
1793670773.0046887
|
|
41167
|
GamePad 9 by @anael | Stardance
|
anael
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-02T15:08:13Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a macropad called “GamePad 9” which has 9 keys, 1 rotary encoder and an OLED screen. This was my first hardware project and it has been such an amazing journey. I have found a new interest and even switched my intended major from CS to engineering. I am proud of how well I was able to do soldering this time as the last project I worked on was a mess and I ruined 3 boards. Check out the project video. I will also make a new top case and play around with the OLED UI in my free time.", "repo": "https://github.com/anaelm1/GamePad-9", "demo": ""}]...
|
[{"post_id": 76155, "ts": "202 [{"post_id": 76155, "ts": "2026-10-02T15:00:33Z", "hours": 2.1197, "text": "LAST DEVLOG I assembled everything. It works perfectly, and I am really happy with the results."}, {"post_id": 44600, "ts": "2026-08-10T14:00:12Z", "hours": 3.7169, "text": "DEVLOG 4 I tried to write the firmware in QMK, but it was getting errors for some reason. I even tried copy pasting direct Gemini code, but it still didn’t compile. Then I switched to KMK, and it was comparatively simple. I write the firmware in KMK, and then wrote my readme. Now my next devlog will, hopefully, be me physically building it."}, {"post_id": 44190, "ts": "2026-08-09T19:55:04Z", "hours": 7.4542, "text": "DEVLOG 3 I WOULDN’T WISH FUSION ON EVEN MY WORST ENEMY! Yesterday, I completed the PCB design, and I thought the 3D model will be done quicker than the PCB, but I was so wrong. It took me 3 hours just to get the rectangle and its walls. The software really confused me although I know how to use Blender. I ended up completing the design after locking in. See the design please! Tomorrow is firmware day."}, {"post_id": 43349, "ts": "2026-08-08T15:35:51Z", "hours": 4.7167, "text": "DEVLOG 2 After locking in for 5 hours, I have managed to make the PCB board. It wasn’t dificult to make it, but I accidentally went in the rabbit hole of adding too many components. There weren’t enough wire layers for me to route 10 leds, oled, roller, and the 7 key matrix. I tried multiple time with different layouts but it was not working. In the end, I gave up on the backlights, added an 8th key and finished the pcb. Check it out! Please let me know if something is done wrong."}, {"post_id": 41575, "ts": "2026-08-05T21:19:02Z", "hours": 1.2083, "text": "DEVLOG #1 Hey! This is my first log. I tested out how the whole ecosystem works, and I also did the setups for the two softwares I am going to need for this project. Along with this, I designed my first ever PCB that is of the 3-key Hackpad (shown in the tutorial). It’s a fun software! I am going to start working on how matrices work because I want my Hackpad to be stacked."}]...
|
Title: GamePad 9 by @anael | Stardance
Devlogs:
D Title: GamePad 9 by @anael | Stardance
Devlogs:
DEVLOG #1 Hey! This is my first log. I tested out how the whole ecosystem works, and I also did the setups for the two softwares I am going to need for this project. Along with this, I designed my first ever PCB that is of the 3-key Hackpad (shown in the tutorial). It’s a fun software! I am going to start working on how matrices work because I want my Hackpad to be stacked.
DEVLOG 2 After locking in for 5 hours, I have managed to make the PCB board. It wasn’t dificult to make it, but I accidentally went in the rabbit hole of adding too many components. There weren’t enough wire layers for me to route 10 leds, oled, roller, and the 7 key matrix. I tried multiple time with different layouts but it was not working. In the end, I gave up on the backlights, added an 8th key and finished the pcb. Check it out! Please let me know if something is done wrong.
DEVLOG 3 I WOULDN’T WISH FUSION ON EVEN MY WORST ENEMY! Yesterday, I completed the PCB design, and I thought the 3D model will be done quicker than the PCB, but I was so wrong. It took me 3 hours just to get the rectangle and its walls. The software really confused me although I know how to use Blender. I ended up completing the design after locking in. See the design please! Tomorrow is firmware day.
DEVLOG 4 I tried to write the firmware in QMK, but it was getting errors for some reason. I even tried copy pasting direct Gemini code, but it still didn’t compile. Then I switched to KMK, and it was comparatively simple. I write the firmware in KMK, and then wrote my readme. Now my next devlog will, hopefully, be me physically building it.
LAST DEVLOG I assembled everything. It works perfectly, and I am really happy with the results.
Ships:
I made a macropad called “GamePad 9” which has 9 keys, 1 rotary encoder and an OLED screen. This was my first hardware project and it has been such an amazing journey. I have found a new interest and even switched my intended major from CS to engineering. I am proud of how well I was able to do soldering this time as the last project I worked on was a mess and I ruined 3 boards. Check out the project video. I will also make a new top case and play around with the OLED UI in my free time....
|
1793353642.4469697
|
1793440042.4469697
|
|
67264
|
Sunless-pad by @cosmic79conqueror | Stardance
|
cosmic79conqueror
|
0
|
2.05
|
0
|
[]
|
[{"post_id": 76153, "ts": "202 [{"post_id": 76153, "ts": "2026-10-02T14:45:27Z", "hours": 1.0939, "text": "done with cad the cad project is done now too!! phew it really was hard work. i got a few warnings and errors and had to use ai to help me debug them. NOw moving onto arduino"}, {"post_id": 75892, "ts": "2026-10-01T14:54:09Z", "hours": 0.9586, "text": "made the sc and pcb I really wanted sunny’s weaver mask on my hackpad cad but it didnt happen so i researched and setteled on a half oni mask. i made the schematic and pcb and downloaded the oni model. next i have to do the cad and firmware"}]...
|
Title: Sunless-pad by @cosmic79conqueror | Stardan Title: Sunless-pad by @cosmic79conqueror | Stardance
Devlogs:
made the sc and pcb I really wanted sunny’s weaver mask on my hackpad cad but it didnt happen so i researched and setteled on a half oni mask. i made the schematic and pcb and downloaded the oni model. next i have to do the cad and firmware
done with cad the cad project is done now too!! phew it really was hard work. i got a few warnings and errors and had to use ai to help me debug them. NOw moving onto arduino...
|
1793108992.2002687
|
1793713792.2002687
|
|
66623
|
My own site! by @andrewmkbuilds | Stardance
|
andrewmkbuilds
|
0
|
0.37
|
0
|
[]
|
[{"post_id": 76152, "ts": "202 [{"post_id": 76152, "ts": "2026-10-02T14:43:45Z", "hours": 0.3664, "text": "Finishing up my Website real quick"}]...
|
Title: My own site! by @andrewmkbuilds | Stardance Title: My own site! by @andrewmkbuilds | Stardance
Devlogs:
Finishing up my Website real quick...
|
1793101756.9188673
|
1793706556.9188673
|
|
67455
|
Tetris by @LawlietSky | Stardance
|
LawlietSky
|
1
|
0.0
|
2
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-02T13:39:39Z", "hours": 0.0, "multiplier": 5.19, "payout": 2, "blessing": "neutral", "text": "I had made this Tetris for the program Shrink, but I had to cut down a lot of the features I wanted, so here is the full ver. I hope you will enjoy it. since I already had the source code, it didn’t take me a while to re fetch it and make some minor tweaks, so this is a short one but its a good one none the less.", "repo": "https://github.com/Retrox112/Tetris", "demo": "https://retrox112.github.io/Tetris/"}]...
|
[{"post_id": 76134, "ts": "202 [{"post_id": 76134, "ts": "2026-10-02T13:37:48Z", "hours": 0.3478, "text": "I am working on Uploading the full ver. of my One line tetris that i had shipped for the program, shrink. i had to cut out a lot of features so as to fit it all under the 3kb limit but i still wanted people to enjoy the full game, so its here."}]...
|
Title: Tetris by @LawlietSky | Stardance
Devlogs: Title: Tetris by @LawlietSky | Stardance
Devlogs:
I am working on Uploading the full ver. of my One line tetris that i had shipped for the program, shrink. i had to cut out a lot of features so as to fit it all under the 3kb limit but i still wanted people to enjoy the full game, so its here.
Ships:
I had made this Tetris for the program Shrink, but I had to cut down a lot of the features I wanted, so here is the full ver. I hope you will enjoy it. since I already had the source code, it didn’t take me a while to re fetch it and make some minor tweaks, so this is a short one but its a good one none the less....
|
1793217097.9380686
|
1793303497.9380686
|
|
64352
|
BLARE by @Catkartik | Stardance
|
Catkartik
|
0
|
2.28
|
0
|
[]
|
[{"post_id": 76127, "ts": "202 [{"post_id": 76127, "ts": "2026-10-02T12:59:22Z", "hours": 0.8739, "text": "I have made a basic enclosure for the clock this time :O"}, {"post_id": 71682, "ts": "2026-09-21T09:33:03Z", "hours": 0.9, "text": "Now i made it better Ok so basically i have made it so that there are only 3 buttons because the routing of those 6 buttons was difficult with the idea i had originally. Now its an old ruined gamepad type clock which i have to cad next once i find that this is accurate"}, {"post_id": 71618, "ts": "2026-09-21T05:30:17Z", "hours": 0.5064, "text": "I have made a schematic for my blaze clock (Or is it blare?? idk) So i followed the tutorial and made the schematic but instead of using 4 switches i used 6 Stay hydrated!"}]...
|
Title: BLARE by @Catkartik | Stardance
Devlogs:
I Title: BLARE by @Catkartik | Stardance
Devlogs:
I have made a schematic for my blaze clock (Or is it blare?? idk) So i followed the tutorial and made the schematic but instead of using 4 switches i used 6 Stay hydrated!
Now i made it better Ok so basically i have made it so that there are only 3 buttons because the routing of those 6 buttons was difficult with the idea i had originally. Now its an old ruined gamepad type clock which i have to cad next once i find that this is accurate
I have made a basic enclosure for the clock this time :O...
|
1793062361.1943495
|
1793667161.1943495
|
|
62428
|
Shareiff by @Koy | Stardance
|
Koy
|
0
|
5.36
|
0
|
[]
|
[{"post_id": 76122, "ts": "202 [{"post_id": 76122, "ts": "2026-10-02T11:50:38Z", "hours": 3.6839, "text": "DevLog[1] - “Early Beginnings” Hi againnnnnn In this devlog I kept working on the schematic, as well as did further research into the technologies that are going to be used (smarts) I found a display that I would like to use and I wired it in! I also realized that I wired VDD and VSS wrong (power positive and negative, respectively) The last part of the schematic is going to be the bluetooth antenna and then we’ll be ready to move on to the next step! (Caine Digital Circus’ voice) Look at the rat’s nest! isn’t it beautiful Have a nice day!"}, {"post_id": 70894, "ts": "2026-09-19T23:31:03Z", "hours": 1.6764, "text": "DevLog[0] - Patient learning Hiiiiiiiii This project might be a bit harder than I thought (very hard) But worry not! my ego won’t let me leave it even if I tried What I did: The main decisions - I decided to use an STM32WBA65RIV6 (I think I spelt that right ) over a USB 2.0 connection. “But isn’t that MCU way over-the-top?” yes “And isn’t USB 2.0 super slow” indeed So what’s up? The MCU - I decided to use this MCU for two main reasons: it has a LOT of memory: I am writing the firmware myself and if there’s one thing I can’t do (there are many) it’s work properly under hard restrictions. it has a TON of GPIOs: I don’t yet fully know what this will do, my intention is that it would be an actually usable open-source (and hackable!) device, so any extra pin helps (bonus ) It’s not really expensive Bad USB - This one actually hurt. After some research I realized that my options were either: Use the onboard USB on the MCU, knowing it’s slow af write a whole USB driver, which would require a fundamental understanding of concepts I don’t have almost any grasp on, just to attempt to understand the amount of datasheets I would need to read through, all for a side project. If anyone knows of a better way to do this, I would really love to know. Have a nice dayy :33 <3"}]...
|
Title: Shareiff by @Koy | Stardance
Devlogs:
DevL Title: Shareiff by @Koy | Stardance
Devlogs:
DevLog[0] - Patient learning Hiiiiiiiii This project might be a bit harder than I thought (very hard) But worry not! my ego won’t let me leave it even if I tried What I did: The main decisions - I decided to use an STM32WBA65RIV6 (I think I spelt that right ) over a USB 2.0 connection. “But isn’t that MCU way over-the-top?” yes “And isn’t USB 2.0 super slow” indeed So what’s up? The MCU - I decided to use this MCU for two main reasons: it has a LOT of memory: I am writing the firmware myself and if there’s one thing I can’t do (there are many) it’s work properly under hard restrictions. it has a TON of GPIOs: I don’t yet fully know what this will do, my intention is that it would be an actually usable open-source (and hackable!) device, so any extra pin helps (bonus ) It’s not really expensive Bad USB - This one actually hurt. After some research I realized that my options were either: Use the onboard USB on the MCU, knowing it’s slow af write a whole USB driver, which would require a fundamental understanding of concepts I don’t have almost any grasp on, just to attempt to understand the amount of datasheets I would need to read through, all for a side project. If anyone knows of a better way to do this, I would really love to know. Have a nice dayy :33 <3
DevLog[1] - “Early Beginnings” Hi againnnnnn In this devlog I kept working on the schematic, as well as did further research into the technologies that are going to be used (smarts) I found a display that I would like to use and I wired it in! I also realized that I wired VDD and VSS wrong (power positive and negative, respectively) The last part of the schematic is going to be the bluetooth antenna and then we’ll be ready to move on to the next step! (Caine Digital Circus’ voice) Look at the rat’s nest! isn’t it beautiful Have a nice day!...
|
1793044412.8031127
|
1793649212.8031127
|
|
16684
|
UU_OS by @DD_403 | Stardance
|
DD_403
|
0
|
1.83
|
0
|
[]
|
[{"post_id": 7612, "ts": "2026 [{"post_id": 7612, "ts": "2026-06-12T18:40:51Z", "hours": 1.8267, "text": "This is the first devlog of my Minecraft-themed Web OS! I have finished the first part - the welcome screen, including multicolored text and background, multiple different headings, and a rounded image. The hardest part was styling the image. First, it started “crunching.” Multiple times, I tried using style=object-fit: cover, but it failed. However, when I read the Google instructions more carefully, I realized that I had to include it in the same place as the width and height, and it worked! I used the same method to fix the border-radius issue, and the image came out exactly as I wanted!"}]...
|
Title: UU_OS by @DD_403 | Stardance
Devlogs:
This Title: UU_OS by @DD_403 | Stardance
Devlogs:
This is the first devlog of my Minecraft-themed Web OS! I have finished the first part - the welcome screen, including multicolored text and background, multiple different headings, and a rounded image. The hardest part was styling the image. First, it started “crunching.” Multiple times, I tried using style=object-fit: cover, but it failed. However, when I read the Google instructions more carefully, I realized that I had to include it in the same place as the width and height, and it worked! I used the same method to fix the border-radius issue, and the image came out exactly as I wanted!...
|
1792752796.7811635
|
1793357596.7811635
|
|
7088
|
Hsoj.is-a.dev by @Hsoj | Stardance
|
Hsoj
|
0
|
7.19
|
0
|
[]
|
[{"post_id": 76109, "ts": "202 [{"post_id": 76109, "ts": "2026-10-02T10:26:34Z", "hours": 7.1914, "text": "After 7 hours of locked-in coding, ….I think I am about halfway(??) done with this project. Here are the things I did: I went with the retro/terminal look for my site. I like to doomscroll unique looking sites in my free time, so I was very excited when I finally started making my own. I learned a lot about tailwind css while designing it. To the point that I can now confidently write tailwind classes without looking at the docs. I made 3 color palettes (and a switcher). I couldn’t decide between them, so I thought why not just make a color palette switcher on the site. And that’s what I did. I added a music player …because why not :) I also added a guestbook feature Credits to https://guestbooks.meadow.cafe/ for enabling me to add this feature I deployed the site using cloudflare pages I just want to say that Cloudflare Pages suck! I spent an hour just trying to get it to deploy correctly. (Why is it not as easy as Vercel??) Though I guess that was why I chose it because I had no experience in it before. My next TODO’s: Finish the Blog Rendering Feature for the Blogs Page Add the Projects Cards for the Projects Page PS: Nevermind the “I am 18 years old” part of the site. I won’t actually turn 18 until November lol. PPS: You can visit the site @ https://hsoj-is-a-dev.pages.dev/"}]...
|
Title: Hsoj.is-a.dev by @Hsoj | Stardance
Devlogs Title: Hsoj.is-a.dev by @Hsoj | Stardance
Devlogs:
After 7 hours of locked-in coding, ….I think I am about halfway(??) done with this project. Here are the things I did: I went with the retro/terminal look for my site. I like to doomscroll unique looking sites in my free time, so I was very excited when I finally started making my own. I learned a lot about tailwind css while designing it. To the point that I can now confidently write tailwind classes without looking at the docs. I made 3 color palettes (and a switcher). I couldn’t decide between them, so I thought why not just make a color palette switcher on the site. And that’s what I did. I added a music player …because why not :) I also added a guestbook feature Credits to https://guestbooks.meadow.cafe/ for enabling me to add this feature I deployed the site using cloudflare pages I just want to say that Cloudflare Pages suck! I spent an hour just trying to get it to deploy correctly. (Why is it not as easy as Vercel??) Though I guess that was why I chose it because I had no experience in it before. My next TODO’s: Finish the Blog Rendering Feature for the Blogs Page Add the Projects Cards for the Projects Page PS: Nevermind the “I am 18 years old” part of the site. I won’t actually turn 18 until November lol. PPS: You can visit the site @ https://hsoj-is-a-dev.pages.dev/...
|
1792795978.5264335
|
1793400778.5264335
|
|
45886
|
DeskPet by @Cherish9 | Stardance
|
Cherish9
|
1
|
7.08
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-19T14:27:53Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Building a smart “DeskPet” companion with Arduino & Python! It tracks my daily water intake, monitors room temperature and humidity to tell me when to open a window, and keeps my desk healthy.", "repo": "https://github.com/Cherish-everything/DeskPet-A-well-being-assistant", "demo": ""}]...
|
[{"post_id": 76106, "ts": "202 [{"post_id": 76106, "ts": "2026-10-02T10:22:33Z", "hours": 1.9503, "text": "Build an enclosure on freecad! Honestly it was my first time building an enclosure with the pcb model, it wasn’t too bad actually. And I’m getting used to cad now. My next update would be probably cleaning up my code and organizing my repository for this"}, {"post_id": 75830, "ts": "2026-10-01T08:53:01Z", "hours": 1.1331, "text": "I’m working on a schematic for deskpet, this is like my second PCB design project, next session I will work on the pcb itself!"}, {"post_id": 50326, "ts": "2026-08-19T14:26:25Z", "hours": 0.31, "text": "Just logging the time I spent debugging a bit and documenting the project for the demo video"}, {"post_id": 47404, "ts": "2026-08-15T10:00:45Z", "hours": 1.3736, "text": "I’m finalizing my deskpet v1: just a simple working prototype since this project is intended as a learning project so I won’t expand on it too much. Today I got it to take water intake logs through a button you press and it reminds you to open a window or drink water while you’re working. Initially wanted to add a screen but I ran out of jumper wires:/ Flipping hell I missspelled deskpet on lapse so the hardware part isn’t recorded aka about 15 minutes of me debugging a button only to find out it was faulty"}, {"post_id": 44463, "ts": "2026-08-10T07:13:46Z", "hours": 1.0239, "text": "Tried adding music to the buzzer lol and added a water sensor to remind to drink"}, {"post_id": 43814, "ts": "2026-08-09T07:47:40Z", "hours": 0.9183, "text": "The code + prototype circuit. My first time using these sensors for an actual project!"}]...
|
Title: DeskPet by @Cherish9 | Stardance
Devlogs:
Title: DeskPet by @Cherish9 | Stardance
Devlogs:
The code + prototype circuit. My first time using these sensors for an actual project!
Tried adding music to the buzzer lol and added a water sensor to remind to drink
I’m finalizing my deskpet v1: just a simple working prototype since this project is intended as a learning project so I won’t expand on it too much. Today I got it to take water intake logs through a button you press and it reminds you to open a window or drink water while you’re working. Initially wanted to add a screen but I ran out of jumper wires:/ Flipping hell I missspelled deskpet on lapse so the hardware part isn’t recorded aka about 15 minutes of me debugging a button only to find out it was faulty
Just logging the time I spent debugging a bit and documenting the project for the demo video
I’m working on a schematic for deskpet, this is like my second PCB design project, next session I will work on the pcb itself!
Build an enclosure on freecad! Honestly it was my first time building an enclosure with the pcb model, it wasn’t too bad actually. And I’m getting used to cad now. My next update would be probably cleaning up my code and organizing my repository for this
Ships:
Building a smart “DeskPet” companion with Arduino & Python! It tracks my daily water intake, monitors room temperature and humidity to tell me when to open a window, and keeps my desk healthy....
|
1793324859.1231637
|
1793411259.1231637
|
|
57727
|
Time waster by @JAME | Stardance
|
JAME
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-02T10:26:24Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a silly little python game! Throughout the process I learnt so much more about python and I’m so much more confident now. Enjoy!", "repo": "https://github.com/OneJame/time-waster", "demo": "https://github.com/OneJame/time-waster/releases/tag/v1"}]...
|
[{"post_id": 76103, "ts": "202 [{"post_id": 76103, "ts": "2026-10-02T10:12:21Z", "hours": 1.6097, "text": "I finished it! After hours of work on this silly little game idea, I finally have it at a state I’m happy to ship it in. There is five different sections so far, each taking an obnoxiously long time to figure out. I did a lot of text styling for this, I learnt a lot about python!"}, {"post_id": 69402, "ts": "2026-09-16T23:57:34Z", "hours": 1.5128, "text": "Some Styling! I’ve mainly been working on styling text for my time wasting python script. I’m still not sure how much I like it but I’ll keep working on it for now."}, {"post_id": 62804, "ts": "2026-09-06T10:10:39Z", "hours": 0.5869, "text": "Some charecter development / lore?? Yeah, I can’t think of anything else to add so i’m currently adding more of a story to the program. I should be bug fixing, but bug fixing sucks."}, {"post_id": 60677, "ts": "2026-09-03T06:09:12Z", "hours": 1.4417, "text": "Moved to stardance! I’ve been working on this simple python program for quite a while, mainly just to practice different parts of python. I think it’s actually pretty fun to play though so I decided to start fully developing it. It currently has a random number roller, fake loading screens, a CAPTCHA and math. Today I finished the finish the lyrics section, its completely random and is pretty much just a 50% chance you get it right. I’m not sure if I love it though so I might change it later on. :)"}]...
|
Title: Time waster by @JAME | Stardance
Devlogs:
Title: Time waster by @JAME | Stardance
Devlogs:
Moved to stardance! I’ve been working on this simple python program for quite a while, mainly just to practice different parts of python. I think it’s actually pretty fun to play though so I decided to start fully developing it. It currently has a random number roller, fake loading screens, a CAPTCHA and math. Today I finished the finish the lyrics section, its completely random and is pretty much just a 50% chance you get it right. I’m not sure if I love it though so I might change it later on. :)
Some charecter development / lore?? Yeah, I can’t think of anything else to add so i’m currently adding more of a story to the program. I should be bug fixing, but bug fixing sucks.
Some Styling! I’ve mainly been working on styling text for my time wasting python script. I’m still not sure how much I like it but I’ll keep working on it for now.
I finished it! After hours of work on this silly little game idea, I finally have it at a state I’m happy to ship it in. There is five different sections so far, each taking an obnoxiously long time to figure out. I did a lot of text styling for this, I learnt a lot about python!
Ships:
I made a silly little python game! Throughout the process I learnt so much more about python and I’m so much more confident now. Enjoy!...
|
1793350222.205441
|
1793436622.205441
|
|
63248
|
My own site! by @gurliv | Stardance
|
gurliv
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-08T15:12:27Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my personal site! this is my very first website, I don’t have any experience, but it was super fun to learn. I had problems with making the link on Github, and I ended up trying a total of 8 times (yikes) but thats honestly kind of funny. I did eventually get it so that is great. In the end, all I want to say is that this was a fun build.", "repo": "https://github.com/gurliv0330/site", "demo": "https://gurliv0330.github.io/site/"}]...
|
[{"post_id": 76100, "ts": "202 [{"post_id": 76100, "ts": "2026-10-02T10:09:16Z", "hours": 0.3528, "text": "HEYY OKAY SO I FINALLYYY FINISHED ITTTT. WAITING FOR MY ID TO BE VERIFIEDD. YIPPEEEEEE."}, {"post_id": 73311, "ts": "2026-09-24T20:26:10Z", "hours": 1.4717, "text": "okay so ig im facing a few problems. it keeps showing this. i tired 4 times on github, and 2 times on vercel. im cooked bruh"}, {"post_id": 72256, "ts": "2026-09-22T15:19:20Z", "hours": 0.6972, "text": "working on my personal site"}]...
|
Title: My own site! by @gurliv | Stardance
Devlog Title: My own site! by @gurliv | Stardance
Devlogs:
working on my personal site
okay so ig im facing a few problems. it keeps showing this. i tired 4 times on github, and 2 times on vercel. im cooked bruh
HEYY OKAY SO I FINALLYYY FINISHED ITTTT. WAITING FOR MY ID TO BE VERIFIEDD. YIPPEEEEEE.
Ships:
I made my personal site! this is my very first website, I don’t have any experience, but it was super fun to learn. I had problems with making the link on Github, and I ended up trying a total of 8 times (yikes) but thats honestly kind of funny. I did eventually get it so that is great. In the end, all I want to say is that this was a fun build....
|
1793213252.7208471
|
1793299652.7208471
|
|
67056
|
Focus by @bigkhanfsnewnew | Stardance
|
bigkhanfsnewnew
|
0
|
5.04
|
0
|
[]
|
[{"post_id": 76094, "ts": "202 [{"post_id": 76094, "ts": "2026-10-02T09:47:09Z", "hours": 0.7914, "text": "Focus is starting to feel like an actual app now 👀Today I spent most of my time turning the basic study dashboard from my first devlog into a more complete study flow. I worked on the focus timer quite a bit. It now supports preset session lengths as well as custom durations, and I added proper Start, Pause, Reset and Change Duration controls. The analogue clock also changes with the countdown, and when a session reaches zero it stops automatically and shows a completion message. I also expanded the Study page. Each subject now has separate options for reviewing notes, doing practice questions or starting a focus session. I built the navigation between these different areas and made sure you can move back through the app properly without losing the overall flow. A lot of this session was also visual polishing. I redesigned the subject cards, improved the Today section and navigation bar, and added responsive styling so the layout still works when the browser gets much narrower. There were a few annoying CSS problems along the way, especially getting the timer clock layers and study cards to behave properly, but debugging those was probably where I learned the most. I think Focus is at a good point to leave for now. There are definitely things I could expand later, especially the notes and practice-question sections, but the main study experience is working and I’d rather keep it focused than keep adding random features."}, {"post_id": 76008, "ts": "2026-10-02T00:59:48Z", "hours": 4.2447, "text": "This is my first devlog and somehow it’s already around 4 hours 😭. I was still waiting to get verified for Stardance and didn’t really understand how the devlogs worked yet, so I kept coding before making one. This is also pretty much my first time properly building something with React, so a lot of this session was me learning as I went.I started building Focus, a study dashboard that I actually want to use for school. I set up the main dashboard and navigation, added my subjects, made a Today section, and then started building the Study page. The biggest thing I worked on was the study timer. I got preset options for 25, 45 and 60 minutes working, added a custom duration option, and made the timer switch into the actual study view once a duration is chosen. I also added Start, Pause, Reset and Change Duration controls.I then worked on an analogue clock to sit alongside the timer, including a digital time display and a moving clock hand. Getting everything to actually behave and look right took a fair bit of trial and error, especially since I’m still getting used to React and CSS. There’s still heaps I want to improve, especially the overall design because I want Focus to feel way more polished, but I’m genuinely pretty proud seeing it actually work. A few hours ago most of this stuff was completely new to me, and now I’ve got a real interactive study dashboard running in the browser. Pretty sick start for my first project/devlog :)"}]...
|
Title: Focus by @bigkhanfsnewnew | Stardance
Devl Title: Focus by @bigkhanfsnewnew | Stardance
Devlogs:
This is my first devlog and somehow it’s already around 4 hours 😭. I was still waiting to get verified for Stardance and didn’t really understand how the devlogs worked yet, so I kept coding before making one. This is also pretty much my first time properly building something with React, so a lot of this session was me learning as I went.I started building Focus, a study dashboard that I actually want to use for school. I set up the main dashboard and navigation, added my subjects, made a Today section, and then started building the Study page. The biggest thing I worked on was the study timer. I got preset options for 25, 45 and 60 minutes working, added a custom duration option, and made the timer switch into the actual study view once a duration is chosen. I also added Start, Pause, Reset and Change Duration controls.I then worked on an analogue clock to sit alongside the timer, including a digital time display and a moving clock hand. Getting everything to actually behave and look right took a fair bit of trial and error, especially since I’m still getting used to React and CSS. There’s still heaps I want to improve, especially the overall design because I want Focus to feel way more polished, but I’m genuinely pretty proud seeing it actually work. A few hours ago most of this stuff was completely new to me, and now I’ve got a real interactive study dashboard running in the browser. Pretty sick start for my first project/devlog :)
Focus is starting to feel like an actual app now 👀Today I spent most of my time turning the basic study dashboard from my first devlog into a more complete study flow. I worked on the focus timer quite a bit. It now supports preset session lengths as well as custom durations, and I added proper Start, Pause, Reset and Change Duration controls. The analogue clock also changes with the countdown, and when a session reaches zero it stops automatically and shows a completion message. I also expanded the Study page. Each subject now has separate options for reviewing notes, doing practice questions or starting a focus session. I built the navigation between these different areas and made sure you can move back through the app properly without losing the overall flow. A lot of this session was also visual polishing. I redesigned the subject cards, improved the Today section and navigation bar, and added responsive styling so the layout still works when the browser gets much narrower. There were a few annoying CSS problems along the way, especially getting the timer clock layers and study cards to behave properly, but debugging those was probably where I learned the most. I think Focus is at a good point to leave for now. There are definitely things I could expand later, especially the notes and practice-question sections, but the main study experience is working and I’d rather keep it focused than keep adding random features....
|
1793105609.4912212
|
1793710409.4912212
|
|
66719
|
MY-PERSONAL-WEBSITE by @ArchitCode2744 | Stardance
|
ArchitCode2744
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-02T09:49:10Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made a personal website which tell about me. The challenging part was connecting js to html , but I figured it out. I am proud that I have completed the project.", "repo": "https://github.com/ArchCodingHub/MY-PERSONAL-WEBSITE", "demo": "https://archcodinghub.github.io/MY-PERSONAL-WEBSITE/"}]...
|
[{"post_id": 76086, "ts": "202 [{"post_id": 76086, "ts": "2026-10-02T09:36:19Z", "hours": 2.7194, "text": "MY-PERSONAL-WEBSITE . This project is about my personal likings, my projects and some fun facts about me. This site has been made using HTML and CSS. Also, it has been completed."}]...
|
Title: MY-PERSONAL-WEBSITE by @ArchitCode2744 | St Title: MY-PERSONAL-WEBSITE by @ArchitCode2744 | Stardance
Devlogs:
MY-PERSONAL-WEBSITE . This project is about my personal likings, my projects and some fun facts about me. This site has been made using HTML and CSS. Also, it has been completed.
Ships:
I have made a personal website which tell about me. The challenging part was connecting js to html , but I figured it out. I am proud that I have completed the project....
|
1793216997.45909
|
1793303397.45909
|