|
22729
|
PiMusic by @Studented | Stardance
|
Studented
|
1
|
3.3
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T01:00:08Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "fixed bugs (that I can see right now) ready for deployment (read past devlog to see work done and the github)", "repo": "https://github.com/Studented0/PiMusic", "demo": "https://pi-music-jade.vercel.app"}]...
|
[{"post_id": 18920, "ts": "202 [{"post_id": 18920, "ts": "2026-06-30T03:08:40Z", "hours": 0.2975, "text": "Did some bugfixes, mostly involved with NETWORK_BUFFER errors. only a temp solution for now"}, {"post_id": 12262, "ts": "2026-06-20T00:57:33Z", "hours": 2.6944, "text": "Added lyric matching and search/playlist tools. basically fully standalone from spotify now (I use it without ever touching the Spotify app)"}]...
|
Title: PiMusic by @Studented | Stardance
Devlogs: Title: PiMusic by @Studented | Stardance
Devlogs:
Added lyric matching and search/playlist tools. basically fully standalone from spotify now (I use it without ever touching the Spotify app)
Did some bugfixes, mostly involved with NETWORK_BUFFER errors. only a temp solution for now
Ships:
fixed bugs (that I can see right now) ready for deployment (read past devlog to see work done and the github)...
|
1793263706.2305412
|
1793350106.2305412
|
|
22748
|
Website by @Arnavv | Stardance
|
Arnavv
|
1
|
21.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-17T11:33:54Z", "hours": 21.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a professional MVP website for a business. This business is about providing essential support to other businesses, so if any of you need some support, don’t hesitate to contact :). Also the website in this project is static as I haven’t bought a domain yet, however all of the code for a dynamic, clean site exists in the files. Have fun exploring!", "repo": "https://github.com/Arnav-Barhate/Website", "demo": "https://arnav-barhate.github.io/Website/index.html"}]...
|
[{"post_id": 27053, "ts": "202 [{"post_id": 27053, "ts": "2026-07-12T07:47:13Z", "hours": 6.2972, "text": "Final adjustments"}, {"post_id": 19810, "ts": "2026-07-01T06:17:29Z", "hours": 6.6403, "text": "Smooth Animations: Added transitions so the site feels fluid and alive when you navigate around, instead of just being static. ________________________________________________________________________________Fresh Imagery: Uploaded new pictures . _______________________________________________________________________________ UI Glow-Up: Tweaked the layout, colors, and spacing so everything looks clean, polished, and looks great on both desktop and mobile. ________________________________________________________________________________Bug Fixes: Hunted down and squashed those annoying layout glitches that were breaking the mobile view. It’s running much smoother now. _______________________________________________________________________________ Auto-Emailing: Started working on the backend to set up automated emails. Soon, the site will handle things like confirmations and updates completely on its own."}, {"post_id": 16268, "ts": "2026-06-26T13:33:32Z", "hours": 2.4844, "text": "Just experimenting and changing texts and brainstorming for the text."}, {"post_id": 12952, "ts": "2026-06-21T06:13:01Z", "hours": 4.0042, "text": "Just added support for graphs and cool equations if i ever need them in the future."}, {"post_id": 12845, "ts": "2026-06-21T01:07:13Z", "hours": 0.8575, "text": "Just keep working on getting everything set up. Just manipulating the css to fit, and fixed the scrollbar!"}, {"post_id": 12476, "ts": "2026-06-20T11:31:48Z", "hours": 0.2836, "text": "I’m just working on getting everything set up for the website making process. I’ve just copied over a css and html base script as a template which i will be modifying now!"}]...
|
Title: Website by @Arnavv | Stardance
Devlogs:
I’ Title: Website by @Arnavv | Stardance
Devlogs:
I’m just working on getting everything set up for the website making process. I’ve just copied over a css and html base script as a template which i will be modifying now!
Just keep working on getting everything set up. Just manipulating the css to fit, and fixed the scrollbar!
Just added support for graphs and cool equations if i ever need them in the future.
Just experimenting and changing texts and brainstorming for the text.
Smooth Animations: Added transitions so the site feels fluid and alive when you navigate around, instead of just being static. ________________________________________________________________________________Fresh Imagery: Uploaded new pictures . _______________________________________________________________________________ UI Glow-Up: Tweaked the layout, colors, and spacing so everything looks clean, polished, and looks great on both desktop and mobile. ________________________________________________________________________________Bug Fixes: Hunted down and squashed those annoying layout glitches that were breaking the mobile view. It’s running much smoother now. _______________________________________________________________________________ Auto-Emailing: Started working on the backend to set up automated emails. Soon, the site will handle things like confirmations and updates completely on its own.
Final adjustments
Ships:
I made a professional MVP website for a business. This business is about providing essential support to other businesses, so if any of you need some support, don’t hesitate to contact :). Also the website in this project is static as I haven’t bought a domain yet, however all of the code for a dynamic, clean site exists in the files. Have fun exploring!...
|
1793303586.2619452
|
1793389986.2619452
|
|
22760
|
StreamPad by @Pixeleyesd | Stardance
|
Pixeleyesd
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-22T22:56:52Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a hackpad for macros called StreamPad. I found the hardest part was the 3d modelling of the case, as I am on Linux but wanted to use Autodesk Fusion. After much struggle I ended up just booting into windows and working on it there. The hackatime plugins also weren’t tracking my time correctly, as it would only track time in VS Code, and my KiCad time was not recorded. Even though I was tempted to quit half way through, I am still glad that I decided to finish this off, and I enjoyed the journey in getting here. :) Thank you Hack Club for hosting such a cool, free site for this kind of stuff, and I will make sure to keep improving on my skills I have learnt here. :3", "repo": "https://github.com/Pixeleyesd/StreamPad", "demo": ""}]...
|
[{"post_id": 13605, "ts": "202 [{"post_id": 13605, "ts": "2026-06-22T09:28:48Z", "hours": 1.1053, "text": "Finished Firmware and finished documentation on GitHub. The project is now ready to ship."}, {"post_id": 13553, "ts": "2026-06-22T05:53:50Z", "hours": 0.2725, "text": "I completed my case design (and have exported to .STEP) and have also set up my github page. I have double checked tolerances and measurements between the PCB, OLED and this case. My next step is to put these project files onto github and write my firmware :)."}, {"post_id": 12811, "ts": "2026-06-20T23:29:51Z", "hours": 0.3675, "text": "I finalised the PCB design and took a look at it on JLCPCB. I’m now in the process of designing a case for it."}, {"post_id": 12442, "ts": "2026-06-20T09:34:17Z", "hours": 0.3164, "text": "Designed a schematic and PCB for the StreamPad. Next steps are to maybe design case, and to do software for it."}]...
|
Title: StreamPad by @Pixeleyesd | Stardance
Devlo Title: StreamPad by @Pixeleyesd | Stardance
Devlogs:
Designed a schematic and PCB for the StreamPad. Next steps are to maybe design case, and to do software for it.
I finalised the PCB design and took a look at it on JLCPCB. I’m now in the process of designing a case for it.
I completed my case design (and have exported to .STEP) and have also set up my github page. I have double checked tolerances and measurements between the PCB, OLED and this case. My next step is to put these project files onto github and write my firmware :).
Finished Firmware and finished documentation on GitHub. The project is now ready to ship.
Ships:
I made a hackpad for macros called StreamPad. I found the hardest part was the 3d modelling of the case, as I am on Linux but wanted to use Autodesk Fusion. After much struggle I ended up just booting into windows and working on it there. The hackatime plugins also weren’t tracking my time correctly, as it would only track time in VS Code, and my KiCad time was not recorded. Even though I was tempted to quit half way through, I am still glad that I decided to finish this off, and I enjoyed the journey in getting here. :) Thank you Hack Club for hosting such a cool, free site for this kind of stuff, and I will make sure to keep improving on my skills I have learnt here. :3...
|
1792824732.6647656
|
1793688732.6647656
|
|
22763
|
My very own WebOS by @sandeep | Stardance
|
sandeep
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T20:45:14Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Mountain OS is a custom website that looks and works just like a computer desktop. It was built from scratch using HTML, CSS, and JavaScript. Here is what you can do inside it: Move Windows: You can drag multiple see-through (“glass-style”) windows around your screen. Use Apps: It has a drawing paint app and a classic Snake game. Run Commands: You can type text commands into a terminal to see system details or cool visual effects. Chat with AI: It has a built-in AI helper powered by the Groq API. No Password Needed: Just click the arrow on the lock screen to enter and explore. Key Highlights The Hardest Challenge: Getting the windows to drag smoothly on every web browser. The fix was using code that tracks the exact pixel position (getBoundingClientRect) and locking the window placement (position: fixed). Best Features: The built-in AI assistant and a custom audio tool that plays a musical chord right when the system turns on.", "repo": "https://github.com/sandeepkurma9876-del/walky", "demo": "https://sandeepkurma9876-del.github.io/walky/"}]...
|
[{"post_id": 12742, "ts": "202 [{"post_id": 12742, "ts": "2026-06-20T20:38:17Z", "hours": 0.3075, "text": "Completely changed to the themes, debugged the entire thing. Added a new AI window to learn more about the OS. Powered by GROQ"}, {"post_id": 12638, "ts": "2026-06-20T17:20:46Z", "hours": 0.465, "text": "I completely changed it from a basic, boring theme into something creatively themed, such as a mountain with multiple different themes, and a sleeker look similar to Apple’s Mac-looking browser tabs."}, {"post_id": 12604, "ts": "2026-06-20T16:21:24Z", "hours": 2.7117, "text": "I made the theme in essential elements, but I’m currently working on changing the theme from something modern to something more scenic and changing the name from walky os to Mountain OS, make it more mountain-themed and put nice scenic images."}]...
|
Title: My very own WebOS by @sandeep | Stardance
Title: My very own WebOS by @sandeep | Stardance
Devlogs:
I made the theme in essential elements, but I’m currently working on changing the theme from something modern to something more scenic and changing the name from walky os to Mountain OS, make it more mountain-themed and put nice scenic images.
I completely changed it from a basic, boring theme into something creatively themed, such as a mountain with multiple different themes, and a sleeker look similar to Apple’s Mac-looking browser tabs.
Completely changed to the themes, debugged the entire thing. Added a new AI window to learn more about the OS. Powered by GROQ
Ships:
Mountain OS is a custom website that looks and works just like a computer desktop. It was built from scratch using HTML, CSS, and JavaScript. Here is what you can do inside it: Move Windows: You can drag multiple see-through (“glass-style”) windows around your screen. Use Apps: It has a drawing paint app and a classic Snake game. Run Commands: You can type text commands into a terminal to see system details or cool visual effects. Chat with AI: It has a built-in AI helper powered by the Groq API. No Password Needed: Just click the arrow on the lock screen to enter and explore. Key Highlights The Hardest Challenge: Getting the windows to drag smoothly on every web browser. The fix was using code that tracks the exact pixel position (getBoundingClientRect) and locking the window placement (position: fixed). Best Features: The built-in AI assistant and a custom audio tool that plays a musical chord right when the system turns on....
|
1793296429.1506634
|
1793382829.1506634
|
|
22772
|
Universal Existence by @JustCoding8790 | Stardance
|
JustCoding8790
|
1
|
61.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-12T05:36:44Z", "hours": 61.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Universal Existence is a 2d platformer with many mechanics that will be explored more in-depth and combined with other mechanics to make many interesting levels. Platform through 12 levels of the UPC (Universal Platforming Course) in the game’s demo. You can also get tips from Domainus, the creator of the universe and the manager of the UPC (Universal Platforming Course), or get yelled at for dying to a stationary triangle for the 8th time. There’s four unique difficulties, with your difficulty being adjusted to try and match your skill level. I found it challenging to make certain elements of the game like the settings menu (like the speedrun timer) and a couple of enemies (like the mushroom, which was hard to figure out when the player jumped on top of it and when it killed the player [I ended up having to adjust hitboxes several times]). I’m pretty proud of how I managed to make some pretty fun levels, such as level 6 (for providing just enough space for it to be possible, but still somewhat challenging) and level 11 (which involves knowing when to use each blaster and even has a cool level skip if you discover it [hint: one of Domainus’s voicelines reveals part of it]). Where to Play If you have a windows pc, you can download the game from the itch.io link below, if you want an executable. Just make sure to unzip the ZIP folder and open the .exe file (not the .console or .pck). Otherwise, you can play the game on any computer by clicking “Run Game” on itch.io. Keep in mind the game can be hard, especially during levels 9-12. Good luck! Also, if you have a controller, feel free to test it to see if it works with the game. Currently, the XBOX controller is partially supported (controllers cannot navigate the pause menu, but you can open it up by pressing Esc on keyboard or Menu button for Xbox controller). If you don’t want to play the game, here’s a 100% playthrough with all apples and secret melons collected. https://youtu.be/cXItOPMkMOI", "repo": "https://github.com/JustCoding8790/Universal-Existence", "demo": "https://justcoding8790.itch.io/universal-existence"}]...
|
[{"post_id": 78009, "ts": "202 [{"post_id": 78009, "ts": "2026-10-09T05:33:43Z", "hours": 9.9939, "text": "Devlog #10: Music, Rebalancing, and “Voicelines” This will most likely be the final devlog. At least for Stardance. There’s so much more that will happen after Stardance ends (more info later). Playtester Feedback and Rebalancing I’ve gotten feedback from multiple playtesters (all of them are listed in the credits), and they’ve all said that there’s a big difficulty spike between levels 8 and 9 (or 10), so I had to make the levels easier by removing enemies and spikes, along with nerfing enemy hp, bullet fire rates, and bullet speed. I also had to adjust level 5 due to how small the bottom section is, which gives you barely any room to avoid the snails. For any playtesters who are reading this right now, thanks for playtesting and I hope you recover from your plant PTSD (from your 20-50+ deaths). “Voiceline” System and Adaptive Difficulty If only the dialogue was actually voiced. I don’t have anyone to voice act for me right now. But anyways, this voiceline system reacts to every level you enter and every death. It’ll either give tips on how to deal with whatever you’re facing or simply mock you. Here’s a couple of sample lines: “…And you’re having trouble with a stationary triangle in the ground. I repeat… A STATIONARY TRIANGLE IN THE GROUND!” (8th death to spikes) “Looking for an easy way to counter snails? It’s called ‘double-jumping’.” (3rd death to snails) “Outplanted by the plants…” (7th death to plants) “Those bees sure do sting… But they won’t last long when you ‘sting’ them back.” (1st death to bees) It will also change your difficulty for you when you’ve died too few or too many times on one level. I’m planning on giving the commentator a name. Maybe Domainus? We’ll find out later if it becomes canon or not. New Music Licensing Agreement Remember how in a previous devlog, I found out I couldn’t use Rush’s music for my game due to legal issues? That’s been fixed now, as both of us along with our parents signed an agreement. It’s not formal or anything, but from what I’ve researched, it should do the trick for now. After everyone signed the agreement, I added some new tracks to the BGM player: Beehold the Bullets (boss battle theme) UPC Test: PASS (boss victory theme) Void Hub (plays after beating the demo) Note: The gameplay footage below does not have audio, but the actual game will. Minor Details and Changes Last devlog, last changes… Added credits with playtesters, attribution, assets, and composers Updated README (still needs a slight update, will finish before I ship) Fixed audio sliders in settings menu starting at wrong positions Added “Reset All Settings” Added speedrun timer for Speedrun Mode in settings Stopped leftover bullets from killing you Started off player on Ultra Hard instead of Extreme on game startup Future of Universal Existence I plan to post future devlogs in a Discord server for anyone that’s interested. You’ll also be able to sign up to playtest future versions of the game and give feedback, along with participating in server events. You can join here: https://discord.gg/Ztc37dcu9 This link will expire soon, which is why I’ll paste another one later in the comments. Hope to see you around!"}, {"post_id": 62673, "ts": "2026-09-06T04:52:57Z", "hours": 6.9667, "text": "Devlog #9: The Last Challenge and Stat Board We’re nearing the end of this part of the journey. I can’t believe this is only the demo part of the entire game that I’m making. Demo Boss Fight This is the last challenge of the game. Like I said last devlog, I don’t want to spoil the boss fight, and I don’t see any way to censor text for Stardance. So here’s a Google Doc for those who’d rather just see the spoilers rather than find out by playing the game’s demo. I’m pretty happy with the boss fight as it is. I don’t believe I’ll need to rework it (except for balancing purposes). I did die a lot on the boss fight, though (19 deaths). Stat/Death Board At the end of the demo, I decided to let the player see their stats on the board, including the amount of time it took for them to finish the game, how many times they died to specific causes, etc. I did end up having to globally track every death and the cause of each death using an array (if you don’t know what that is, think of a buffet where you get to decide how much of each of the foods are in each area). Copyright Problems I recently learned more about copyright policy and it turns out I cannot use music my friend Rush made, even though he gave verbal permission. We appear to need some sort of agreement as well. But I don’t want to get too deep into the legal stuff, so I’m going to have to make my own track to replace the current one soon. Honestly, I might just attempt to use a CC0 track since I’m running out of time currently. Because of this issue, I muted the audio of the gameplay footage below too. Minor Details and Changes Not as much going around this week, but nevertheless, here’s most of the small changes: Added apples to all difficulty variants of levels 1-9 and 1-11 Added disappearing animation for the player that plays after the death animation (overall looks better in my opinion) Upcoming Additions Of course, there’s work that still needs to be done. First of all, I haven’t finished the settings menu yet (if you remember from devlog 6). There’s also some tracks in the game I need to make (for the boss fight, the area ambience, etc) And most importantly, we can’t forget about the commentary that occurs when you die to specific traps/enemies (which I’ve already started). I’m hoping I can release this game by late-September at the latest, along with working on some Stardance missions. I’d like to maximize my coding time before Stardance ends, despite the fact I’m busy with all the homework I’m getting. :("}, {"post_id": 53393, "ts": "2026-08-23T22:27:54Z", "hours": 6.8183, "text": "Devlog #8: Giving Everyone Guns and Bullets (Part 2) Note: See Part 1 for context if you haven’t already. I think I’ll be done with guns for a while. After completing the first area, you most likely won’t see them again until one of the last levels of the second area (maybe not even until the next boss fight). Also, after rebalancing the harder difficulties to actually serve a good challenge, playtesting my own game took 2x longer than I usually would, as I’d keep dying to certain enemies or traps. But this game isn’t about breezing through easy levels, so… Guns for Plants and Bees These enemies are simple. Plants stay in one position, firing at random intervals. Their firerate is random and slower (average of 3.75/2.75/2/1.25 seconds), but their health is much higher compared to a Trunkwalker ( 65/75/90/100 health). Bees move around in the air, firing stinger bullets downwards. They fire often (average of 2.5/2/1.5/1 second[s]), but their health is decreased to make up for it ( 12/15/16/20 health). Since these bees will be above the player, I made an auto-firing gun that fires upwards. I decided that manual guns will instead show up in the next area after the boss. (That means the manual guns won’t be in the demo. Sorry…) These enemies show up in levels 1-10 and 1-11. Minor Details and Changes I spent a lot of time on major changes this week, but that doesn’t mean I didn’t spend time on minor problems. Here’s the small changes I made: Added Hard, Extra Hard, and Ultra Hard difficulty variants to level 1-9 Trunkwalker firing interval is more random instead of being fixed (to me, it just looks weird when they all attack at the same time) Rebalanced easier levels so they actually can somewhat serve a good challenge Resized hitbox of Mushrooms (so player can now properly die to a Mushroom when not bouncing on top of them) Moved melon in level 1-5 (for Ultra Hard and Extreme variants) to a harder-to-reach location (as it was too easy to reach the melon previously) You might think rebalancing levels would be a major change, but I honestly didn’t change much with each level. I mainly just moved traps/enemies around. Upcoming Additions Most of the time next week will be spent creating the first area’s boss fight. I won’t tell you what I plan to make for the boss fight, though. That would spoil everything. If you do want to view the spoilers, though I’ll provide a link to a Google Doc on the next devlog detailing everything about the upcoming boss fight. I suspect this boss will take more than 6 hours to make, so I’ll split it all into two devlogs (and also two weeks). Not much to say otherwise, though. Enjoy my (pretty horrible) gameplay below!"}, {"post_id": 45441, "ts": "2026-08-11T21:49:06Z", "hours": 5.0842, "text": "Devlog #7: Giving Everyone Guns and Bullets (Part 1) Honestly, I was intending to make something similar to a space shooter, where enemies come in from off-screen, but I’m still happy with what I ended up making. This devlog is a bit longer than usual, so feel free to just simply look at the video for explanation if you’re running short on time. Guns for the Player Starting with the player, remember how I wanted to make a mechanic that doesn’t just involve enemies? I ended up coming up with giving the player a gun (or, well, a blaster). I planned out the different types of guns the player will be able to equip. There will be two types of guns: auto-firing, which will automatically fire bullets every 0.2 seconds, and manual, which will only fire when the player presses a certain button, but it deals more damage per bullet (there’s a longer cooldown in between bullets, though, so better be precise). There are also three variants for each type that determine which direction the gun can fire: upwards, downwards, or horizontally. I may plan out more variants later. (But of course, this game isn’t all about guns, is it?) I implemented the auto-firing horizontal gun at the time of writing this devlog. And for the first time ever, I finally decided to make my own art instead of just using CC0 assets from Pixel Adventure. (Wild, right?) Not the best, but it’ll work for now. I don’t want to spend too much time on all the minor details to the point where I barely get anything done (like the settings menu, cough cough [refer to devlog 6 if you’re new here]). Guns for the Enemies It would be unfair if the player just simply had a significant advantage over the enemies, so I also gave guns to the enemies. Well, only a certain type of enemy, that is… Meet the Trunkwalker, a walking, square-like tree trunk part that fires bullets through its nose (aka the remains of a sliced tree branch). It can only fire a bullet horizontally every 3/2/1.5/1 second(s) depending on the difficulty ( Hard/Extra Hard/Ultra Hard/Extreme ). They also move around until they hit a wall, just like snails and mushrooms. I do find myself dying more to when they stop to shoot bullets rather than the bullets themselves. A bit concerning, but I find that it adds to the difficulty well, so… Basic Damage and Health System Anyways, there’s a reason why the player has a gun in the first place. To defeat enemies, of course. I gave the Trunkwalker a set amount of 25/30/35/40 health based on the difficulty. A bullet from an auto-firing gun deals 4 damage, so each Trunkwalker can be defeated after taking 7/8/9/10 hits. (There, I did the math for you. Happy?) Minor Details and Changes There’s still plenty to go around here. Here’s the rest of the changes: Reorganized folder structure, organized assets and scenes into subfolders Added a sound effect for when the enemy get hit by a bullet (made by tapping my laptop) Added extra frames to the mushroom’s death animation (they disappear in a similar fashion to collected fruits) Upcoming Additions I’ll have to continue all of this work in part 2. In other words, I’ll also have to make the other variants of guns, along with some more mechanics/enemies and levels. I also feel like the levels are too short and easy and don’t provide a proper challenge, mainly for the harder difficulties, so I might consider rebalancing the levels. Things are looking much better than last time. School is starting soon, however, so I may start to slow down on progress. I still think I can get the game’s demo done before Stardance ends, though. Until next time, jumpers! (And yes, I just recently came up with that name. I don’t know what else to call players without calling them “players”.)"}, {"post_id": 38618, "ts": "2026-08-01T03:24:24Z", "hours": 6.4911, "text": "Devlog #6: Underestimating the Work of a Settings Menu (for a beginner, at least) Yep, I apparently had a lot more to learn about UI, audio, and controller settings. I eventually decided to stop working on the settings menu. If there’s one thing I can take away from this experience, it’s that I should probably not focus too much on a settings menu over the actual gameplay. Audio Settings I filled the left side of the settings menu with sliders for controlling the audio volume. I used audio buses in Godot in order to separate audio into 3 main categories: Music, Sound, and Voice. Of course, there is nothing for the voice audio bus, since I haven’t recorded any voice lines yet. (I’ll get to that later!) Controller Deadzones and Assist Settings The right side contains buttons that open submenus. Players can now control the game speed and controller joystick deadzones, along with being able to practice a level as much as they want with Training Mode. I decided to save controller sensitivity, key rebinding, credits, and language translating for later, due to how much time it took to figure out what should happen with submenus in multiple cases. I know, doesn’t seem like it should take that much time, but I have to consider multiple cases in which the settings UI will stay visible and block the actual pause menu, which occurs when the player resumes and pauses again without exiting out of the UI. There’s also another thing I have to worry about… HSlider Bug When I reopen a menu after exiting out of it, the sliders seems to reset back to where it originally was when the game started. Thankfully, this issue doesn’t affect the actual gameplay, but still, it’s a visual bug that might confuse players. I managed to fix this with the audio sliders, but I haven’t done the same with the controller settings and assist settings. I’ll try to patch it next week. Minor Details and Changes There’s not much this week, sorry. (I regret spending so much time on the settings menu…) Upcoming Additions I want to start focusing on making more levels soon, but I don’t want to reuse the same mechanics from the levels I already made. I already made multiple enemies, so I want to start making a mechanic that involves more of the player, like a new action that can be enabled upon collecting something in a level. I’ll also have to come up with ideas for the area’s bossfight (yes, there are bosses in this game), since I feel like the area is almost complete. As for the settings menu, I’ll pick it back up in about a month. A not-so-productive week, I know. Hopefully I can do better."}, {"post_id": 33177, "ts": "2026-07-22T20:59:30Z", "hours": 4.6356, "text": "Devlog #5: New Mushroom Enemy + More Level Variants New Mushroom Enemy Yep, a new enemy. I had scrapped a few levels recently, and to replace them, I didn’t want to make another similar level. Mushrooms move in a certain direction until they hit a wall, causing them to move the other way and repeat this cycle. Unlike snails, though, these enemies can be defeated by jumping on top of them, giving you an extra jump boost (just like those Goombas from Super Mario Bros). Now I could’ve just brought back a scrapped level, slapped them in, and called it a day. But that seems too boring. So I instead thought about the new mechanic of being able to defeat the enemy. And that’s how I came up with using mushrooms over a spike pit to bounce your way to the end of a level. I added variants for each difficulty as well, adding more mushrooms on lower difficulties. Speaking of variants… Finished Level Variants I finished all level variants for each difficulty. I mainly did this by adjusting enemy speed and adding/removing spikes based on the difficulty. Of course, I’m going to have to do this a lot more often. The demo is going to be longer than 8 levels, and the demo is nothing compared to what I plan to release in the full game. Minor Details and Changes Added new level template Shrunk player hitbox Played and looped a track as a BGM player Imported image assets for upcoming enemies Reimported music assets New “Sign Guy” track Upcoming Additions This time, I will make the settings menu for sure, along with making another enemy for the next few levels. I plan to take no longer than 4 hours. Until then, see you soon!"}, {"post_id": 29831, "ts": "2026-07-16T23:37:59Z", "hours": 6.0467, "text": "Devlog #4: New Difficulties + UI and OST Changes (Part 1) Things are starting to look polished. I can probably get the game’s demo done by around late July. The deadline isn’t 100% confirmed, though. Four Brand New Difficulties I made four new difficulties. These will adjust how much room for error you have and the number of threats in each level. Hard : For those who have no experience and just want to have fun. No shame if this applies to you. Extra Hard : For rusty jumpers seeking to improve their skills. A casual, balanced experience. Ultra Hard : For all intermediate jumpers looking for a challenge. Serves as a fairly difficult journey. Extreme : For the most skilled jumpers of the universe. Not for the faint of heart. As you can see, there are only hard difficulties in this game. This is to remind you that even on the lower difficulties, it can be a hard game. You might not think so at first, but as more mechanics are introduced, you may find yourself getting stuck on certain levels. As shown in the recording below, for the first few levels, since they don’t contain much except platforms and fruits, I couldn’t do much except add and extend platforms for lower difficulties. Pause Menu In order for difficulties to be selected, I made a pause menu. I customized the UI and added multiple animations. I did end up having to redo the animations, however, as I not only realized there was UI overlap between the main pause menu and the difficulty description, but I also received a lot of warnings involving something called AnimationMixer, and I couldn’t find a way to get rid of them until I redid everything. I also linked the difficulty chosen in the menu to the game and added a small description for each of the 4 difficulties. New OST Yep, there’s music being composed for the game now. Rush (from Discord), a friend of mine, is helping out on creating good music for my game. I haven’t coded it so it plays in-game yet, but I’ve imported the assets in. I will upload the OST to a youtube channel after I make enough songs so you can listen to it whenever you want. (Keep in mind listening to the OST or checking the title may lead to spoiling the game demo.) Minor Changes I organized assets into more folders, but this later led me to encountering some issues involving paths to certain nodes not existing, which caused errors to appear. The issue mainly involved sound nodes like the jump sound and the death sound. Eventually, I reuploaded the sounds to each AudioStreamPlayer2D node. Additionally, the first level’s dialogue font (level 1-1) has now been changed to match with the other levels. Upcoming Additions Within the next 5 hours I spend on the game, I’m hoping to add variants for each of the remaining levels for each difficulty, along with making a background music player. I also need to add a settings menu for the player and fix multiple issues like the floating player bug (seen at the end of the recording below)."}, {"post_id": 27980, "ts": "2026-07-13T22:52:22Z", "hours": 5.9472, "text": "Devlog #3: Movement and Level Additions I’m back on Universal Existence now. I’ve spent most of the time so far on tweaking my movement system. It may seem unreasonable for me to do such at first, but believe me, there’s some important additions I needed to make, such as: Adding jump buffering and coyote time Adjusting speed, jump power, and gravity based on player size (to make bigger levels and as the framework for some size-changing mechanics) Boosting jump power for smaller sizes (since the player’s jump felt too heavy when small; you probably will especially understand this if you played other platformer games) The movement system changes took a lot longer than I expected, as I had to go through all 8 levels every time I made a change to make sure it was possible to progress. I’ve also added spikes to my game, and I created a few new levels containing them, along with remastering the old levels to make them harder. Here’s a list of other changes: Changed font for better readability Set strech mode to viewport so the game will adjust its size based on the current window size The recording below shows gameplay footage of the harder levels (collecting all melons and almost every apple). Don’t worry, I’m planning on adding a settings menu to allow you to change the difficulty to your liking, which will change the level to another variant."}, {"post_id": 16475, "ts": "2026-06-26T20:24:35Z", "hours": 5.4847, "text": "Devlog #2: More Levels and Mechanics Sorry for releasing a devlog so late. My internet went down as I was writing this. I added 5 more levels, with working exits leading to the next level, along with panels showing text that the antagonist of this game says (might turn the dialogue into voice lines). I also added a melon collectible, which is worth more points, but slightly harder to reach. Everything is going well so far. Down below is a video of me playing through the first few levels (and showing some secrets). Also, I ended up simply using the name Universal Existence instead of Simulation Overgrowth. Anyways, you might’ve noticed that I have another ongoing project. Don’t worry. I’ll still work on this game. For now, though, I want to improve my Godot skills to be able to make not only the mechanics I want to include in Universal Existence, but also more complex games in the future."}, {"post_id": 14030, "ts": "2026-06-23T00:26:55Z", "hours": 3.2917, "text": "Devlog #1: Learning about Godot + Double-Jumping and Air-Jumping I watched a series of tutorials on making a platformer in Godot and followed along, but I eventually decided to also implement my own features too. I ended up making a double-jump mechanic. In the process, I also accidentally made an air-jump mechanic, where I can also jump while falling. I hope to expand my level to include more content in the next 3 hours of work. Also, fun fact here, when I started this project, I originally named it Universal Existence, but I ended up changing the name to Simulation Overgrowth (and I might even change it again later on). I soon realized, though, that if I renamed the folder, Godot would prevent me from opening the game, as it doesn’t recognize the renamed folder as the actual game folder. Oops… (I’ll find a way to fix it in the next 3 hours as well.) Resources Used While Developing Free assets I used (CC0 license): https://pixelfrog-assets.itch.io/pixel-adventure-1 First tutorial in the series I watched: https://youtu.be/oED12Mo2018?si=6y_8LNeydut2Vyyr"}]...
|
Title: Universal Existence by @JustCoding8790 | St Title: Universal Existence by @JustCoding8790 | Stardance
Devlogs:
Devlog #1: Learning about Godot + Double-Jumping and Air-Jumping I watched a series of tutorials on making a platformer in Godot and followed along, but I eventually decided to also implement my own features too. I ended up making a double-jump mechanic. In the process, I also accidentally made an air-jump mechanic, where I can also jump while falling. I hope to expand my level to include more content in the next 3 hours of work. Also, fun fact here, when I started this project, I originally named it Universal Existence, but I ended up changing the name to Simulation Overgrowth (and I might even change it again later on). I soon realized, though, that if I renamed the folder, Godot would prevent me from opening the game, as it doesn’t recognize the renamed folder as the actual game folder. Oops… (I’ll find a way to fix it in the next 3 hours as well.) Resources Used While Developing Free assets I used (CC0 license): https://pixelfrog-assets.itch.io/pixel-adventure-1 First tutorial in the series I watched: https://youtu.be/oED12Mo2018?si=6y_8LNeydut2Vyyr
Devlog #2: More Levels and Mechanics Sorry for releasing a devlog so late. My internet went down as I was writing this. I added 5 more levels, with working exits leading to the next level, along with panels showing text that the antagonist of this game says (might turn the dialogue into voice lines). I also added a melon collectible, which is worth more points, but slightly harder to reach. Everything is going well so far. Down below is a video of me playing through the first few levels (and showing some secrets). Also, I ended up simply using the name Universal Existence instead of Simulation Overgrowth. Anyways, you might’ve noticed that I have another ongoing project. Don’t worry. I’ll still work on this game. For now, though, I want to improve my Godot skills to be able to make not only the mechanics I want to include in Universal Existence, but also more complex games in the future.
Devlog #3: Movement and Level Additions I’m back on Universal Existence now. I’ve spent most of the time so far on tweaking my movement system. It may seem unreasonable for me to do such at first, but believe me, there’s some important additions I needed to make, such as: Adding jump buffering and coyote time Adjusting speed, jump power, and gravity based on player size (to make bigger levels and as the framework for some size-changing mechanics) Boosting jump power for smaller sizes (since the player’s jump felt too heavy when small; you probably will especially understand this if you played other platformer games) The movement system changes took a lot longer than I expected, as I had to go through all 8 levels every time I made a change to make sure it was possible to progress. I’ve also added spikes to my game, and I created a few new levels containing them, along with remastering the old levels to make them harder. Here’s a list of other changes: Changed font for better readability Set strech mode to viewport so the game will adjust its size based on the current window size The recording below shows gameplay footage of the harder levels (collecting all melons and almost every apple). Don’t worry, I’m planning on adding a settings menu to allow you to change the difficulty to your liking, which will change the level to another variant.
Devlog #4: New Difficulties + UI and OST Changes (Part 1) Things are starting to look polished. I can probably get the game’s demo done by around late July. The deadline isn’t 100% confirmed, though. Four Brand New Difficulties I made four new difficulties. These will adjust how much room for error you have and the number of threats in each level. Hard : For those who have no experience and just want to have fun. No shame if this applies to you. Extra Hard : For rusty jumpers seeking to improve their skills. A casual, balanced experience. Ultra Hard : For all intermediate jumpers looking for a challenge. Serves as a fairly difficult journey. Extreme : For the most skilled jumpers of the universe. Not for the faint of heart. As you can see, there are only hard difficulties in this game. This is to remind you that even on the lower difficulties, it can be a hard game. You might not think so at first, but as more mechanics are introduced, you may find yourself getting stuck on certain levels. As shown in the recording below, for the first few levels, since they don’t contain much except platforms and fruits, I couldn’t do much except add and extend platforms for lower difficulties. Pause Menu In order for difficulties to be selected, I made a pause menu. I customized the UI and added multiple animations. I did end up having to redo the animations, however, as I not only realized there was UI overlap between the main pause menu and the difficulty description, but I also received a lot of warnings involving something called AnimationMixer, and I couldn’t find a way to get rid of them until I redid everything. I also linked the difficulty chosen in the menu to the game and added a small description for each of the 4 difficulties. New OST Yep, there’s music being composed for the game now. Rush (from Discord), a friend of mine, is helping out on creating good music for my game. I haven’t coded it so it plays in-game yet, but I’ve imported the assets in. I will upload the OST to a youtube channel after I make enough songs so you can listen to it whenever you want. (Keep in mind listening to the OST or checking the title may lead to spoiling the game demo.) Minor Changes I organized assets into more folders, but this later led me to encountering some issues involving paths to certain nodes not existing, which caused errors to appear. The issue mainly involved sound nodes like the jump sound and the death sound. Eventually, I reuploaded the sounds to each AudioStreamPlayer2D node. Additionally, the first level’s dialogue font (level 1-1) has now been changed to match with the other levels. Upcoming Additions Within the next 5 hours I spend on the game, I’m hoping to add variants for each of the remaining levels for each difficulty, along with making a background music player. I also need to add a settings menu for the player and fix multiple issues like the floating player bug (seen at the end of the recording below).
Devlog #5: New Mushroom Enemy + More Level Variants New Mushroom Enemy Yep, a new enemy. I had scrapped a few levels recently, and to replace them, I didn’t want to make another similar level. Mushrooms move in a certain direction until they hit a wall, causing them to move the other way and repeat this cycle. Unlike snails, though, these enemies can be defeated by jumping on top of them, giving you an extra jump boost (just like those Goombas from Super Mario Bros). Now I could’ve just brought back a scrapped level, slapped them in, and called it a day. But that seems too boring. So I instead thought about the new mechanic of being able to defeat the enemy. And that’s how I came up with using mushrooms over a spike pit to bounce your way to the end of a level. I added variants for each difficulty as well, adding more mushrooms on lower difficulties. Speaking of variants… Finished Level Variants I finished all level variants for each difficulty. I mainly did this by adjusting enemy speed and adding/removing spikes based on the difficulty. Of course, I’m going to have to do this a lot more often. The demo is going to be longer than 8 levels, and the demo is nothing compared to what I plan to release in the full game. Minor Details and Changes Added new level template Shrunk player hitbox Played and looped a track as a BGM player Imported image assets for upcoming enemies Reimported music assets New “Sign Guy” track Upcoming Additions This time, I will make the settings menu for sure, along with making another enemy for the next few levels. I plan to take no longer than 4 hours. Until then, see you soon!
Devlog #6: Underestimating the Work of a Settings Menu (for a beginner, at least) Yep, I apparently had a lot more to learn about UI, audio, and controller settings. I eventually decided to stop working on the settings menu. If there’s one thing I can take away from this experience, it’s that I should probably not focus too much on a settings menu over the actual gameplay. Audio Settings I filled the left side of the settings menu with sliders for controlling the audio volume. I used audio buses in Godot in order to separate audio into 3 main categories: Music, Sound, and Voice. Of course, there is nothing for the voice audio bus, since I haven’t recorded any voice lines yet. (I’ll get to that later!) Controller Deadzones and Assist Settings The right side contains buttons that open submenus. Players can now control the game speed and controller joystick deadzones, along with being able to practice a level as much as they want with Training Mode. I decided to save controller sensitivity, key rebinding, credits, and language translating for later, due to how much time it took to figure out what should happen with submenus in multiple cases. I know, doesn’t seem like it should take that much time, but I have to consider multiple cases in which the settings UI will stay visible and block the actual pause menu, which occurs when the player resumes and pauses again without exiting out of the UI. There’s also another thing I have to worry about… HSlider Bug When I reopen a menu after exiting out of it, the sliders seems to reset back to where it originally was when the game started. Thankfully, this issue doesn’t affect the actual gameplay, but still, it’s a visual bug that might confuse players. I managed to fix this with the audio sliders, but I haven’t done the same with the controller settings and assist settings. I’ll try to patch it next week. Minor Details and Changes There’s not much this week, sorry. (I regret spending so much time on the settings menu…) Upcoming Additions I want to start focusing on making more levels soon, but I don’t want to reuse the same mechanics from the levels I already made. I already made multiple enemies, so I want to start making a mechanic that involves more of the player, like a new action that can be enabled upon collecting something in a level. I’ll also have to come up with ideas for the area’s bossfight (yes, there are bosses in this game), since I feel like the area is almost complete. As for the settings menu, I’ll pick it back up in about a month. A not-so-productive week, I know. Hopefully I can do better.
Devlog #7: Giving Everyone Guns and Bullets (Part 1) Honestly, I was intending to make something similar to a space shooter, where enemies come in from off-screen, but I’m still happy with what I ended up making. This devlog is a bit longer than usual, so feel free to just simply look at the video for explanation if you’re running short on time. Guns for the Player Starting with the player, remember how I wanted to make a mechanic that doesn’t just involve enemies? I ended up coming up with giving the player a gun (or, well, a blaster). I planned out the different types of guns the player will be able to equip. There will be two types of guns: auto-firing, which will automatically fire bullets every 0.2 seconds, and manual, which will only fire when the player presses a certain button, but it deals more damage per bullet (there’s a longer cooldown in between bullets, though, so better be precise). There are also three variants for each type that determine which direction the gun can fire: upwards, downwards, or horizontally. I may plan out more variants later. (But of course, this game isn’t all about guns, is it?) I implemented the auto-firing horizontal gun at the time of writing this devlog. And for the first time ever, I finally decided to make my own art instead of just using CC0 assets from Pixel Adventure. (Wild, right?) Not the best, but it’ll work for now. I don’t want to spend too much time on all the minor details to the point where I barely get anything done (like the settings menu, cough cough [refer to devlog 6 if you’re new here]). Guns for the Enemies It would be unfair if the player just simply had a significant advantage over the enemies, so I also gave guns to the enemies. Well, only a certain type of enemy, that is… Meet the Trunkwalker, a walking, square-like tree trunk part that fires bullets through its nose (aka the remains of a sliced tree branch). It can only fire a bullet horizontally every 3/2/1.5/1 second(s) depending on the difficulty ( Hard/Extra Hard/Ultra Hard/Extreme ). They also move around until they hit a wall, just like snails and mushrooms. I do find myself dying more to when they stop to shoot bullets rather than the bullets themselves. A bit concerning, but I find that it adds to the difficulty well, so… Basic Damage and Health System Anyways, there’s a reason why the player has a gun in the first place. To defeat enemies, of course. I gave the Trunkwalker a set amount of 25/30/35/40 health based on the difficulty. A bullet from an auto-firing gun deals 4 damage, so each Trunkwalker can be defeated after taking 7/8/9/10 hits. (There, I did the math for you. Happy?) Minor Details and Changes There’s still plenty to go around here. Here’s the rest of the changes: Reorganized folder structure, organized assets and scenes into subfolders Added a sound effect for when the enemy get hit by a bullet (made by tapping my laptop) Added extra frames to the mushroom’s death animation (they disappear in a similar fashion to collected fruits) Upcoming Additions I’ll have to continue all of this work in part 2. In other words, I’ll also have to make the other variants of guns, along with some more mechanics/enemies and levels. I also feel like the levels are too short and easy and don’t provide a proper challenge, mainly for the harder difficulties, so I might consider rebalancing the levels. Things are looking much better than last time. School is starting soon, however, so I may start to slow down on progress. I still think I can get the game’s demo done before Stardance ends, though. Until next time, jumpers! (And yes, I just recently came up with that name. I don’t know what else to call players without calling them “players”.)
Devlog #8: Giving Everyone Guns and Bullets (Part 2) Note: See Part 1 for context if you haven’t already. I think I’ll be done with guns for a while. After completing the first area, you most likely won’t see them again until one of the last levels of the second area (maybe not even until the next boss fight). Also, after rebalancing the harder difficulties to actually serve a good challenge, playtesting my own game took 2x longer than I usually would, as I’d keep dying to certain enemies or traps. But this game isn’t about breezing through easy levels, so… Guns for Plants and Bees These enemies are simple. Plants stay in one position, firing at random intervals. Their firerate is random and slower (average of 3.75/2.75/2/1.25 seconds), but their health is much higher compared to a Trunkwalker ( 65/75/90/100 health). Bees move around in the air, firing stinger bullets downwards. They fire often (average of 2.5/2/1.5/1 second[s]), but their health is decreased to make up for it ( 12/15/16/20 health). Since these bees will be above the player, I made an auto-firing gun that fires upwards. I decided that manual guns will instead show up in the next area after the boss. (That means the manual guns won’t be in the demo. Sorry…) These enemies show up in levels 1-10 and 1-11. Minor Details and Changes I spent a lot of time on major changes this week, but that doesn’t mean I didn’t spend time on minor problems. Here’s the small changes I made: Added Hard, Extra Hard, and Ultra Hard difficulty variants to level 1-9 Trunkwalker firing interval is more random instead of being fixed (to me, it just looks weird when they all attack at the same time) Rebalanced easier levels so they actually can somewhat serve a good challenge Resized hitbox of Mushrooms (so player can now properly die to a Mushroom when not bouncing on top of them) Moved melon in level 1-5 (for Ultra Hard and Extreme variants) to a harder-to-reach location (as it was too easy to reach the melon previously) You might think rebalancing levels would be a major change, but I honestly didn’t change much with each level. I mainly just moved traps/enemies around. Upcoming Additions Most of the time next week will be spent creating the first area’s boss fight. I won’t tell you what I plan to make for the boss fight, though. That would spoil everything. If you do want to view the spoilers, though I’ll provide a link to a Google Doc on the next devlog detailing everything about the upcoming boss fight. I suspect this boss will take more than 6 hours to make, so I’ll split it all into two devlogs (and also two weeks). Not much to say otherwise, though. Enjoy my (pretty horrible) gameplay below!
Devlog #9: The Last Challenge and Stat Board We’re nearing the end of this part of the journey. I can’t believe this is only the demo part of the entire game that I’m making. Demo Boss Fight This is the last challenge of the game. Like I said last devlog, I don’t want to spoil the boss fight, and I don’t see any way to censor text for Stardance. So here’s a Google Doc for those who’d rather just see the spoilers rather than find out by playing the game’s demo. I’m pretty happy with the boss fight as it is. I don’t believe I’ll need to rework it (except for balancing purposes). I did die a lot on the boss fight, though (19 deaths). Stat/Death Board At the end of the demo, I decided to let the player see their stats on the board, including the amount of time it took for them to finish the game, how many times they died to specific causes, etc. I did end up having to globally track every death and the cause of each death using an array (if you don’t know what that is, think of a buffet where you get to decide how much of each of the foods are in each area). Copyright Problems I recently learned more about copyright policy and it turns out I cannot use music my friend Rush made, even though he gave verbal permission. We appear to need some sort of agreement as well. But I don’t want to get too deep into the legal stuff, so I’m going to have to make my own track to replace the current one soon. Honestly, I might just attempt to use a CC0 track since I’m running out of time currently. Because of this issue, I muted the audio of the gameplay footage below too. Minor Details and Changes Not as much going around this week, but nevertheless, here’s most of the small changes: Added apples to all difficulty variants of levels 1-9 and 1-11 Added disappearing animation for the player that plays after the death animation (overall looks better in my opinion) Upcoming Additions Of course, there’s work that still needs to be done. First of all, I haven’t finished the settings menu yet (if you remember from devlog 6). There’s also some tracks in the game I need to make (for the boss fight, the area ambience, etc) And most importantly, we can’t forget about the commentary that occurs when you die to specific traps/enemies (which I’ve already started). I’m hoping I can release this game by late-September at the latest, along with working on some Stardance missions. I’d like to maximize my coding time before Stardance ends, despite the fact I’m busy with all the homework I’m getting. :(
Devlog #10: Music, Rebalancing, and “Voicelines” This will most likely be the final devlog. At least for Stardance. There’s so much more that will happen after Stardance ends (more info later). Playtester Feedback and Rebalancing I’ve gotten feedback from multiple playtesters (all of them are listed in the credits), and they’ve all said that there’s a big difficulty spike between levels 8 and 9 (or 10), so I had to make the levels easier by removing enemies and spikes, along with nerfing enemy hp, bullet fire rates, and bullet speed. I also had to adjust level 5 due to how small the bottom section is, which gives you barely any room to avoid the snails. For any playtesters who are reading this right now, thanks for playtesting and I hope you recover from your plant PTSD (from your 20-50+ deaths). “Voiceline” System and Adaptive Difficulty If only the dialogue was actually voiced. I don’t have anyone to voice act for me right now. But anyways, this voiceline system reacts to every level you enter and every death. It’ll either give tips on how to deal with whatever you’re facing or simply mock you. Here’s a couple of sample lines: “…And you’re having trouble with a stationary triangle in the ground. I repeat… A STATIONARY TRIANGLE IN THE GROUND!” (8th death to spikes) “Looking for an easy way to counter snails? It’s called ‘double-jumping’.” (3rd death to snails) “Outplanted by the plants…” (7th death to plants) “Those bees sure do sting… But they won’t last long when you ‘sting’ them back.” (1st death to bees) It will also change your difficulty for you when you’ve died too few or too many times on one level. I’m planning on giving the commentator a name. Maybe Domainus? We’ll find out later if it becomes canon or not. New Music Licensing Agreement Remember how in a previous devlog, I found out I couldn’t use Rush’s music for my game due to legal issues? That’s been fixed now, as both of us along with our parents signed an agreement. It’s not formal or anything, but from what I’ve researched, it should do the trick for now. After everyone signed the agreement, I added some new tracks to the BGM player: Beehold the Bullets (boss battle theme) UPC Test: PASS (boss victory theme) Void Hub (plays after beating the demo) Note: The gameplay footage below does not have audio, but the actual game will. Minor Details and Changes Last devlog, last changes… Added credits with playtesters, attribution, assets, and composers Updated README (still needs a slight update, will finish before I ship) Fixed audio sliders in settings menu starting at wrong positions Added “Reset All Settings” Added speedrun timer for Speedrun Mode in settings Stopped leftover bullets from killing you Started off player on Ultra Hard instead of Extreme on game startup Future of Universal Existence I plan to post future devlogs in a Discord server for anyone that’s interested. You’ll also be able to sign up to playtest future versions of the game and give feedback, along with participating in server events. You can join here: https://discord.gg/Ztc37dcu9 This link will expire soon, which is why I’ll paste another one later in the comments. Hope to see you around!
Ships:
Universal Existence is a 2d platformer with many mechanics that will be explored more in-depth and combined with other mechanics to make many interesting levels. Platform through 12 levels of the UPC (Universal Platforming Course) in the game’s demo. You can also get tips from Domainus, the creator of the universe and the manager of the UPC (Universal Platforming Course), or get yelled at for dying to a stationary triangle for the 8th time. There’s four unique difficulties, with your difficulty being adjusted to try and match your skill level. I found it challenging to make certain elements of the game like the settings menu (like the speedrun timer) and a couple of enemies (like the mushroom, which was hard to figure out when the player jumped on top of it and when it killed the player [I ended up having to adjust hitboxes several times]). I’m pretty proud of how I managed to make some pretty fun levels, such as level 6 (for providing just enough space for it to be possible, but still somewhat challenging) and level 11 (which involves knowing when to use each blaster and even has a cool level skip if you discover it [hint: one of Domainus’s voicelines reveals part of it]). Where to Play If you have a windows pc, you can download the game from the itch.io link below, if you want an executable. Just make sure to unzip the ZIP folder and open the .exe file (not the .console or .pck). Otherwise, you can play the game on any computer by clicking “Run Game” on itch.io. Keep in mind the game can be hard, especially during levels 9-12. Good luck! Also, if you have a controller, feel free to test it to see if it works with the game. Currently, the XBOX controller is partially supported (controllers cannot navigate the pause menu, but you can open it up by pressing Esc on keyboard or Menu button for Xbox controller). If you don’t want to play the game, here’s a 100% playthrough with all apples and secret melons collected. https://youtu.be/cXItOPMkMOI...
|
1793148666.2856066
|
1793235066.2856066
|
|
22775
|
Riddle Bot by @Faizy179 | Stardance
|
Faizy179
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T19:02:39Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made a slack bot that delivers you riddles. You can type in a riddle command, witch randomly generates a riddle from the bank of riddle and displays it, and you can guess the riddle by using the guess command. One big step back that occurred was my 45 minute time laps deleting. This resulted in a lack of documentation of my work. On the other hand, I am very happy I got the riddles to display as this is the first time that I have used javascript", "repo": "https://github.com/Faizy179/First-Slack-Bot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0BBUBD08KD"}]...
|
[{"post_id": 12680, "ts": "202 [{"post_id": 12680, "ts": "2026-06-20T18:35:54Z", "hours": 0.3136, "text": "Added the riddle to the bot and made it run 24/7 Ran into a couple bugs today. Bug 1: put the wrong working directory for the nest server to reference. Since this directory did not exist, the server could not run the slack bot. To fix this, i simply got the directory of the slack bot and put that in as the working directory Bug 2: Issues with correct answer validation If the answer to one of the riddles was Seven for example, and the user guessed Seven, the slack bot would mark that as incorrect. While debugging, I realised that this issue was caused by the usage of the toLowerCase() string function. I was making the users answers lowercase resulting in the code comparing the correct answer “Seven” with “seven” and deeming that as incorrect. To fix this I simply changed all the answers to lowercase strings"}, {"post_id": 12332, "ts": "2026-06-20T03:42:13Z", "hours": 0.3, "text": "Built a slack bot that can run predefined riddles. To achieve this i set an array with the riddle questions and their answers. Than, I added two commands, one to display the riddle, and the other to get the users response and display wether the user was correct or not. The bot has not been tested yet, nor have the final riddles been added. All of this will be done once nest application is approved"}]...
|
Title: Riddle Bot by @Faizy179 | Stardance
Devlog Title: Riddle Bot by @Faizy179 | Stardance
Devlogs:
Built a slack bot that can run predefined riddles. To achieve this i set an array with the riddle questions and their answers. Than, I added two commands, one to display the riddle, and the other to get the users response and display wether the user was correct or not. The bot has not been tested yet, nor have the final riddles been added. All of this will be done once nest application is approved
Added the riddle to the bot and made it run 24/7 Ran into a couple bugs today. Bug 1: put the wrong working directory for the nest server to reference. Since this directory did not exist, the server could not run the slack bot. To fix this, i simply got the directory of the slack bot and put that in as the working directory Bug 2: Issues with correct answer validation If the answer to one of the riddles was Seven for example, and the user guessed Seven, the slack bot would mark that as incorrect. While debugging, I realised that this issue was caused by the usage of the toLowerCase() string function. I was making the users answers lowercase resulting in the code comparing the correct answer “Seven” with “seven” and deeming that as incorrect. To fix this I simply changed all the answers to lowercase strings
Ships:
I have made a slack bot that delivers you riddles. You can type in a riddle command, witch randomly generates a riddle from the bank of riddle and displays it, and you can guess the riddle by using the guess command. One big step back that occurred was my 45 minute time laps deleting. This resulted in a lack of documentation of my work. On the other hand, I am very happy I got the riddles to display as this is the first time that I have used javascript...
|
1793306879.3066878
|
1793393279.3066878
|
|
22779
|
Cyber Drive by @trung_nguyen | Stardance
|
trung_nguyen
|
1
|
7.0
|
117
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-21T01:20:18Z", "hours": 7.0, "multiplier": 17.25, "payout": 117, "blessing": "neutral", "text": "shipped it. its live on github pages now so go drive it. so what is this thing. its an infinite synthwave highway you cruise down at sunset. you steer with your mouse, the world banks into the turns, and if you hold left click everything kicks into hyperdrive turbo, pink grid goes gold, stars stretch into streaks, the camera starts rumbling. thats the whole game. no goal, no score, just vibes at high speed. the tricky part was making something that simple actually feel good. you dont get to hide behind mechanics, so every little detail carries weight. getting the road to look like neon mountains on the edges while staying flat enough to drive on took way too much shader fiddling. and the turbo only lands because nothing snaps, everything lerps, speed eases in, colors melt, the camera leans. early on i had states flipping instantly and it felt broken even though it technically worked. turns out the in-between frames are the actual product. what im proud of is how much feel came out of so little. theres barely anything under the hood, but drop the camera low, bank the turns, add a rumble and a fake HUD and your brain just fills in the rest. it feels like driving. if you wanna try it: open it on desktop, give it a sec to load, then just move your mouse to steer and hold left click to boost. thats it. let go and it eases back down to cruising. best with the sound off in your head and the speed all the way up. thats a wrap. onto the next one.", "repo": "https://github.com/2trung/cyber-drive/", "demo": "https://2trung.github.io/cyber-drive/"}]...
|
[{"post_id": 12516, "ts": "202 [{"post_id": 12516, "ts": "2026-06-20T13:13:50Z", "hours": 5.7306, "text": "ok it moves now. and honestly it slaps. didnt end up adding a car, turns out you dont need one. dropped the camera real low like youre sitting in a cockpit and just scroll the whole world toward you instead of moving forward. made two copies of the terrain and when one slides behind you it teleports back to the horizon, so the road never ends. you cant tell its only two chunks looping which is the whole trick. steering is just the mouse. moving it left/right slides the camera into the next lane and banks it a little so it feels like the car is leaning into the turn. added a tiny bit of yaw too so the world tilts with you. small thing but it makes it feel real.best part is the turbo. hold left click and everything lerps into warp mode, the pink grid goes solar gold, the cyan stars stretch into red hyperdrive streaks, the sun flares crimson, and the whole camera starts rumbling like the engine cant take it. cruise is a chill 0.35, turbo overclocks to like 12x. let go and it eases back down to vibing speed. the lerp on everything is what sells it, nothing snaps.threw a HUD on top in orbitron, fake telemetry that flips to WARP_DRIVE ENGAGED when you boost. pure decoration but it ties the whole synthwave thing together. thats the project. simple little infinite cyber-drive. no engine, no car model, just shaders and loops and a mouse. exactly the vibe i wanted."}, {"post_id": 12310, "ts": "2026-06-20T02:51:39Z", "hours": 1.0994, "text": "today i just started building a vaporwave driving scene. got react three fiber running on webgpu. the road is just a flat plane but i used some shader magic to push the edges up so they look like neon pink mountains while the middle stays flat for driving. then i threw a big glowy sun in the back and some floating particles to make it feel alive. sunset lighting ties it all together next im tryna make it actually move so it feels like youre driving. maybe add a car idk."}]...
|
Title: Cyber Drive by @trung_nguyen | Stardance
D Title: Cyber Drive by @trung_nguyen | Stardance
Devlogs:
today i just started building a vaporwave driving scene. got react three fiber running on webgpu. the road is just a flat plane but i used some shader magic to push the edges up so they look like neon pink mountains while the middle stays flat for driving. then i threw a big glowy sun in the back and some floating particles to make it feel alive. sunset lighting ties it all together next im tryna make it actually move so it feels like youre driving. maybe add a car idk.
ok it moves now. and honestly it slaps. didnt end up adding a car, turns out you dont need one. dropped the camera real low like youre sitting in a cockpit and just scroll the whole world toward you instead of moving forward. made two copies of the terrain and when one slides behind you it teleports back to the horizon, so the road never ends. you cant tell its only two chunks looping which is the whole trick. steering is just the mouse. moving it left/right slides the camera into the next lane and banks it a little so it feels like the car is leaning into the turn. added a tiny bit of yaw too so the world tilts with you. small thing but it makes it feel real.best part is the turbo. hold left click and everything lerps into warp mode, the pink grid goes solar gold, the cyan stars stretch into red hyperdrive streaks, the sun flares crimson, and the whole camera starts rumbling like the engine cant take it. cruise is a chill 0.35, turbo overclocks to like 12x. let go and it eases back down to vibing speed. the lerp on everything is what sells it, nothing snaps.threw a HUD on top in orbitron, fake telemetry that flips to WARP_DRIVE ENGAGED when you boost. pure decoration but it ties the whole synthwave thing together. thats the project. simple little infinite cyber-drive. no engine, no car model, just shaders and loops and a mouse. exactly the vibe i wanted.
Ships:
shipped it. its live on github pages now so go drive it. so what is this thing. its an infinite synthwave highway you cruise down at sunset. you steer with your mouse, the world banks into the turns, and if you hold left click everything kicks into hyperdrive turbo, pink grid goes gold, stars stretch into streaks, the camera starts rumbling. thats the whole game. no goal, no score, just vibes at high speed. the tricky part was making something that simple actually feel good. you dont get to hide behind mechanics, so every little detail carries weight. getting the road to look like neon mountains on the edges while staying flat enough to drive on took way too much shader fiddling. and the turbo only lands because nothing snaps, everything lerps, speed eases in, colors melt, the camera leans. early on i had states flipping instantly and it felt broken even though it technically worked. turns out the in-between frames are the actual product. what im proud of is how much feel came out of so little. theres barely anything under the hood, but drop the camera low, bank the turns, add a rumble and a fake HUD and your brain just fills in the rest. it feels like driving. if you wanna try it: open it on desktop, give it a sec to load, then just move your mouse to steer and hold left click to boost. thats it. let go and it eases back down to cruising. best with the sound off in your head and the speed all the way up. thats a wrap. onto the next one....
|
1792878710.868789
|
1793742710.868789
|
|
22781
|
Frictionless by @ompanem | Stardance
|
ompanem
|
1
|
7.5
|
93
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-23T05:27:08Z", "hours": 7.0, "multiplier": 17.74, "payout": 93, "blessing": "neutral", "text": "I made Codecast, a desktop app that turns code and narration into a synced, narrated coding tutorial video. The most challenging part was getting multiple scenes to stay perfectly in sync with their narration and merging them into one final video with ffmpeg. I’m proud that I built the whole thing from scratch and understand every part of what I built, from the typing animation to the UI. To test it, watch the demo video to see the features, or clone the repo, install the requirements plus ffmpeg, and run python ui.py (full steps in the README).", "repo": "https://github.com/ompanem/Codecast", "demo": "https://github.com/ompanem/Codecast/releases/tag/v1.0.0"}]...
|
[{"post_id": 14875, "ts": "202 [{"post_id": 14875, "ts": "2026-06-24T04:37:50Z", "hours": 0.5003, "text": "Hi everyone! My last devlog was about how the multi scene stitching works. This one is about a bug that stopped Codecast from working for anyone but me, which took a while to track down because the app worked totally fine on my own computer the whole time. The problem Someone downloaded the Codecast .exe , opened it, hit export, and no video file came out at all. No video, no message, nothing. On my computer the exact same .exe made a video every single time, so at first I had no idea what was different on their end. What I thought it was at first Codecast uses a tool called ffmpeg to actually build the video out of the frames and the narration, so my first guess was that they just hadn’t installed ffmpeg. That seemed like the obvious answer. So I had them install it, but it still didn’t work. I even tried it on a second computer that had ffmpeg installed and set up correctly, and it broke there too. So the issue wasn’t a missing install, it was a real bug in my app. How I actually found it The annoying part is that I built the .exe with a --windowed flag, which hides the console, so when it crashed there was nothing to see, it just quietly did nothing. So I rebuilt it without --windowed so the black console window would stay open and show me whatever went wrong. That’s when the actual error finally showed up: a FileNotFoundError when the app tried to run ffprobe which gets data like duration, file size, etc. . Ffprobe is a part of ffmpeg which stitches the frames and audio into a video. The strange thing is that ffmpeg was installed and it was on the system PATH, so the computer should have been able to find it. After messing around with it I figured out that it only broke when running as the .exe , never when I ran the plain python ui.py version. It turns out PyInstaller bundles don’t go looking for the system PATH in the same way a normal program does, so even with ffmpeg sitting right there on the computer, the bundled .exe couldn’t find it. How I solved it Instead of relying on the user’s computer having ffmpeg somewhere it could find, I bundled ffmpeg and ffprobe directly inside the .exe so it carries its own copy and never has to go searching the system at all. The tricky bit is that the code has to find these tools whether it’s running as plain Python code or as the packed .exe , and the bin folder location is different for these two scenarios. When PyInstaller runs the .exe , it extracts all the bundled files and puts it into a temporary folder and stores that folder’s location in sys._MEIPASS . So I made a little helper method that checks for that: def resource_path ( filename ): if hasattr ( sys , \" _MEIPASS \" ): base = sys . _MEIPASS else : base = os . path . dirname ( os . path . abspath ( __file__ )) return os . path . join ( base , \" bin \" , filename ) So if sys._MEIPASS exists, the application is running as the .exe and I look in the temp folder, and if it doesn’t, then it’s running as normal code and I just look next to my script. Either way it finds the bin folder where the two necessary tools live. Then I built the exe with this: pyinstaller --onefile --windowed --add-data \"bin;bin\" ui.py The --add-data \"bin;bin\" part is what tells PyInstaller to pack the bin folder into the .exe too. How I tested it To really make sure it was standalone, I uninstalled ffmpeg off another laptop entirely, so there was no ffmpeg anywhere on the system, and then ran the .exe file. It still made the video therefore that means the user doesn’t need to install ffmpeg themselves to use the application Why this matters The reason this matters is mainly convenience. Before this update, the user would have to go onto my Github repository, install ffmpeg themselves and then use my application which could be a time consuming task. Now you just need to install the .exe file and run it."}, {"post_id": 14013, "ts": "2026-06-23T00:06:26Z", "hours": 0.2767, "text": "My last devlog was about the UI. This one is about how the multi-scene part actually works under the hood, since this was one of the more difficult parts to implement in my project. The problem I wanted one video to be able to have multiple scenes (multiple code snippets and narrations) instead of just one. The hard part about this is that each scene’s typing animation has to stay perfectly synced with its own narration audio. How I solved it Instead of trying to build one giant video and line up all the audio across scenes, I make each scene into its own small video first. Each scene gets its frames timed to its own narration, then gets turned into a scene_0.mp4 , scene_1.mp4 , and so on. Then at the very end, all those mini-videos get stitched together into the final video using ffmpeg’s concat feature: with open ( \" scenes.txt \" , \" w \" ) as f : for i in range ( len ( scenes )): f . write ( f \" file ' scene_ { i } .mp4 ' \\n \" ) subprocess . run ([ \" ffmpeg \" , \" -y \" , \" -f \" , \" concat \" , \" -safe \" , \" 0 \" , \" -i \" , \" scenes.txt \" , \" -c \" , \" copy \" , \" output_path \" ]) ffmpeg’s concat needs a text file listing every video to join, so I made a scenes.txt file with each line being one scene and then I told ffmpeg to read it. A bug I hit At first all the scenes were saving their frames into the same folder, so scene 2 was overwriting scene 1’s frames and the final video only showed the last scene. I fixed it by giving each scene its own frame folder ( frames_0 , frames_1 , etc) so they don’t clash. Why this approach good Because each scene is already a finished, synced video on its own, stitching them just plays them back to back. There’s no complicated math needed to merge multiple audio clips with one video, instead it is just merging videos which I can do really easily. Cleanup Since this makes a bunch of temporary files (mini-videos, frame folders, voice files), I made the program delete them all automatically after the final video is built, so you’re just left with the one video you actually want. Stay tuned for more!"}, {"post_id": 13995, "ts": "2026-06-22T23:28:22Z", "hours": 2.0328, "text": "This devlog is about the biggest change to my project yet…. making my project from just a CLI to a Desktop application. Why did I make a UI? Before this the only way to make the project was to open video.json and type everything in by hand which honestly sucked because I needed to remember escape sequences like \\n to make sure the code looked good on the video. It worked but it was a time consuming task to create a video and easy to mess up. So I ended up building a UI where you just type into boxes instead. How it works I used tktinker (Python’s built in GUI library) to make the window. There’s a box for code, narration, and output. Plus there are buttons like “Next Scene” to add more scenes to your video and “Previous Scene” if you want to edit a previous scene you made. When you hit Export it grabs the text from the boxes and saves the data to a file called video.json which is then used to create the video. scene = { \" code \" : code , \" narration \" : narration , \" output \" : output } scenes . append ( scene ) with open ( \" video.json \" , \" w \" ) as f : json . dump ( scenes , f ) subprocess . run ([ sys . executable , \" make_video.py \" , save_path ]) The nice part is the UI links really nicely with my video making code since the data from the UI is given to the video.json file which is then used to make the video. Features I added Multiple scenes : You can add as many scenes as you want and they get stitched into one video Go back and edit : The Previous Scene button lets you bring an old scene’s data back without losing any of your other scenes. Choose where to save : When you click the Export button, a save dialog appears and lets you pick where in your computer you want to place the video, so the video can either go straight into Downloads or wherever you like. Development struggles The trickiest part in my development has to be going back and forth between scenes. I had to track which scene I was currently on so that when I went back and forth it would save my changes to the correct scene instead of making a duplicate scene Next time Next time for this project I will make the UI look nicer and try to host the project online so people can try out my project without needing to download anything. Attached below is a picture of my current UI and here’s a full demo video of my application. https://www.youtube.com/watch?v=3hekBi8Fxcs"}, {"post_id": 13527, "ts": "2026-06-22T04:21:19Z", "hours": 3.4458, "text": "Hi everyone! This is my second devlog. Last time I said that I would add a voiceover and text in the output panel, but I ended up building a lot more so my progress will be split into multiple devlogs. Voiceover The voice feature I added reads the narration text out loud so the video actually has a voiceover instead of being silent. I used edge-tts which is free and really easy to setup. I chose it over ElevenLabs because edge-tts doesn’t need an API key or any payment. One cool thing I learnt is edge-tts is asynchronous which means it has to wait on something while it runs so I had to run it with asyncio.run(). async def make_voice ( text , fileName ): tts = edge_tts . Communicate ( text , \" en-US-GuyNeural \" ) await tts . save ( fileName ) asyncio . run ( make_voice ( narration , \" voice.mp3 \" )) In make_voice , the await tts.save() is when the program waits. It pauses until Microsoft’s servers generate the audio and send it back, then it gets saved as an mp3. That is why the whole method has to be run with asyncio.run() instead of being called as a regular method. The voice also controls the video length. I measure the audio length and then measure the exact amount of frames needed to match it so the typing always syncs with the narration. Output panel Before, the output box at the bottom of the editor was empty. Now it shows the output of the code after the code is finished typing (like how code results are displayed after you run the code). One limitation: The output is whatever I type into the JSON file, the code doesn’t actually run so it’s on me and future users to put the correct output. Maybe later in the project I could make it run the code automatically. Next time: I want to add multi scene support so one video can have multiple code snippets and narration instead of just one. Attached below is a video of my progress on the project. Stay tuned for more!"}, {"post_id": 12362, "ts": "2026-06-20T05:24:02Z", "hours": 1.0439, "text": "Hi everyone! This is my first devlog and I am really proud about the progress I have made. I spent this session building the core of the tool which is turning code into an animated video. The way it works is I basically draw a fake coding editor with Pillow like the code (top) and output (bottom) panels and the circles at the top left. Then to animate the typing I basically drew the same frame over and over again with one additional letter each time so it looks like somebody is typing, and then ffmpeg takes all of the frames and turns it into a video. One issue I had is I had to zero pad the filenames (eg. frame_0001 instead of frame_1) otherwise ffmpeg which I used to stitch images into videos would play the frames out of order. Next I will add a voice over to the video, and text in the output panel. Attached below is the video of what I did."}]...
|
Title: Frictionless by @ompanem | Stardance
Devlo Title: Frictionless by @ompanem | Stardance
Devlogs:
Hi everyone! This is my first devlog and I am really proud about the progress I have made. I spent this session building the core of the tool which is turning code into an animated video. The way it works is I basically draw a fake coding editor with Pillow like the code (top) and output (bottom) panels and the circles at the top left. Then to animate the typing I basically drew the same frame over and over again with one additional letter each time so it looks like somebody is typing, and then ffmpeg takes all of the frames and turns it into a video. One issue I had is I had to zero pad the filenames (eg. frame_0001 instead of frame_1) otherwise ffmpeg which I used to stitch images into videos would play the frames out of order. Next I will add a voice over to the video, and text in the output panel. Attached below is the video of what I did.
Hi everyone! This is my second devlog. Last time I said that I would add a voiceover and text in the output panel, but I ended up building a lot more so my progress will be split into multiple devlogs. Voiceover The voice feature I added reads the narration text out loud so the video actually has a voiceover instead of being silent. I used edge-tts which is free and really easy to setup. I chose it over ElevenLabs because edge-tts doesn’t need an API key or any payment. One cool thing I learnt is edge-tts is asynchronous which means it has to wait on something while it runs so I had to run it with asyncio.run(). async def make_voice ( text , fileName ): tts = edge_tts . Communicate ( text , " en-US-GuyNeural " ) await tts . save ( fileName ) asyncio . run ( make_voice ( narration , " voice.mp3 " )) In make_voice , the await tts.save() is when the program waits. It pauses until Microsoft’s servers generate the audio and send it back, then it gets saved as an mp3. That is why the whole method has to be run with asyncio.run() instead of being called as a regular method. The voice also controls the video length. I measure the audio length and then measure the exact amount of frames needed to match it so the typing always syncs with the narration. Output panel Before, the output box at the bottom of the editor was empty. Now it shows the output of the code after the code is finished typing (like how code results are displayed after you run the code). One limitation: The output is whatever I type into the JSON file, the code doesn’t actually run so it’s on me and future users to put the correct output. Maybe later in the project I could make it run the code automatically. Next time: I want to add multi scene support so one video can have multiple code snippets and narration instead of just one. Attached below is a video of my progress on the project. Stay tuned for more!
This devlog is about the biggest change to my project yet…. making my project from just a CLI to a Desktop application. Why did I make a UI? Before this the only way to make the project was to open video.json and type everything in by hand which honestly sucked because I needed to remember escape sequences like \n to make sure the code looked good on the video. It worked but it was a time consuming task to create a video and easy to mess up. So I ended up building a UI where you just type into boxes instead. How it works I used tktinker (Python’s built in GUI library) to make the window. There’s a box for code, narration, and output. Plus there are buttons like “Next Scene” to add more scenes to your video and “Previous Scene” if you want to edit a previous scene you made. When you hit Export it grabs the text from the boxes and saves the data to a file called video.json which is then used to create the video. scene = { " code " : code , " narration " : narration , " output " : output } scenes . append ( scene ) with open ( " video.json " , " w " ) as f : json . dump ( scenes , f ) subprocess . run ([ sys . executable , " make_video.py " , save_path ]) The nice part is the UI links really nicely with my video making code since the data from the UI is given to the video.json file which is then used to make the video. Features I added Multiple scenes : You can add as many scenes as you want and they get stitched into one video Go back and edit : The Previous Scene button lets you bring an old scene’s data back without losing any of your other scenes. Choose where to save : When you click the Export button, a save dialog appears and lets you pick where in your computer you want to place the video, so the video can either go straight into Downloads or wherever you like. Development struggles The trickiest part in my development has to be going back and forth between scenes. I had to track which scene I was currently on so that when I went back and forth it would save my changes to the correct scene instead of making a duplicate scene Next time Next time for this project I will make the UI look nicer and try to host the project online so people can try out my project without needing to download anything. Attached below is a picture of my current UI and here’s a full demo video of my application. https://www.youtube.com/watch?v=3hekBi8Fxcs
My last devlog was about the UI. This one is about how the multi-scene part actually works under the hood, since this was one of the more difficult parts to implement in my project. The problem I wanted one video to be able to have multiple scenes (multiple code snippets and narrations) instead of just one. The hard part about this is that each scene’s typing animation has to stay perfectly synced with its own narration audio. How I solved it Instead of trying to build one giant video and line up all the audio across scenes, I make each scene into its own small video first. Each scene gets its frames timed to its own narration, then gets turned into a scene_0.mp4 , scene_1.mp4 , and so on. Then at the very end, all those mini-videos get stitched together into the final video using ffmpeg’s concat feature: with open ( " scenes.txt " , " w " ) as f : for i in range ( len ( scenes )): f . write ( f " file ' scene_ { i } .mp4 ' \n " ) subprocess . run ([ " ffmpeg " , " -y " , " -f " , " concat " , " -safe " , " 0 " , " -i " , " scenes.txt " , " -c " , " copy " , " output_path " ]) ffmpeg’s concat needs a text file listing every video to join, so I made a scenes.txt file with each line being one scene and then I told ffmpeg to read it. A bug I hit At first all the scenes were saving their frames into the same folder, so scene 2 was overwriting scene 1’s frames and the final video only showed the last scene. I fixed it by giving each scene its own frame folder ( frames_0 , frames_1 , etc) so they don’t clash. Why this approach good Because each scene is already a finished, synced video on its own, stitching them just plays them back to back. There’s no complicated math needed to merge multiple audio clips with one video, instead it is just merging videos which I can do really easily. Cleanup Since this makes a bunch of temporary files (mini-videos, frame folders, voice files), I made the program delete them all automatically after the final video is built, so you’re just left with the one video you actually want. Stay tuned for more!
Hi everyone! My last devlog was about how the multi scene stitching works. This one is about a bug that stopped Codecast from working for anyone but me, which took a while to track down because the app worked totally fine on my own computer the whole time. The problem Someone downloaded the Codecast .exe , opened it, hit export, and no video file came out at all. No video, no message, nothing. On my computer the exact same .exe made a video every single time, so at first I had no idea what was different on their end. What I thought it was at first Codecast uses a tool called ffmpeg to actually build the video out of the frames and the narration, so my first guess was that they just hadn’t installed ffmpeg. That seemed like the obvious answer. So I had them install it, but it still didn’t work. I even tried it on a second computer that had ffmpeg installed and set up correctly, and it broke there too. So the issue wasn’t a missing install, it was a real bug in my app. How I actually found it The annoying part is that I built the .exe with a --windowed flag, which hides the console, so when it crashed there was nothing to see, it just quietly did nothing. So I rebuilt it without --windowed so the black console window would stay open and show me whatever went wrong. That’s when the actual error finally showed up: a FileNotFoundError when the app tried to run ffprobe which gets data like duration, file size, etc. . Ffprobe is a part of ffmpeg which stitches the frames and audio into a video. The strange thing is that ffmpeg was installed and it was on the system PATH, so the computer should have been able to find it. After messing around with it I figured out that it only broke when running as the .exe , never when I ran the plain python ui.py version. It turns out PyInstaller bundles don’t go looking for the system PATH in the same way a normal program does, so even with ffmpeg sitting right there on the computer, the bundled .exe couldn’t find it. How I solved it Instead of relying on the user’s computer having ffmpeg somewhere it could find, I bundled ffmpeg and ffprobe directly inside the .exe so it carries its own copy and never has to go searching the system at all. The tricky bit is that the code has to find these tools whether it’s running as plain Python code or as the packed .exe , and the bin folder location is different for these two scenarios. When PyInstaller runs the .exe , it extracts all the bundled files and puts it into a temporary folder and stores that folder’s location in sys._MEIPASS . So I made a little helper method that checks for that: def resource_path ( filename ): if hasattr ( sys , " _MEIPASS " ): base = sys . _MEIPASS else : base = os . path . dirname ( os . path . abspath ( __file__ )) return os . path . join ( base , " bin " , filename ) So if sys._MEIPASS exists, the application is running as the .exe and I look in the temp folder, and if it doesn’t, then it’s running as normal code and I just look next to my script. Either way it finds the bin folder where the two necessary tools live. Then I built the exe with this: pyinstaller --onefile --windowed --add-data "bin;bin" ui.py The --add-data "bin;bin" part is what tells PyInstaller to pack the bin folder into the .exe too. How I tested it To really make sure it was standalone, I uninstalled ffmpeg off another laptop entirely, so there was no ffmpeg anywhere on the system, and then ran the .exe file. It still made the video therefore that means the user doesn’t need to install ffmpeg themselves to use the application Why this matters The reason this matters is mainly convenience. Before this update, the user would have to go onto my Github repository, install ffmpeg themselves and then use my application which could be a time consuming task. Now you just need to install the .exe file and run it.
Ships:
I made Codecast, a desktop app that turns code and narration into a synced, narrated coding tutorial video. The most challenging part was getting multiple scenes to stay perfectly in sync with their narration and merging them into one final video with ffmpeg. I’m proud that I built the whole thing from scratch and understand every part of what I built, from the typing animation to the UI. To test it, watch the demo video to see the features, or clone the repo, install the requirements plus ffmpeg, and run python ui.py (full steps in the README)....
|
1793253312.1470122
|
1793339712.1470122
|
|
22784
|
Flappy Bird Game by @billet | Stardance
|
billet
|
1
|
7.0
|
25
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T16:36:44Z", "hours": 7.0, "multiplier": 3.84, "payout": 25, "blessing": "neutral", "text": "Hello Everyone! I have created a replication of Flappy Bird. The goal of the game is to survive for as long as possible while dodging the pipes that come your way. FEATURES: My version of Flappy Bird includes a scoreboard and 3 difficulties for the game, as well as hand-drawn assets that were created in Piskelapp.com. The background also moves in various speeds. Flappy will rotate depending on if he is going up or falling down. The game will become harder as time goes on, as the pipes will speed up everytime you score a point. The scoreboard holds the 3 highest scores for each difficulties, it doesn’t get saved into a cookie or locally on the computer, so DON’T reload the page if you don’t want to erase the data. CHANGES: I started this project before stardance had started, but I made some improvements to the hitboxes that check for collision with the pipes, and UI improvements, like background color changes and moving the title somewhere more appropriate. As well, as created a tutorial page with some animations and images for more clarity as to how to play the game. PROBLEMS ISSUES: During development I had some problems with Flappy’s hitbox and how it worked, but eventually with the help of one of my teachers we got it to work pretty well, although since this is HTML + CSS, when I made flappy rotate when clicked the hitboxes which were referenced from the top left corner didn’t calculate the collision math correctly. I improved on this by making the hitbox like a circle and with a couple cases which is explained in the JS code, the hitbox becomes way more accurate. Thank you.", "repo": "https://github.com/Iexist67/Flappy-Bird", "demo": "https://iexist67.github.io/Flappy-Bird/"}]...
|
[{"post_id": 21992, "ts": "202 [{"post_id": 21992, "ts": "2026-07-04T06:52:25Z", "hours": 3.2242, "text": "I made some UI changes to my flappy bird game and included a little tutorial page to make people who don’t understand the game or don’t know the controls have more clarity to how the game should be played. Here is also a gif of the gameplay."}, {"post_id": 17124, "ts": "2026-06-27T20:09:12Z", "hours": 3.3228, "text": "Finished the updated hit box for flappy in my flappy-bird game! I redid the hit box logic and added a span element inside of my flappy element in HTML to “act” as a hitbox. You can try my game out here: https://iexist67.github.io/Flappy-Bird/"}]...
|
Title: Flappy Bird Game by @billet | Stardance
De Title: Flappy Bird Game by @billet | Stardance
Devlogs:
Finished the updated hit box for flappy in my flappy-bird game! I redid the hit box logic and added a span element inside of my flappy element in HTML to “act” as a hitbox. You can try my game out here: https://iexist67.github.io/Flappy-Bird/
I made some UI changes to my flappy bird game and included a little tutorial page to make people who don’t understand the game or don’t know the controls have more clarity to how the game should be played. Here is also a gif of the gameplay.
Ships:
Hello Everyone! I have created a replication of Flappy Bird. The goal of the game is to survive for as long as possible while dodging the pipes that come your way. FEATURES: My version of Flappy Bird includes a scoreboard and 3 difficulties for the game, as well as hand-drawn assets that were created in Piskelapp.com. The background also moves in various speeds. Flappy will rotate depending on if he is going up or falling down. The game will become harder as time goes on, as the pipes will speed up everytime you score a point. The scoreboard holds the 3 highest scores for each difficulties, it doesn’t get saved into a cookie or locally on the computer, so DON’T reload the page if you don’t want to erase the data. CHANGES: I started this project before stardance had started, but I made some improvements to the hitboxes that check for collision with the pipes, and UI improvements, like background color changes and moving the title somewhere more appropriate. As well, as created a tutorial page with some animations and images for more clarity as to how to play the game. PROBLEMS ISSUES: During development I had some problems with Flappy’s hitbox and how it worked, but eventually with the help of one of my teachers we got it to work pretty well, although since this is HTML + CSS, when I made flappy rotate when clicked the hitboxes which were referenced from the top left corner didn’t calculate the collision math correctly. I improved on this by making the hitbox like a circle and with a couple cases which is explained in the JS code, the hitbox becomes way more accurate. Thank you....
|
1793278410.0715535
|
1793364810.0715535
|
|
22795
|
Synaptix by @Aniket | Stardance
|
Aniket
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-20T21:44:48Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Project: StudyHub — Peer-to-Peer Study Material Sharing App StudyHub addresses a real and relatable problem — study material at the college level is scattered across WhatsApp groups, expiring Drive links, and random Telegram channels. The app brings everything into one searchable, community-driven library where students earn coins by uploading and spend them to download, which neatly solves the cold-start problem without relying on pure altruism. Effort is clearly demonstrated across 11 major versions, 7 EAS build attempts before a clean APK, 23 third-party dependencies audited and removed from a broken scaffold, and 8 critical bugs fixed in a single audit session. The entire journey — including what went wrong and exactly why — is documented honestly. Approximately 3,000 lines of TypeScript were written across screens, services, and contexts, with four AdMob ad unit types integrated and a full Firestore coin transaction audit trail implemented. Three meaningful Quality of Life improvements were made: Stats refresh accuracy — Home screen stats (uploads, groups joined, bookmarks) were fetched once on mount and went stale immediately after any user action. Replacing useEffect with useFocusEffect means counts re-fetch every time the screen comes into focus, so what the user sees always reflects what they just did. Member count race condition fixed — When two users tapped “Join Group” simultaneously, both reads returned the same count and one increment was silently lost. Wrapping joinGroup() and leaveGroup() in Firestore runTransaction() makes the read-modify-write atomic, so the count can never drift, go negative, or miss an update regardless of concurrency. Null-safe auth context eliminates the LoginScreen crash — The original build crashed in production with a TypeError at LoginScreen@1:2447207, traced via adb logcat to a web-only Firebase method (signInWithPopup) being called in a native Android context. The fix replaced it with the correct native Google Sign-In SDK and made login.tsx null-safe throughout — the context is read first, every value accessed with optional chaining, and each handler guards against null before calling — so the screen can never reach a render-time crash due to a timing issue at startup. All three improvements target reliability for real users, not cosmetic polish, which is exactly the right place to spend effort before a public release.", "repo": "https://github.com/A11490M/A11490M.github.io", "demo": "https://a11490m.github.io/"}]...
|
[{"post_id": 51195, "ts": "202 [{"post_id": 51195, "ts": "2026-08-20T18:21:11Z", "hours": 1.0603, "text": "just added some firestore rules and finalized the build"}, {"post_id": 23006, "ts": "2026-07-05T18:30:48Z", "hours": 2.2256, "text": "🚀 Devlog #6 — Coins, Coins Everywhere Today’s mission? Give Synaptix its own little economy. Because what’s a platform without a currency that makes your brain go “ooh shiny” every time the number goes up? 🪙 Welcome to the Coin Centre Built an entirely new Coin Centre where users can manage everything related to coins. Features include: 💰 Live coin balance 🎁 Daily bonus 📺 Rewarded Ads 💳 Coin Shop 📋 Transaction History ⚡ Clean tab navigation Basically… one place for all things shiny. 🎁 Daily Bonus Added a daily reward system. Users can now: Claim +5 coins every day Get blocked from claiming twice (nice try 😏) Come back tomorrow for another free reward Tiny feature. Massive dopamine. 📺 Rewarded Ads Integrated Rewarded AdMob Ads . Watch a short ad… Get free coins. No ads available? The app now explains what’s happening instead of staring awkwardly into your soul. 💳 Coin Shop Started building the future coin store. Added multiple packs: 🪙 Starter 💰 Popular 💎 Value 👑 Pro Payments aren’t live yet (Google Play wants its paperwork first 😒), but the entire flow is ready to go. 📋 Coin History Every coin now leaves a footprint. Users can see exactly where their coins came from and where they disappeared to. No more “Wait… where did my coins go?” 💭 Dev Thoughts Today wasn’t about adding another fancy screen. It was about making Synaptix feel more alive. Uploading notes, watching ads, collecting rewards… everything now feeds into a proper reward system. And honestly… Seeing my own app slowly turn into something that feels like a real product is a pretty cool feeling. 📈 Progress of Economy integration ██████░░░░ 50% Still a long road ahead... But every commit makes Synaptix feel a little less like \"just another project\" and a little more like something people might actually use every day. See you in **Devlog #7** 🚀"}, {"post_id": 22288, "ts": "2026-07-04T17:56:17Z", "hours": 1.2739, "text": "#Devlog 5 not gonna say a productive day but finally compleated with the admin panel and started working on in-app currency!!!"}, {"post_id": 21646, "ts": "2026-07-03T18:24:22Z", "hours": 3.1044, "text": "🚀 Devlog #4 — With Great Power Comes Great Admin Privileges Today’s objective was simple: Build an Admin Panel that actually feels like the control room of Synaptix. After hours of React Native, TypeScript, and a few “why isn’t this state updating?” moments, the Admin Panel finally feels like a proper production-grade dashboard. 🎛️ Admin Dashboard Overhaul The admin experience got a complete redesign. Added: Live statistics dashboard 📊 Tab-based navigation 🗂️ Quick Action shortcuts ⚡ Maintenance Mode indicator 🔧 Pull-to-refresh support 🔄 Cleaner and more responsive UI ✨ The goal was simple: Every important admin action should be only a couple of taps away. 📄 Document Management Admins can now: Search documents instantly 🔍 Edit document details ✏️ Toggle Public / Private visibility 🌍 Delete documents 🗑️ Monitor downloads and uploads 📈 No more opening Firebase just to hide a PDF. 👥 User Management The moderation system received a huge upgrade. Admins can now: Search users 🔍 Modify coin balances 🪙 Ban / Unban users 🚫 Delete accounts 🗑️ View uploads and joined groups 📊 Safe to say… The Admin account is now the final boss. 💬 Workspace & Group Controls Community management is much easier now. Admins can manage: 🏢 Workspaces 👥 Groups Everything from one dashboard. No Firebase archaeology required. 📢 Announcement Center Probably my favorite feature from today’s session. Admins can now: Post announcements 📝 Pin important notices 📌 Delete outdated announcements 🗑️ Use visual badges for different announcement types 🏷️ Basically… The “Attention everyone!” button finally exists. 🎨 UI Polish Spent way more time than expected polishing the experience. Improvements include: Better spacing Cleaner cards Status badges Color-coded actions Improved layouts Smoother interactions Users might never consciously notice these details… But they’ll definitely feel them. 💭 Developer Thoughts Today wasn’t about flashy features. It was about building the invisible infrastructure that keeps everything manageable once hundreds (hopefully thousands 👀) of users start using Synaptix. Every button I added today is one less reason for Future Me to open Firebase at 2:00 AM . Future Me is very thankful. 📈 Progress Synaptix Admin Panel Progress ███████░░░░ 70% Synaptix is slowly transforming from “a project I built” into “a platform I genuinely want people to use.” And honestly… That’s a pretty awesome feeling. See you in Devlog #5 🚀"}, {"post_id": 13810, "ts": "2026-06-22T17:05:40Z", "hours": 1.3333, "text": "Synaptix Devlog — Day 3 🚀Spent another day deep inside app/admin.tsx and somehow turned what started as “just an admin page” into an entire control center for the app. Today’s work was mostly about wiring up the backend and making sure admins can actually manage the platform instead of just looking at stats. ✅ Added data loading for: Platform statistics Documents Users Study groups Workspaces Announcements App settings ✅ Added error handling and debugging alerts for failed Firestore requests ✅ Built admin access verification Loading state while permissions are checked Access denied screen for non-admin users UID display to make debugging easier Firestore/admin setup instructions directly in-app ✅ Implemented document moderation tools Delete documents Toggle document visibility Edit document metadata Save updates instantly ✅ Implemented user management tools Ban / Unban users Delete users Set custom coin balances Global coin airdrops to every user One thing I’m learning while building Synaptix is that every feature creates three more features you didn’t know you needed. “Delete a document” sounds simple until you realize you need confirmations, state updates, Firestore actions, error handling, loading states, and a way to recover when things go wrong. The admin panel is finally starting to feel like a real dashboard instead of a collection of buttons. Still a lot left to build, but Synaptix is slowly becoming the platform I imagined when I first started sketching the idea. 📚 Share notes 👥 Join study groups 🪙 Earn coins 🛠️ Manage the entire platform Day 3 complete.Back to fighting TypeScript tomorrow. #buildinpublic #reactnative #typescript #firebase #expo #mobileapp #synaptix #100DaysOfCode"}, {"post_id": 12598, "ts": "2026-06-20T16:03:29Z", "hours": 0.8333, "text": "Synaptix Devlog – Day 2 🚀 Today I worked on the app/admin.tsx file and completed roughly 50% of it. Most of the session was focused on building the admin interface, organizing components, and refining the overall structure for future features. ✅ Progress:Continued development of the admin panel Implemented core UI sections Improved code organization and maintainabilityReached ~50% completion of admin.tsx The goal is to finish the remaining functionality tomorrow and start connecting the admin tools to the backend. Slow progress is still progress. Building Synaptix one commit at a time. 💻#buildinpublic #reactnative #expo #typescript #mobileapp #devlog #synaptix"}, {"post_id": 12565, "ts": "2026-06-20T14:56:10Z", "hours": 0.5447, "text": "DAY 1 (SYNAPTIX MOBILE APP) this is the mobile app which i have started working on. basically i have a complete picture of the app in my mind and just started to code. made the logo and other assets today and currently working on its foundation. About the App…………… Synaptix is a community-driven knowledge hub — upload your notes, download what others share, join study groups, and grow together. One app, all learners. What’s Inside (everything that i’ve thought of) Everything a student actually needs 📚Study LibraryReal-time feed of all public documents powered by Firestore live listeners. Filter by Notes, Books, or Papers. Search by title or subject. Bookmark anything for later — synced to the cloud. 💬Student Corner–Join or create subject-based study groups with real-time chat. Password-protect your group for private circles. Members get notified when new messages arrive. ⬆️Upload & Earn–Upload your notes, books, or research papers straight from your phone to Cloudinary’s CDN. Earn 3 coins per upload and 2 more every time someone gives you a 5-star rating. ⭐Star Ratings–Rate any document from 1–5 stars. Each user’s rating is stored individually in a Firestore subcollection — scores are honest and per-user, never gamed. 🔒Password-Protected Files–Lock files and groups with a password. All passwords are SHA-256 hashed with salt before storage — not even the developer can see them. Verification compares hashes, never plain text. 🧑💼Profile & Notifications–Edit your name, bio, and profile photo. Track your uploads, joined groups, and bookmarks — all stats refresh on screen focus so they’re always up to date. currently i am planning to use cludinary service for file storage and transfer because it is FREE. if you guys have any other suggestions or better alternatives please tell."}]...
|
Title: Synaptix by @Aniket | Stardance
Devlogs:
D Title: Synaptix by @Aniket | Stardance
Devlogs:
DAY 1 (SYNAPTIX MOBILE APP) this is the mobile app which i have started working on. basically i have a complete picture of the app in my mind and just started to code. made the logo and other assets today and currently working on its foundation. About the App…………… Synaptix is a community-driven knowledge hub — upload your notes, download what others share, join study groups, and grow together. One app, all learners. What’s Inside (everything that i’ve thought of) Everything a student actually needs 📚Study LibraryReal-time feed of all public documents powered by Firestore live listeners. Filter by Notes, Books, or Papers. Search by title or subject. Bookmark anything for later — synced to the cloud. 💬Student Corner–Join or create subject-based study groups with real-time chat. Password-protect your group for private circles. Members get notified when new messages arrive. ⬆️Upload & Earn–Upload your notes, books, or research papers straight from your phone to Cloudinary’s CDN. Earn 3 coins per upload and 2 more every time someone gives you a 5-star rating. ⭐Star Ratings–Rate any document from 1–5 stars. Each user’s rating is stored individually in a Firestore subcollection — scores are honest and per-user, never gamed. 🔒Password-Protected Files–Lock files and groups with a password. All passwords are SHA-256 hashed with salt before storage — not even the developer can see them. Verification compares hashes, never plain text. 🧑💼Profile & Notifications–Edit your name, bio, and profile photo. Track your uploads, joined groups, and bookmarks — all stats refresh on screen focus so they’re always up to date. currently i am planning to use cludinary service for file storage and transfer because it is FREE. if you guys have any other suggestions or better alternatives please tell.
Synaptix Devlog – Day 2 🚀 Today I worked on the app/admin.tsx file and completed roughly 50% of it. Most of the session was focused on building the admin interface, organizing components, and refining the overall structure for future features. ✅ Progress:Continued development of the admin panel Implemented core UI sections Improved code organization and maintainabilityReached ~50% completion of admin.tsx The goal is to finish the remaining functionality tomorrow and start connecting the admin tools to the backend. Slow progress is still progress. Building Synaptix one commit at a time. 💻#buildinpublic #reactnative #expo #typescript #mobileapp #devlog #synaptix
Synaptix Devlog — Day 3 🚀Spent another day deep inside app/admin.tsx and somehow turned what started as “just an admin page” into an entire control center for the app. Today’s work was mostly about wiring up the backend and making sure admins can actually manage the platform instead of just looking at stats. ✅ Added data loading for: Platform statistics Documents Users Study groups Workspaces Announcements App settings ✅ Added error handling and debugging alerts for failed Firestore requests ✅ Built admin access verification Loading state while permissions are checked Access denied screen for non-admin users UID display to make debugging easier Firestore/admin setup instructions directly in-app ✅ Implemented document moderation tools Delete documents Toggle document visibility Edit document metadata Save updates instantly ✅ Implemented user management tools Ban / Unban users Delete users Set custom coin balances Global coin airdrops to every user One thing I’m learning while building Synaptix is that every feature creates three more features you didn’t know you needed. “Delete a document” sounds simple until you realize you need confirmations, state updates, Firestore actions, error handling, loading states, and a way to recover when things go wrong. The admin panel is finally starting to feel like a real dashboard instead of a collection of buttons. Still a lot left to build, but Synaptix is slowly becoming the platform I imagined when I first started sketching the idea. 📚 Share notes 👥 Join study groups 🪙 Earn coins 🛠️ Manage the entire platform Day 3 complete.Back to fighting TypeScript tomorrow. #buildinpublic #reactnative #typescript #firebase #expo #mobileapp #synaptix #100DaysOfCode
🚀 Devlog #4 — With Great Power Comes Great Admin Privileges Today’s objective was simple: Build an Admin Panel that actually feels like the control room of Synaptix. After hours of React Native, TypeScript, and a few “why isn’t this state updating?” moments, the Admin Panel finally feels like a proper production-grade dashboard. 🎛️ Admin Dashboard Overhaul The admin experience got a complete redesign. Added: Live statistics dashboard 📊 Tab-based navigation 🗂️ Quick Action shortcuts ⚡ Maintenance Mode indicator 🔧 Pull-to-refresh support 🔄 Cleaner and more responsive UI ✨ The goal was simple: Every important admin action should be only a couple of taps away. 📄 Document Management Admins can now: Search documents instantly 🔍 Edit document details ✏️ Toggle Public / Private visibility 🌍 Delete documents 🗑️ Monitor downloads and uploads 📈 No more opening Firebase just to hide a PDF. 👥 User Management The moderation system received a huge upgrade. Admins can now: Search users 🔍 Modify coin balances 🪙 Ban / Unban users 🚫 Delete accounts 🗑️ View uploads and joined groups 📊 Safe to say… The Admin account is now the final boss. 💬 Workspace & Group Controls Community management is much easier now. Admins can manage: 🏢 Workspaces 👥 Groups Everything from one dashboard. No Firebase archaeology required. 📢 Announcement Center Probably my favorite feature from today’s session. Admins can now: Post announcements 📝 Pin important notices 📌 Delete outdated announcements 🗑️ Use visual badges for different announcement types 🏷️ Basically… The “Attention everyone!” button finally exists. 🎨 UI Polish Spent way more time than expected polishing the experience. Improvements include: Better spacing Cleaner cards Status badges Color-coded actions Improved layouts Smoother interactions Users might never consciously notice these details… But they’ll definitely feel them. 💭 Developer Thoughts Today wasn’t about flashy features. It was about building the invisible infrastructure that keeps everything manageable once hundreds (hopefully thousands 👀) of users start using Synaptix. Every button I added today is one less reason for Future Me to open Firebase at 2:00 AM . Future Me is very thankful. 📈 Progress Synaptix Admin Panel Progress ███████░░░░ 70% Synaptix is slowly transforming from “a project I built” into “a platform I genuinely want people to use.” And honestly… That’s a pretty awesome feeling. See you in Devlog #5 🚀
#Devlog 5 not gonna say a productive day but finally compleated with the admin panel and started working on in-app currency!!!
🚀 Devlog #6 — Coins, Coins Everywhere Today’s mission? Give Synaptix its own little economy. Because what’s a platform without a currency that makes your brain go “ooh shiny” every time the number goes up? 🪙 Welcome to the Coin Centre Built an entirely new Coin Centre where users can manage everything related to coins. Features include: 💰 Live coin balance 🎁 Daily bonus 📺 Rewarded Ads 💳 Coin Shop 📋 Transaction History ⚡ Clean tab navigation Basically… one place for all things shiny. 🎁 Daily Bonus Added a daily reward system. Users can now: Claim +5 coins every day Get blocked from claiming twice (nice try 😏) Come back tomorrow for another free reward Tiny feature. Massive dopamine. 📺 Rewarded Ads Integrated Rewarded AdMob Ads . Watch a short ad… Get free coins. No ads available? The app now explains what’s happening instead of staring awkwardly into your soul. 💳 Coin Shop Started building the future coin store. Added multiple packs: 🪙 Starter 💰 Popular 💎 Value 👑 Pro Payments aren’t live yet (Google Play wants its paperwork first 😒), but the entire flow is ready to go. 📋 Coin History Every coin now leaves a footprint. Users can see exactly where their coins came from and where they disappeared to. No more “Wait… where did my coins go?” 💭 Dev Thoughts Today wasn’t about adding another fancy screen. It was about making Synaptix feel more alive. Uploading notes, watching ads, collecting rewards… everything now feeds into a proper reward system. And honestly… Seeing my own app slowly turn into something that feels like a real product is a pretty cool feeling. 📈 Progress of Economy integration ██████░░░░ 50% Still a long road ahead... But every commit makes Synaptix feel a little less like "just another project" and a little more like something people might actually use every day. See you in **Devlog #7** 🚀
just added some firestore rules and finalized the build
Ships:
Project: StudyHub — Peer-to-Peer Study Material Sharing App StudyHub addresses a real and relatable problem — study material at the college level is scattered across WhatsApp groups, expiring Drive links, and random Telegram channels. The app brings everything into one searchable, community-driven library where students earn coins by uploading and spend them to download, which neatly solves the cold-start problem without relying on pure altruism. Effort is clearly demonstrated across 11 major versions, 7 EAS build attempts before a clean APK, 23 third-party dependencies audited and removed from a broken scaffold, and 8 critical bugs fixed in a single audit session. The entire journey — including what went wrong and exactly why — is documented honestly. Approximately 3,000 lines of TypeScript were written across screens, services, and contexts, with four AdMob ad unit types integrated and a full Firestore coin transaction audit trail implemented. Three meaningful Quality of Life improvements were made: Stats refresh accuracy — Home screen stats (uploads, groups joined, bookmarks) were fetched once on mount and went stale immediately after any user action. Replacing useEffect with useFocusEffect means counts re-fetch every time the screen comes into focus, so what the user sees always reflects what they just did. Member count race condition fixed — When two users tapped “Join Group” simultaneously, both reads returned the same count and one increment was silently lost. Wrapping joinGroup() and leaveGroup() in Firestore runTransaction() makes the read-modify-write atomic, so the count can never drift, go negative, or miss an update regardless of concurrency. Null-safe auth context eliminates the LoginScreen crash — The original build crashed in production with a TypeError at LoginScreen@1:2447207, traced via adb logcat to a web-only Firebase method (signInWithPopup) being called in a native Android context. The fix replaced it with the correct native Google Sign-In SDK and made login.tsx null-safe throughout — the context is read first, every value accessed with optional chaining, and each handler guards against null before calling — so the screen can never reach a render-time crash due to a timing issue at startup. All three improvements target reliability for real users, not cosmetic polish, which is exactly the right place to spend effort before a public release....
|
1793303518.9874244
|
1793389918.9874244
|
|
22807
|
Context Capsule by @DevaanshPathak | Stardance
|
DevaanshPathak
|
1
|
4.3
|
30
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-21T05:40:10Z", "hours": 4.0, "multiplier": 7.39, "payout": 30, "blessing": "neutral", "text": "I built Context Capsule. Context Capsule cuts the “share what I’m looking at with an AI” routine from a 5-6 step manual dance down to one popup click. When you’re debugging, researching, or working with an AI assistant, you constantly need to hand it context: which page you were on, what part of it matters, plus whatever you’d already copied. Right now that means selecting text, copying it, switching to your chat window, pasting it, going back to grab the URL, and then cleaning everything into a readable shape. If you accidentally copy something else before you paste, the original context is gone and you have to redo the whole thing. Context Capsule captures the active Chromium page URL, title, selected text, and a clipboard fallback, formats it as markdown, copies it to your clipboard, and keeps a small local SQLite history. Quality-of-Life Improvements: One popup button replaces the entire copy -> switch -> format -> paste routine. Capture happens without leaving the page. Automatic clean formatting. Every capture comes out as a consistent markdown block with source link, title, and timestamp. A local history survives clipboard overwrites. If you copy something else before pasting, the capture is still one click from being back on your clipboard. Popup capture, visible status, and an install doctor make the demo path less fragile.", "repo": "https://github.com/devaanshpathak/context-capsule", "demo": "https://github.com/DevaanshPathak/context-capsule/releases/tag/v1.0.0"}]...
|
[{"post_id": 14598, "ts": "202 [{"post_id": 14598, "ts": "2026-06-23T19:21:43Z", "hours": 0.3011, "text": "Finished building context capsule, compiled the chrome extension into a crx file and put it in the GitHub releases as well."}, {"post_id": 12939, "ts": "2026-06-21T05:37:39Z", "hours": 1.4378, "text": "Final Entry: v1.0 Development Complete Development on Context Capsule v1.0 is finished. The final v1.0 build delivers that core flow: select text on a Chromium page, open the extension popup, click Capture Current Page , and paste a clean markdown block with the page title, URL, timestamp, and selected text. If no text is selected, Context Capsule uses the current clipboard as a fallback so the capture still works.The browser extension stays intentionally thin. It collects page context and talks to the local Python host through Chrome Native Messaging. Python owns the durable logic: formatting, clipboard writes, SQLite history, capsules, exports, diagnostics, and install registration. What Shipped Popup-first capture flow with no browser keyboard shortcut conflicts. Markdown, Compact, and Prompt output presets. Prompt templates for summarize, debug, explain, and notes workflows. Capture modes for smart selection, selection only, clipboard, page metadata, visible text, and readable text. Local SQLite history with re-copy, pin, delete, clear history, search, filters, tags, and projects. Multi-source capsules for collecting several captures into one AI-ready prompt. Export to Markdown or JSON for visible history, all history, or the active capsule. Diagnostics panel for recent host events and errors. First-run onboarding, demo prompt action, install guide button, and improved demo page. Cross-platform native host registration through install.py for Windows, macOS, and Linux. Release install guide in docs/install.md . Unit tests for core host, formatting, history, capsule, export, diagnostics, and native messaging framing. Branded Chromium extension icons. For now, the core product is complete: Context Capsule turns a multi-step context-sharing routine into one popup click, keeps a recoverable local history, and produces clean markdown ready for an AI chat."}, {"post_id": 12690, "ts": "2026-06-20T18:44:35Z", "hours": 2.1436, "text": "Built the following in my tool Context-Capsule: Multi-Source Capsules Use the popup’s Capsule section to collect multiple captures before pasting into an AI chat: Start : creates a new active capsule. Append Page : captures the current page and adds it to the active capsule. Copy : copies all capsule items as one combined markdown prompt. Clear : removes the active capsule. Settings The extension options page stores browser-side defaults in chrome.storage.local : default capture mode default format preset default prompt template popup history row count timestamp style auto-pin captures that use clipboard fallback Projects and Tags Use the popup Project and Tag fields before capturing. Labels are stored with history entries and capsule items, shown in entry metadata, and searchable through the project/tag filter. Export The popup Export controls copy generated export text to the clipboard: Visible : exports the currently visible filtered history rows. All : exports all saved history rows. Capsule : exports the active multi-source capsule. Format can be Markdown or JSON. Diagnostics The host stores a capped local diagnostics log for recent captures, exports, capsule actions, and errors. The popup Diagnostics section shows the latest entries so native messaging and clipboard failures are easier to debug. Onboarding The popup shows a first-run Quick Start card until dismissed. It links to the localhost demo page and reminds users about the capture/history hotkeys and doctor command. Demo Prompt The popup Demo Prompt button copies a polished prompt using the active capsule when one exists, otherwise the latest three captures. This is designed for quick hackathon demos and judge walkthroughs. Demo Page Serve demo.html through Python’s built-in local server for a controlled manual test page with selectable sample text and checklist prompts: python -m http.server 8765"}, {"post_id": 12365, "ts": "2026-06-20T05:34:43Z", "hours": 0.5161, "text": "Hey Guys, I just started a new project Context Capsule. Context Capsule cuts the “share what I’m looking at with an AI” routine from a 5-6 step manual dance down to a single hotkey. When you’re debugging, researching, or working with an AI assistant, you constantly need to hand it context: which page you were on, what part of it matters, plus whatever you’d already copied. Right now that means selecting text, copying it, switching to your chat window, pasting it, going back to grab the URL, and then cleaning everything into a readable shape. If you accidentally copy something else before you paste, the original context is gone and you have to redo the whole thing. Context Capsule captures the active Chromium page URL, title, selected text, and a clipboard fallback, formats it as markdown, copies it to your clipboard, and keeps a small local SQLite history."}]...
|
Title: Context Capsule by @DevaanshPathak | Starda Title: Context Capsule by @DevaanshPathak | Stardance
Devlogs:
Hey Guys, I just started a new project Context Capsule. Context Capsule cuts the “share what I’m looking at with an AI” routine from a 5-6 step manual dance down to a single hotkey. When you’re debugging, researching, or working with an AI assistant, you constantly need to hand it context: which page you were on, what part of it matters, plus whatever you’d already copied. Right now that means selecting text, copying it, switching to your chat window, pasting it, going back to grab the URL, and then cleaning everything into a readable shape. If you accidentally copy something else before you paste, the original context is gone and you have to redo the whole thing. Context Capsule captures the active Chromium page URL, title, selected text, and a clipboard fallback, formats it as markdown, copies it to your clipboard, and keeps a small local SQLite history.
Built the following in my tool Context-Capsule: Multi-Source Capsules Use the popup’s Capsule section to collect multiple captures before pasting into an AI chat: Start : creates a new active capsule. Append Page : captures the current page and adds it to the active capsule. Copy : copies all capsule items as one combined markdown prompt. Clear : removes the active capsule. Settings The extension options page stores browser-side defaults in chrome.storage.local : default capture mode default format preset default prompt template popup history row count timestamp style auto-pin captures that use clipboard fallback Projects and Tags Use the popup Project and Tag fields before capturing. Labels are stored with history entries and capsule items, shown in entry metadata, and searchable through the project/tag filter. Export The popup Export controls copy generated export text to the clipboard: Visible : exports the currently visible filtered history rows. All : exports all saved history rows. Capsule : exports the active multi-source capsule. Format can be Markdown or JSON. Diagnostics The host stores a capped local diagnostics log for recent captures, exports, capsule actions, and errors. The popup Diagnostics section shows the latest entries so native messaging and clipboard failures are easier to debug. Onboarding The popup shows a first-run Quick Start card until dismissed. It links to the localhost demo page and reminds users about the capture/history hotkeys and doctor command. Demo Prompt The popup Demo Prompt button copies a polished prompt using the active capsule when one exists, otherwise the latest three captures. This is designed for quick hackathon demos and judge walkthroughs. Demo Page Serve demo.html through Python’s built-in local server for a controlled manual test page with selectable sample text and checklist prompts: python -m http.server 8765
Final Entry: v1.0 Development Complete Development on Context Capsule v1.0 is finished. The final v1.0 build delivers that core flow: select text on a Chromium page, open the extension popup, click Capture Current Page , and paste a clean markdown block with the page title, URL, timestamp, and selected text. If no text is selected, Context Capsule uses the current clipboard as a fallback so the capture still works.The browser extension stays intentionally thin. It collects page context and talks to the local Python host through Chrome Native Messaging. Python owns the durable logic: formatting, clipboard writes, SQLite history, capsules, exports, diagnostics, and install registration. What Shipped Popup-first capture flow with no browser keyboard shortcut conflicts. Markdown, Compact, and Prompt output presets. Prompt templates for summarize, debug, explain, and notes workflows. Capture modes for smart selection, selection only, clipboard, page metadata, visible text, and readable text. Local SQLite history with re-copy, pin, delete, clear history, search, filters, tags, and projects. Multi-source capsules for collecting several captures into one AI-ready prompt. Export to Markdown or JSON for visible history, all history, or the active capsule. Diagnostics panel for recent host events and errors. First-run onboarding, demo prompt action, install guide button, and improved demo page. Cross-platform native host registration through install.py for Windows, macOS, and Linux. Release install guide in docs/install.md . Unit tests for core host, formatting, history, capsule, export, diagnostics, and native messaging framing. Branded Chromium extension icons. For now, the core product is complete: Context Capsule turns a multi-step context-sharing routine into one popup click, keeps a recoverable local history, and produces clean markdown ready for an AI chat.
Finished building context capsule, compiled the chrome extension into a crx file and put it in the GitHub releases as well.
Ships:
I built Context Capsule. Context Capsule cuts the “share what I’m looking at with an AI” routine from a 5-6 step manual dance down to one popup click. When you’re debugging, researching, or working with an AI assistant, you constantly need to hand it context: which page you were on, what part of it matters, plus whatever you’d already copied. Right now that means selecting text, copying it, switching to your chat window, pasting it, going back to grab the URL, and then cleaning everything into a readable shape. If you accidentally copy something else before you paste, the original context is gone and you have to redo the whole thing. Context Capsule captures the active Chromium page URL, title, selected text, and a clipboard fallback, formats it as markdown, copies it to your clipboard, and keeps a small local SQLite history. Quality-of-Life Improvements: One popup button replaces the entire copy -> switch -> format -> paste routine. Capture happens without leaving the page. Automatic clean formatting. Every capture comes out as a consistent markdown block with source link, title, and timestamp. A local history survives clipboard overwrites. If you copy something else before pasting, the capture is still one click from being back on your clipboard. Popup capture, visible status, and an install doctor make the demo path less fragile....
|
1792878590.7185051
|
1793742590.7185051
|
|
22815
|
CAP FlightLog by @hjmattes | Stardance
|
hjmattes
|
1
|
9.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-30T04:14:29Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is the final edit. The google drive works, the entire flight log works so far, and overall I am happy with the output. It looks nice, functions and has API. Aside from this, all that’s left is that I would like to open another project to build a website to demo and explain and provide documentation. I had a great time building this and hope it finds a purpose somewhere.", "repo": "https://github.com/hjamttes/CAP-FlightBook", "demo": "https://hjamttes.github.io/CAP-FlightBook/"}]...
|
[{"post_id": 18949, "ts": "202 [{"post_id": 18949, "ts": "2026-06-30T03:59:21Z", "hours": 0.2994, "text": "Devlog: CAP Flight Logbook — v3 → v3.6 The headline feature is Google Drive backup/sync , but there are a few smaller fixes riding along with it. 1. Google Sign-In + Drive backup (the big one) v3 had no cloud storage at all — everything lived in localStorage under the cap_v3 key and that was it. v3.6 adds the Google API script tag to the page head and roughly 400 new lines of JS implementing a full backup pipeline: Sign-in flow : tries Google One Tap first, falls back to an explicit popup-based OAuth token request if One Tap is suppressed by the browser. Also auto-restores a previous session silently on load if the user had signed in before. Drive folder/file management : creates (or finds) a CAP Flight Logbook folder in the user’s Drive, and creates/updates a cap_logbook_backup.json file inside it. Pull-then-push merge on first sign-in : treats Drive as the source of truth, merges in any local-only flight entries that were logged offline, then writes the merged result back. It reports how many entries were loaded, kept, or dropped. Manual restore : a “Restore from Drive” button that fully overwrites local state with whatever’s in Drive (with a confirm dialog warning it’s destructive). Sign-out : clears all the Drive-related localStorage keys and the in-memory token/user. UI feedback : a dismissible colored banner system ( showDriveBanner / hideDriveBanner ) for sync errors, popup-blocked warnings, and merge summaries; plus a small sync-status indicator both in the Settings card and now in the top bar (shows a green checkmark with the user’s first name once signed in). save() was changed from a one-line localStorage write to also trigger driveBackup() whenever a Google token is present — so every save silently pushes to Drive in the background. 2. Settings page reorganized The old single “Data” card is now split into a “Google Drive backup” card (sign-in button, account info, restore button) followed by a separate “Local data” card for whatever local-only settings used to live there. This is purely a layout consequence of feature #1, but worth noting since any custom styling targeting the old card title would need updating. 3. Airport search fallback rewritten apRenderFallback() — the function that runs when the OpenAIP API is unreachable or no API key is set — was reworked: v3 shipped a hardcoded ~120-airport fallback list ( AIRPORTS_FB ) and did fuzzy scoring/ranking against it locally so users without a working API key still got reasonable autocomplete results. v3.6 removes that entire list and instead just shows a hint message (different wording depending on whether it’s a network error vs. missing API key) plus a “manual entry” option to add the typed ICAO code directly. This is a meaningful behavior change, not just a refactor: v3.6 users without an API key (or with OpenAIP down) lose airport name/city autocomplete entirely and have to type/know the ICAO code themselves. It does shave a few hundred lines of static data out of the bundle, though. 4. Minor refactors rHeroUnit(c) was extracted into its own function instead of being an inline template literal — same output, just cleaner. The Settings “Data” card title and a couple of inline conditionals were tidied up to support the new sync-status helper rSyncStatus(ctx) , which now serves both the top bar and the settings card from one function."}, {"post_id": 17410, "ts": "2026-06-28T05:35:10Z", "hours": 4.5589, "text": "#What’s New? In terms of new, I have added the requirements page, I fixed the printer button, I added the breakdown of which hours will be next, I made things look better on mobile for easier use, I even added in the API Key that allows cadets to register their own personal key to pull almost any airport in the U.S. and it works, and finally I added an issue. #AN ISSUE?!?! So flashback to the last devlog, I said that I wanted to implement google drive integration. The good news is I figured out how to do that and I believe that it shouldn’t need a backend, unfortunately I don’t know this for sure and it’s still a work in progress, my next log (after this one) will hopefully be a positive update on that. As for the website idea for documentation and so on, I have decided to halt that and either make it a separate project or wait until I have this one almost completely done. #And after that? Well, hopefully after these next few updates, all will be done and I’ll be able to ship this project (after some major updates to the github repo readme file of course) and finally be done. The goal is to ship by the end of the week, I really want the sticker."}, {"post_id": 13911, "ts": "2026-06-22T20:16:28Z", "hours": 1.9225, "text": "Adding Features I have begun adding features and putting data where it needs to go. I added a settings tab which includes Cadet Information such as Name, Grade/Rank, and unit. It also has the import and export features, and includes the ability to erase all data from the site. I added the print button here as well, but there are some minor issues with that button in particular, it prints the wrong page. I plan to address this with my next edit. Next, there is now separation between the logbook and dashboard tabs, the dashboard tab greets the cadet by name and grade as well as has their unit listed. It shows some brief information at a glance: Hours, a less-detailed breakdown of hours, average flight length, and the most recent logs. I have also added the acronym (CAP) into the app. This shows in the corner where the app says CAP with a little plane, and the title says “CAP Flight Logbook” now instead of just, “Flight Logbook.” What’s next? My next goal is to add in a requirements page that displays everything from practical exam (the one where you fly the plane) to whether or not your medical grade is registered. I want to fix the printer button, and have a breakdown of hours left vs what they have and the percentage of the way the cadet has on his license. The final two goals for this next edit are: Making things look better, and adding in the API key function to fetch all airports in the U.S. What’s after that? After those next few edits, I want to build a decent looking webpage to provide basic information on the project, how to implement it properly into the unit, and some documentation. I would also like to try and add google drive integration because CAP cadets have google accounts provided by the government, this would allow to sync the backups to google drive instead of doing manual backups and would negate the need for a vps to host this app’s database and authentication system."}, {"post_id": 12354, "ts": "2026-06-20T04:53:31Z", "hours": 2.6747, "text": "This includes two iterations because I originally started it and before making my devlog, I started the second piece. The first iteration was just to test browser storage and missed 99% of features, it only included the date, aircraft tag, and hours, it was as boring as the website could look. The second version is that same idea but with an actual UI, color and design, it also featured the hour breakdown tool and allowed more input options on the log. It featured a json export and import with a simple format shown below in a photo, and finally included the print button also shown below in the photo. At this point, I was just focused on the logbook and haven’t added any of the fancy features or the designs that make it look like it was built for CAP. All of that will hopefully be in the next edit."}]...
|
Title: CAP FlightLog by @hjmattes | Stardance
Dev Title: CAP FlightLog by @hjmattes | Stardance
Devlogs:
This includes two iterations because I originally started it and before making my devlog, I started the second piece. The first iteration was just to test browser storage and missed 99% of features, it only included the date, aircraft tag, and hours, it was as boring as the website could look. The second version is that same idea but with an actual UI, color and design, it also featured the hour breakdown tool and allowed more input options on the log. It featured a json export and import with a simple format shown below in a photo, and finally included the print button also shown below in the photo. At this point, I was just focused on the logbook and haven’t added any of the fancy features or the designs that make it look like it was built for CAP. All of that will hopefully be in the next edit.
Adding Features I have begun adding features and putting data where it needs to go. I added a settings tab which includes Cadet Information such as Name, Grade/Rank, and unit. It also has the import and export features, and includes the ability to erase all data from the site. I added the print button here as well, but there are some minor issues with that button in particular, it prints the wrong page. I plan to address this with my next edit. Next, there is now separation between the logbook and dashboard tabs, the dashboard tab greets the cadet by name and grade as well as has their unit listed. It shows some brief information at a glance: Hours, a less-detailed breakdown of hours, average flight length, and the most recent logs. I have also added the acronym (CAP) into the app. This shows in the corner where the app says CAP with a little plane, and the title says “CAP Flight Logbook” now instead of just, “Flight Logbook.” What’s next? My next goal is to add in a requirements page that displays everything from practical exam (the one where you fly the plane) to whether or not your medical grade is registered. I want to fix the printer button, and have a breakdown of hours left vs what they have and the percentage of the way the cadet has on his license. The final two goals for this next edit are: Making things look better, and adding in the API key function to fetch all airports in the U.S. What’s after that? After those next few edits, I want to build a decent looking webpage to provide basic information on the project, how to implement it properly into the unit, and some documentation. I would also like to try and add google drive integration because CAP cadets have google accounts provided by the government, this would allow to sync the backups to google drive instead of doing manual backups and would negate the need for a vps to host this app’s database and authentication system.
#What’s New? In terms of new, I have added the requirements page, I fixed the printer button, I added the breakdown of which hours will be next, I made things look better on mobile for easier use, I even added in the API Key that allows cadets to register their own personal key to pull almost any airport in the U.S. and it works, and finally I added an issue. #AN ISSUE?!?! So flashback to the last devlog, I said that I wanted to implement google drive integration. The good news is I figured out how to do that and I believe that it shouldn’t need a backend, unfortunately I don’t know this for sure and it’s still a work in progress, my next log (after this one) will hopefully be a positive update on that. As for the website idea for documentation and so on, I have decided to halt that and either make it a separate project or wait until I have this one almost completely done. #And after that? Well, hopefully after these next few updates, all will be done and I’ll be able to ship this project (after some major updates to the github repo readme file of course) and finally be done. The goal is to ship by the end of the week, I really want the sticker.
Devlog: CAP Flight Logbook — v3 → v3.6 The headline feature is Google Drive backup/sync , but there are a few smaller fixes riding along with it. 1. Google Sign-In + Drive backup (the big one) v3 had no cloud storage at all — everything lived in localStorage under the cap_v3 key and that was it. v3.6 adds the Google API script tag to the page head and roughly 400 new lines of JS implementing a full backup pipeline: Sign-in flow : tries Google One Tap first, falls back to an explicit popup-based OAuth token request if One Tap is suppressed by the browser. Also auto-restores a previous session silently on load if the user had signed in before. Drive folder/file management : creates (or finds) a CAP Flight Logbook folder in the user’s Drive, and creates/updates a cap_logbook_backup.json file inside it. Pull-then-push merge on first sign-in : treats Drive as the source of truth, merges in any local-only flight entries that were logged offline, then writes the merged result back. It reports how many entries were loaded, kept, or dropped. Manual restore : a “Restore from Drive” button that fully overwrites local state with whatever’s in Drive (with a confirm dialog warning it’s destructive). Sign-out : clears all the Drive-related localStorage keys and the in-memory token/user. UI feedback : a dismissible colored banner system ( showDriveBanner / hideDriveBanner ) for sync errors, popup-blocked warnings, and merge summaries; plus a small sync-status indicator both in the Settings card and now in the top bar (shows a green checkmark with the user’s first name once signed in). save() was changed from a one-line localStorage write to also trigger driveBackup() whenever a Google token is present — so every save silently pushes to Drive in the background. 2. Settings page reorganized The old single “Data” card is now split into a “Google Drive backup” card (sign-in button, account info, restore button) followed by a separate “Local data” card for whatever local-only settings used to live there. This is purely a layout consequence of feature #1, but worth noting since any custom styling targeting the old card title would need updating. 3. Airport search fallback rewritten apRenderFallback() — the function that runs when the OpenAIP API is unreachable or no API key is set — was reworked: v3 shipped a hardcoded ~120-airport fallback list ( AIRPORTS_FB ) and did fuzzy scoring/ranking against it locally so users without a working API key still got reasonable autocomplete results. v3.6 removes that entire list and instead just shows a hint message (different wording depending on whether it’s a network error vs. missing API key) plus a “manual entry” option to add the typed ICAO code directly. This is a meaningful behavior change, not just a refactor: v3.6 users without an API key (or with OpenAIP down) lose airport name/city autocomplete entirely and have to type/know the ICAO code themselves. It does shave a few hundred lines of static data out of the bundle, though. 4. Minor refactors rHeroUnit(c) was extracted into its own function instead of being an inline template literal — same output, just cleaner. The Settings “Data” card title and a couple of inline conditionals were tidied up to support the new sync-status helper rSyncStatus(ctx) , which now serves both the top bar and the settings card from one function.
Ships:
This is the final edit. The google drive works, the entire flight log works so far, and overall I am happy with the output. It looks nice, functions and has API. Aside from this, all that’s left is that I would like to open another project to build a website to demo and explain and provide documentation. I had a great time building this and hope it finds a purpose somewhere....
|
1792878686.2104259
|
1793742686.2104259
|
|
22834
|
Smart Switch by @Brayden_Devs | Stardance
|
Brayden_Devs
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-22T04:38:21Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple Govee light controller that allows you to turn on/off 3 different lights as well as switch brightness from 30% (Dim) to 100% (High) with a click of a button. This is an alternative to buying a Govee Programmable button and is a simple fun project. This took about 3 Hours in total and was fun to learn how to integrate Govee Developer APIs.", "repo": "https://github.com/ZECODER2022/Smart-Switch", "demo": ""}]...
|
[{"post_id": 13501, "ts": "202 [{"post_id": 13501, "ts": "2026-06-22T02:57:53Z", "hours": 0.6, "text": "Made a working prototype, updated firmware, and tested working!"}, {"post_id": 12869, "ts": "2026-06-21T02:28:29Z", "hours": 0.55, "text": "I created the firmware for my project the smart switch."}]...
|
Title: Smart Switch by @Brayden_Devs | Stardance
Title: Smart Switch by @Brayden_Devs | Stardance
Devlogs:
I created the firmware for my project the smart switch.
Made a working prototype, updated firmware, and tested working!
Ships:
I made a simple Govee light controller that allows you to turn on/off 3 different lights as well as switch brightness from 30% (Dim) to 100% (High) with a click of a button. This is an alternative to buying a Govee Programmable button and is a simple fun project. This took about 3 Hours in total and was fun to learn how to integrate Govee Developer APIs....
|
1793256971.882402
|
1793343371.882402
|
|
22842
|
proOS by @ahnafiscool | Stardance
|
ahnafiscool
|
1
|
9.0
|
67
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-02T15:11:23Z", "hours": 9.0, "multiplier": 6.16, "payout": 67, "blessing": "neutral", "text": "So finally the project has come to and end, a simple looking site with all the useful webapps that you may or may not know. The hardest part was to settle on a design cuz there are lots of idea on my head but not all are to be implemented but I finally came to a conclusion and I think it looks great. Please feel free to leave me some webapp/site suggestion which I did not include. Also please do not confuse this with WebOS mission, the OS part is just a theme and not to make a functioning webOS. Thank you!", "repo": "https://github.com/AhnafPro/pro-OS", "demo": "https://proos.rf.gd/"}]...
|
[{"post_id": 39324, "ts": "202 [{"post_id": 39324, "ts": "2026-08-02T07:19:13Z", "hours": 2.5442, "text": "Finally the desktop is done, I recycled one of my old design and remade it. Inside the folders are lots of useful apps that can be used and the dock/taskbar contains simple tools like file converter, bg remover etc. This will be the final devlog for the project, hope y’all liked it. But if you think some web apps or even new folders are needed to be added, pls lemme know in the comments. DEMO: https://pro-os.staticdomains.app/"}, {"post_id": 31872, "ts": "2026-07-20T16:45:29Z", "hours": 5.1089, "text": "Made a simple looking lockscreen page and after surfing for a while I luckily found a good background image for the page. Also if you are wondering what font I used for the logo and clock, they are ‘Montserrat’ and ‘Big Shoulders’. So here are all the stuffs that were added: Clock, Date, Day etc. Environment info and device charge. Crypto and stock index. Trading related news."}, {"post_id": 26781, "ts": "2026-07-11T19:35:13Z", "hours": 1.4561, "text": "I have tried making multiple booting screen designs from various inspirations from real OS and came into conclusion with a simple design, and I even made a logo for the project, not sure if I should use it. Updates: Created a logo for the project Added loading loop on the bottom Added auto redirection to lock screen page after 5 seconds."}]...
|
Title: proOS by @ahnafiscool | Stardance
Devlogs: Title: proOS by @ahnafiscool | Stardance
Devlogs:
I have tried making multiple booting screen designs from various inspirations from real OS and came into conclusion with a simple design, and I even made a logo for the project, not sure if I should use it. Updates: Created a logo for the project Added loading loop on the bottom Added auto redirection to lock screen page after 5 seconds.
Made a simple looking lockscreen page and after surfing for a while I luckily found a good background image for the page. Also if you are wondering what font I used for the logo and clock, they are ‘Montserrat’ and ‘Big Shoulders’. So here are all the stuffs that were added: Clock, Date, Day etc. Environment info and device charge. Crypto and stock index. Trading related news.
Finally the desktop is done, I recycled one of my old design and remade it. Inside the folders are lots of useful apps that can be used and the dock/taskbar contains simple tools like file converter, bg remover etc. This will be the final devlog for the project, hope y’all liked it. But if you think some web apps or even new folders are needed to be added, pls lemme know in the comments. DEMO: https://pro-os.staticdomains.app/
Ships:
So finally the project has come to and end, a simple looking site with all the useful webapps that you may or may not know. The hardest part was to settle on a design cuz there are lots of idea on my head but not all are to be implemented but I finally came to a conclusion and I think it looks great. Please feel free to leave me some webapp/site suggestion which I did not include. Also please do not confuse this with WebOS mission, the OS part is just a theme and not to make a functioning webOS. Thank you!...
|
1793138267.233613
|
1793224667.233613
|
|
22856
|
Verstappen by @jphwb | Stardance
|
jphwb
|
1
|
1.0
|
7
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-22T06:50:13Z", "hours": 1.0, "multiplier": 4.78, "payout": 7, "blessing": "neutral", "text": "I made a slack bot called Verstappen and it just gives you info on Verstappen, it can tell a joke, say a quote from him and you can check his stats from every season he’s completed from 2015 to 2025. I used OpenF1 API to get all the info.", "repo": "https://github.com/jphwba/verstappen-slackbot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BC29MHNR1"}]...
|
[{"post_id": 13569, "ts": "202 [{"post_id": 13569, "ts": "2026-06-22T06:48:22Z", "hours": 0.5353, "text": "Finished the program and I added all the icons and details"}, {"post_id": 12415, "ts": "2026-06-20T08:11:27Z", "hours": 0.535, "text": "Using OpenF1 API when the user runs /verstappen-info it shows them info on Max Verstappen. when they run /verstappen-quote it shows them a random quote from a list of quotes said by verstappen."}, {"post_id": 12397, "ts": "2026-06-20T07:15:38Z", "hours": 0.3481, "text": "Made the basic code from the guide so it says a catfact, a joke and displays the help menu and ping."}]...
|
Title: Verstappen by @jphwb | Stardance
Devlogs:
Title: Verstappen by @jphwb | Stardance
Devlogs:
Made the basic code from the guide so it says a catfact, a joke and displays the help menu and ping.
Using OpenF1 API when the user runs /verstappen-info it shows them info on Max Verstappen. when they run /verstappen-quote it shows them a random quote from a list of quotes said by verstappen.
Finished the program and I added all the icons and details
Ships:
I made a slack bot called Verstappen and it just gives you info on Verstappen, it can tell a joke, say a quote from him and you can check his stats from every season he’s completed from 2015 to 2025. I used OpenF1 API to get all the info....
|
1793296223.9999647
|
1793382623.9999647
|
|
22871
|
Orbital Eye - ISS & Satellite Pass Predictor b Orbital Eye - ISS & Satellite Pass Predictor by @avishgoyal | Stardance...
|
avishgoyal
|
1
|
13.43
|
170
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-24T09:14:58Z", "hours": 9.0, "multiplier": 19.79, "payout": 170, "blessing": "neutral", "text": "Orbital Eye - Shipped. Five days ago this project was just supposed to be a simple ISS pass predictor. That’s it. I wanted to take better satellite photos and got annoyed at having to open 15 different tabs just to answer one question: “Can I actually see this thing tonight?” One website had pass times. Another had weather. Another had orbit visualization. Another had satellite information. Somehow I always ended up jumping between all of them. So naturally, instead of spending 5 minutes checking websites like a normal human being, I spent 5 days building an entire satellite tracking platform. Orbital Eye calculates upcoming satellite passes, estimates visibility using weather and sunlight data, provides live telemetry during active passes, and displays everything on a 3D globe. Along the way I learned far more about orbital mechanics than I ever expected to. I also learned that: Hidden whitespace characters can ruin your entire day. Globe.gl documentation occasionally feels like a scavenger hunt. A page load time of 50 seconds is generally considered “bad”. The bug is almost never where you think it is. My favorite feature ended up being the custom TLE system. You can paste the TLE of basically any satellite and Orbital Eye will immediately generate orbit predictions, calculate passes, and render it on the globe. The 3D globe itself was also way harder than expected. There were multiple points where the Earth rendered perfectly, the orbit calculations were correct, the backend was working, and the satellite simply refused to exist. Not broken. Not erroring. Just… gone. In the end, though, everything came together. The globe works. The satellites move. The passes are accurate. The performance no longer makes me question my life choices. And most importantly, I finally have a tool that tells me when to point my camera at the sky. Special thanks to lukewalsh11234, he was the only follower lol and seeing his follow it motivated me to do more since people were actually tracking the progress. GitHub: https://github.com/avishgoyal/orbital-eye Because staring at moving dots in space is cooler than it sounds.", "repo": "https://github.com/avishgoyal/orbital-eye", "demo": "https://avishgoyal.pythonanywhere.com/"}]...
|
[{"post_id": 15830, "ts": "202 [{"post_id": 15830, "ts": "2026-06-25T18:54:31Z", "hours": 2.6836, "text": "Devlog #7 Another Day to feel demotivated because your ship got rejected… there was another recommendation they made to me (following up from the fact they thought my project was AI but sure), that was to add new features that would make it more cool to use! Kinda agree tho it does need more QOL features. That is why after the Hide UI (which was also added because of this suggestion btw) I added 2 new features!!! Camera Lock: This button allows you to lock your camera to the satellite, and the camera just follows the satellite, its useful if you just want it to sit in the background or smthing or just dont want to rotate the globe constantly in-between a Pass to see the satellite angle. Notifications!!!: This button allows you to enable notifications and the web-app will remind you 2 minutes before a pass using the alert() function in JS. pretty simpleOff topic: for 1080p monitors or low-end setups, the first load might be very fiddly and maybe the orbit path or the satellite or something can break, reloading fixes this mostly. These features are really simple lol and I was planning on adding more but I think its enough for now, I plan to integrate E-mails so it can remind you through Email or smthing but that will take HOURS! anyways, this sums it up to a total of 3 features. I also FINALLY completed the readme, and yes I know I said I had exams but all the more reason to finish it right here and right now, because if I hadn’t done it now, then I would have kept thinking about it lol, it might have even hindered my exam performance (yes its that serious for me). Anyways, I completely deleted the entire readme which AI made, and I tried my best when writing it manually, I don;t know what you include in a readme because I havent made it before this but I tried my best, I also added a picture of a photo I took using orbital-eye!!!"}, {"post_id": 15569, "ts": "2026-06-25T09:59:23Z", "hours": 1.7486, "text": "Welp, My Ship got rejected, hahahahha, not rejected but there were some changes requested and they were entirely reasonable and actually I’m amazed how much the shipwrights actually care about the people who are making these project. The main reason was because my ENTIRE CSS was just AI slop, and I know that we all hate AI but trust me, CSS is the bane of my existence, even though it is now I had to manually revamp the entire CSS and it looks sooo muchhh better, Istg if this gets flagged as AI I might actually quit lol. Anyways, the second change they suggested was updating the README, which I havent done yet but I will do soon (my exams are in 2 days, I have to study lol) and I guess because I didnt commit until like 50% of the project they thought my entire project was AI or something? In my defence it was my first time using github codespaces and since the code was saved I thought it must have magically synced with my repo or smthing lol. Anyways, the reasons were completely valid and let me list out the changes I made: -Changed font from the generic typewriter to the Inter font, and sans-serif. -Made HUD Panels almost invisible (they were protruding too much and felt distracting, I wanted to make the Globe the visual centre of the site so yea). -Changed the Globe skin to blue marble, the NASA skin wasn’t very detailed it just had a higher resolution, the current one looks very good. -Added a background image URL so that there is a starry sky in the background not a plain black void. -Changed the top left HUD, did many changes, I found inspiration from stellarium, its basically a star tracking astrophotgraphy software, but its UI is like way too detail intensive, I took the transparent design philosophy from there and the rest I just fiddled with it until I liked it lol. -Changed the 100 accents of blues I used, to a single steel blue #5D88AA4D, I decreased the opacity for borders to around 30% ish. -I also reduced the size of the actually pass table to about 70% of its current size, it was wayyy too dominant on the UI, and I also added the accent colour there too. I completely removed green (except for the user dot). -I made the satellite path thickness less because it was tooo thick, it didn’t look like an orbit, so I made it thinner and also made the satellite sphere smaller as well from 8 : 5 to 5 : 4, I dont know the units I just turned the number smaller lol. -Next, I added a Hide UI button, the UI was very prominent on PC itself and on mobile it was just unbearable so I thought I should add a HIDE UI button so that users can focus on the globe (tho that’s not the point of this website but sure, it serves as a simulation too lol). I put it on the top right edge. On click, it just makes all the HUD elements transparent and set their pointer events to none so they can’t interact. That is basically it. I will be sure to completely remake the README I guess when I will get some time, right now, I gotta study."}, {"post_id": 14945, "ts": "2026-06-24T08:44:55Z", "hours": 1.1564, "text": "Devlog 5 - FOV Rings & Custom Satellites! Overview This session was mostly spent adding QOL updates. I made a section for custom TLE data so that you can just drop the TLE for ANY asset you want to track and the app will display it. I also added a ground station field-of-view (FOV) overlay so users can see the exact area of the Earth they can realistically observe from their specific location. What’s New! Added a ground station FOV ring with a ~1500 km visibility radius. Implemented accurate spherical projection for the FOV overlay. Added support for custom TLE injection. Created a new backend API endpoint for custom satellites. Enabled live orbit updates without needing full page reloads. Added pass predictions for custom satellites. Improved overlay rendering and stability. Fixed several major performance bottlenecks. Challenges Globe.gl’s built-in rings system turned out to be designed for animated ripple effects rather than static geometry, making it incredibly frustrating to work with. Spent a good chunk of time tracking down rendering bugs, massive performance drops, and objects annoyingly drawing right through the Earth. Page load times were atrocious—taking at least 50 seconds because my code organization sucked, causing the app to repeatedly load timescales and rerun complex calculations instead of doing them globally. Solutions Scrapped the built-in Globe.gl rings API entirely and custom-built the FOV ring myself using a canvas overlay and spherical geometry calculations. Implemented a mix of occlusion culling, render-loop optimization, and smarter canvas handling to fix the visual bugs and clipping issues. Moved repetitive calculations and timescale loading into global instances, which absolutely crushed the performance bottleneck. Page load times dropped from 50+ seconds down to a smooth 5-10 seconds! I am super proud of how the performance changes turned out (though they were mostly caused because of my stupidity). Also, this is going to be the final development blog for Orbital Eye because I’m finally preparing to ship it! This has somehow turned into a full satellite tracking platform with visibility forecasting, live telemetry, custom TLE support, and a 3D globe. There’s still a lot I want to add in the future, but for now I think it’s time for me to fix the last few little bugs and ship it!"}, {"post_id": 14230, "ts": "2026-06-23T07:40:43Z", "hours": 2.4186, "text": "Devlog 4 - 3D GLOBE!?! Overview ITS LIVE FOR DEMO!, avishgoyal.pythonanywhere.com This session was all about finally implementing the 3D globe for the Satellite Pass Predictor. The goal was to create an interactive Earth that users can rotate around while viewing satellites orbiting in real time, kind of like a mini Google Earth for satellite tracking. To make this work, I used Globe.gl for visualization and Skyfield on the backend to generate future orbital positions from TLE data. Instead of constantly requesting new coordinates from the server, the backend pre-calculates future positions and sends them to the client, which then smoothly animates the satellite between those points. What’s New! Added an interactive 3D Earth using Globe.gl. Implemented future trajectory generation using Skyfield and TLE data. Added a new Flask API endpoint for orbit predictions. Generated 2 hours of future satellite positions at 1-minute intervals. Added real-time satellite animation using interpolation. Implemented automatic trajectory refreshes every 2 hours. Added orbit path visualization around the Earth. Fixed International Date Line wrap-around issues. Improved rendering performance by reducing unnecessary updates. Fixed Celestrak parsing issues caused by hidden characters. Challenges The globe rendered perfectly, the backend returned valid coordinates, and the animation logic was running, yet the satellite simply refused to appear. There were no useful errors either, which made debugging much more painful. Whenever the satellite crossed ±180° longitude, the orbit path would suddenly draw giant lines across the globe, making the orbit look completely broken. Valid satellites occasionally weren’t being found despite existing in the TLE files. Performance became a problem because I was accidentally rebuilding parts of the globe every frame. Approach My first assumption was that the rendering system itself was broken. I experimented with custom Three.js objects, custom spheres, imported raw Three.js alongside Globe.gl, and tried multiple rendering approaches. When none of those worked, I traced the entire pipeline, checking API responses, coordinate generation, interpolation calculations, altitude scaling, and orbit path generation. For the orbit issue, I compared coordinate transitions between consecutive points and investigated what happened when satellites crossed specific regions of the globe. For performance issues, I profiled the update loop and monitored how often rendering updates were occurring. Solutions The rendering issue turned out to be much simpler than expected. I was fighting Globe.gl instead of using the tools it already provided. Once I switched to its built-in object plotting system, the satellite immediately appeared. The orbit path issue was caused by longitude wrap-around at the International Date Line. Adding logic to detect large longitude jumps and split orbit segments fixed the problem. The backend lookup issue was traced back to hidden non-breaking spaces (\\xa0) inside Celestrak TLE files. Sanitizing satellite names fixed the issue. Performance improved significantly after I stopped rebuilding globe geometry every frame and throttled rendering updates. Next Steps Add support for multiple satellites. Improve orbit path visualization. Add satellite labels and information overlays. Improve camera controls and globe interaction. Display upcoming passes directly on the globe. Continue optimizing animation performance. Overall, despite the suffering involved, this was one of the biggest milestones in the project so far. The globe is rendering, satellites are moving around the Earth, orbit paths are displaying correctly, and the project is finally starting to look like the thing I originally imagined instead of a collection of APIs and tables stitched together. See you in Devlog #5!"}, {"post_id": 13679, "ts": "2026-06-22T13:08:21Z", "hours": 1.7814, "text": "DEVLOG 3 Day 3 was an absolute sprint to turn raw orbital math into something I could actually use without gaslighting myself over cloud cover. I started the day with a cup of chai and a mission to fix our directional tracking, which quickly snowballed into a massive overhaul of the entire real-time calculation chain… So instead of drowning the codebase in technical jargon, I tried to focus on human-readable data, AND try to make this hour-long loading time a snappy asynchronous platform, (also hyper-local conditions to keep the frontend running smoothly.) Here is the core of what went down: Compass & Routing: Added a degrees_to_cardinal helper that slices the 360° horizon into 8 neat cardinal directions, refactored find_events to log satellite positions at rise, peak, and set, and squashed a dictionary reference bug preventing set_dir from saving to memory—all bundled into a clean frontend payload string via app. py. Live Telemetry Engine: Implemented get_live_telemetry() in predictor.py to pull coordinates instantly from our local stations.txt TLE cache without network lag, translated orbital positions into altitude/azimuth degrees using ts.now(), and added an above-horizon state gatekeeper. Async & Lifecycle Management: Locked the telemetry rendering logic safely inside the frontend. then() promise block to stop the DOM from breaking on undefined data, and built a self-termination loop that fires clearInterval() and refreshes the browser after 3 seconds when a pass ends. Weather & Geometry Matrix: Integrated an async nearest-neighbor matcher to map Open-Meteo hourly cloud cover to the exact minute of the pass peak while using the de421. bsp planetary model to run double-agent geometry checks, ensuring the local sky is dark (sun altitude below -6°) but the asset itself is . is_sunlit(). Visibility Sorting Pipeline: Aligned app.py to route tracking payloads into a rigid 5-tier classification matrix ranging from EXCELLENT (clear overhead passes) down to INVISIBLE (lost in daylight glare or Earth’s shadow) so I never accidentally watch water vapor for 15 minutes again. With the math finally behaving and the data flowing cleanly between files without throwing runtime attribute errors, the tracking engine is officially locked, loaded, and ready for real sky-gazing mischief."}, {"post_id": 13073, "ts": "2026-06-21T11:54:03Z", "hours": 2.1739, "text": "DEVLOG 2 Building software always starts with a beautiful delusion. You think you’re just taking a neat little script that prints satellite passes to a terminal and giving it a pretty web face. But the second you try to turn it into a real app, the code fights back. You modularize the math, build a safety net so the app doesn’t crash if the external tracking servers go down, and think you’re golden. Then you try to make it smart enough to track things based on where a user is actually standing, and you accidentally unleash an infinite reload nightmare that traps your browser in a loop, forcing you to write a literal memory-check in JavaScript just to stop the page from having a total meltdown. Once you break out of that loop, you realize tracking things in space means dealing with the absolute chaos of time itself. Space math lives in UTC, which is completely useless to a human looking out a window. So you find yourself wrestling with system timezone databases just to translate those raw numbers into normal, local clock times. At the same time, you build a massive, beautifully categorized dropdown menu to track everything from the ISS to random space junk—only to watch the interface develop instant amnesia, resetting itself back to the default option every single time the page refreshes. Fixing it requires writing a client-side script that acts like a digital detective, checking the web address to force the menu to remember what you clicked. But the absolute worst part? The ghosts in the machine. You try to track specific ships, and the app just returns a blank screen. You spend hours digging through raw text lines only to find out the tracking database is silently laced with hidden, non-breaking space characters. They look identical to normal spaces to a human eye, but to a computer, they break strict string matching entirely. After aggressively scrubbing those invisible characters out of the memory loops, you finally cross the finish line by hooking up a live countdown timer that ticks down to the exact second a satellite crosses your sky. You started with a text printout; you ended up surviving a relentless gauntlet of infrastructure fires."}, {"post_id": 12575, "ts": "2026-06-20T15:15:26Z", "hours": 1.0856, "text": "DEVLOG 1 Building a reliable ISS pass predictor has been a lesson in balancing ambition and my own consistent ability to break perfectly good code. I started by moving my entire development workflow to GitHub Codespaces, which has been a lifesaver; it provides a clean, cloud-based environment that keeps my local machine safe from the digital clutter and potential malware risks I encountered during my previous projects. Seriously, I’m pretty sure my machine still has the digital equivalent of an STD from that dock project I made a while ago. I tackled the core prediction engine using the Skyfield and Requests libraries, which allow me to pull live Two-Line Element (TLE) data directly from CelesTrak (which is a website that basically contains all the TLE for almost every satellite), ensuring that every calculation is based on the most recent orbital telemetry. The most significant hurdle I faced was refining the state machine logic within my prediction loop. Without a proper tracker, my initial script would suffer from an existential crisis, mistakenly logging “Set” events before “Rise” events or failing to account for passes that were already in progress when the script began (Please dont judge me, I’m a beginner and tho I have completed half of CS50, it has been a while since I have coded anything…). I solved this by implementing a persistent tracking dictionary that survives outside the loop iterations, allowing the program to safely identify and group the three distinct phases of an ISS pass: the Rise, the Peak, and the Set. Along the way, I navigated some predictable debugging hurdles, such as TypeErrors caused by me trying to force-format a Skyfield Time object as a simple float—which is a fantastic way to make your terminal scream at you—before I finally realized I needed to use proper UTC string formatting. The project is now at a point where it successfully processes raw orbital geometry for my specific coordinates in Greater Noida and exports clean, actionable data. With the backend logic stabilized, my next steps involve refactoring the code into a modular utility for my Flask API and building. Once my exams are finished, I intend to dedicate full-time focus to this project and my upcoming plans for a personal homelab setup, provided I don’t accidentally join a botnet in the meantime."}]...
|
Title: Orbital Eye - ISS & Satellite Pass Pred Title: Orbital Eye - ISS & Satellite Pass Predictor by @avishgoyal | Stardance
Devlogs:
DEVLOG 1 Building a reliable ISS pass predictor has been a lesson in balancing ambition and my own consistent ability to break perfectly good code. I started by moving my entire development workflow to GitHub Codespaces, which has been a lifesaver; it provides a clean, cloud-based environment that keeps my local machine safe from the digital clutter and potential malware risks I encountered during my previous projects. Seriously, I’m pretty sure my machine still has the digital equivalent of an STD from that dock project I made a while ago. I tackled the core prediction engine using the Skyfield and Requests libraries, which allow me to pull live Two-Line Element (TLE) data directly from CelesTrak (which is a website that basically contains all the TLE for almost every satellite), ensuring that every calculation is based on the most recent orbital telemetry. The most significant hurdle I faced was refining the state machine logic within my prediction loop. Without a proper tracker, my initial script would suffer from an existential crisis, mistakenly logging “Set” events before “Rise” events or failing to account for passes that were already in progress when the script began (Please dont judge me, I’m a beginner and tho I have completed half of CS50, it has been a while since I have coded anything…). I solved this by implementing a persistent tracking dictionary that survives outside the loop iterations, allowing the program to safely identify and group the three distinct phases of an ISS pass: the Rise, the Peak, and the Set. Along the way, I navigated some predictable debugging hurdles, such as TypeErrors caused by me trying to force-format a Skyfield Time object as a simple float—which is a fantastic way to make your terminal scream at you—before I finally realized I needed to use proper UTC string formatting. The project is now at a point where it successfully processes raw orbital geometry for my specific coordinates in Greater Noida and exports clean, actionable data. With the backend logic stabilized, my next steps involve refactoring the code into a modular utility for my Flask API and building. Once my exams are finished, I intend to dedicate full-time focus to this project and my upcoming plans for a personal homelab setup, provided I don’t accidentally join a botnet in the meantime.
DEVLOG 2 Building software always starts with a beautiful delusion. You think you’re just taking a neat little script that prints satellite passes to a terminal and giving it a pretty web face. But the second you try to turn it into a real app, the code fights back. You modularize the math, build a safety net so the app doesn’t crash if the external tracking servers go down, and think you’re golden. Then you try to make it smart enough to track things based on where a user is actually standing, and you accidentally unleash an infinite reload nightmare that traps your browser in a loop, forcing you to write a literal memory-check in JavaScript just to stop the page from having a total meltdown. Once you break out of that loop, you realize tracking things in space means dealing with the absolute chaos of time itself. Space math lives in UTC, which is completely useless to a human looking out a window. So you find yourself wrestling with system timezone databases just to translate those raw numbers into normal, local clock times. At the same time, you build a massive, beautifully categorized dropdown menu to track everything from the ISS to random space junk—only to watch the interface develop instant amnesia, resetting itself back to the default option every single time the page refreshes. Fixing it requires writing a client-side script that acts like a digital detective, checking the web address to force the menu to remember what you clicked. But the absolute worst part? The ghosts in the machine. You try to track specific ships, and the app just returns a blank screen. You spend hours digging through raw text lines only to find out the tracking database is silently laced with hidden, non-breaking space characters. They look identical to normal spaces to a human eye, but to a computer, they break strict string matching entirely. After aggressively scrubbing those invisible characters out of the memory loops, you finally cross the finish line by hooking up a live countdown timer that ticks down to the exact second a satellite crosses your sky. You started with a text printout; you ended up surviving a relentless gauntlet of infrastructure fires.
DEVLOG 3 Day 3 was an absolute sprint to turn raw orbital math into something I could actually use without gaslighting myself over cloud cover. I started the day with a cup of chai and a mission to fix our directional tracking, which quickly snowballed into a massive overhaul of the entire real-time calculation chain… So instead of drowning the codebase in technical jargon, I tried to focus on human-readable data, AND try to make this hour-long loading time a snappy asynchronous platform, (also hyper-local conditions to keep the frontend running smoothly.) Here is the core of what went down: Compass & Routing: Added a degrees_to_cardinal helper that slices the 360° horizon into 8 neat cardinal directions, refactored find_events to log satellite positions at rise, peak, and set, and squashed a dictionary reference bug preventing set_dir from saving to memory—all bundled into a clean frontend payload string via app. py. Live Telemetry Engine: Implemented get_live_telemetry() in predictor.py to pull coordinates instantly from our local stations.txt TLE cache without network lag, translated orbital positions into altitude/azimuth degrees using ts.now(), and added an above-horizon state gatekeeper. Async & Lifecycle Management: Locked the telemetry rendering logic safely inside the frontend. then() promise block to stop the DOM from breaking on undefined data, and built a self-termination loop that fires clearInterval() and refreshes the browser after 3 seconds when a pass ends. Weather & Geometry Matrix: Integrated an async nearest-neighbor matcher to map Open-Meteo hourly cloud cover to the exact minute of the pass peak while using the de421. bsp planetary model to run double-agent geometry checks, ensuring the local sky is dark (sun altitude below -6°) but the asset itself is . is_sunlit(). Visibility Sorting Pipeline: Aligned app.py to route tracking payloads into a rigid 5-tier classification matrix ranging from EXCELLENT (clear overhead passes) down to INVISIBLE (lost in daylight glare or Earth’s shadow) so I never accidentally watch water vapor for 15 minutes again. With the math finally behaving and the data flowing cleanly between files without throwing runtime attribute errors, the tracking engine is officially locked, loaded, and ready for real sky-gazing mischief.
Devlog 4 - 3D GLOBE!?! Overview ITS LIVE FOR DEMO!, avishgoyal.pythonanywhere.com This session was all about finally implementing the 3D globe for the Satellite Pass Predictor. The goal was to create an interactive Earth that users can rotate around while viewing satellites orbiting in real time, kind of like a mini Google Earth for satellite tracking. To make this work, I used Globe.gl for visualization and Skyfield on the backend to generate future orbital positions from TLE data. Instead of constantly requesting new coordinates from the server, the backend pre-calculates future positions and sends them to the client, which then smoothly animates the satellite between those points. What’s New! Added an interactive 3D Earth using Globe.gl. Implemented future trajectory generation using Skyfield and TLE data. Added a new Flask API endpoint for orbit predictions. Generated 2 hours of future satellite positions at 1-minute intervals. Added real-time satellite animation using interpolation. Implemented automatic trajectory refreshes every 2 hours. Added orbit path visualization around the Earth. Fixed International Date Line wrap-around issues. Improved rendering performance by reducing unnecessary updates. Fixed Celestrak parsing issues caused by hidden characters. Challenges The globe rendered perfectly, the backend returned valid coordinates, and the animation logic was running, yet the satellite simply refused to appear. There were no useful errors either, which made debugging much more painful. Whenever the satellite crossed ±180° longitude, the orbit path would suddenly draw giant lines across the globe, making the orbit look completely broken. Valid satellites occasionally weren’t being found despite existing in the TLE files. Performance became a problem because I was accidentally rebuilding parts of the globe every frame. Approach My first assumption was that the rendering system itself was broken. I experimented with custom Three.js objects, custom spheres, imported raw Three.js alongside Globe.gl, and tried multiple rendering approaches. When none of those worked, I traced the entire pipeline, checking API responses, coordinate generation, interpolation calculations, altitude scaling, and orbit path generation. For the orbit issue, I compared coordinate transitions between consecutive points and investigated what happened when satellites crossed specific regions of the globe. For performance issues, I profiled the update loop and monitored how often rendering updates were occurring. Solutions The rendering issue turned out to be much simpler than expected. I was fighting Globe.gl instead of using the tools it already provided. Once I switched to its built-in object plotting system, the satellite immediately appeared. The orbit path issue was caused by longitude wrap-around at the International Date Line. Adding logic to detect large longitude jumps and split orbit segments fixed the problem. The backend lookup issue was traced back to hidden non-breaking spaces (\xa0) inside Celestrak TLE files. Sanitizing satellite names fixed the issue. Performance improved significantly after I stopped rebuilding globe geometry every frame and throttled rendering updates. Next Steps Add support for multiple satellites. Improve orbit path visualization. Add satellite labels and information overlays. Improve camera controls and globe interaction. Display upcoming passes directly on the globe. Continue optimizing animation performance. Overall, despite the suffering involved, this was one of the biggest milestones in the project so far. The globe is rendering, satellites are moving around the Earth, orbit paths are displaying correctly, and the project is finally starting to look like the thing I originally imagined instead of a collection of APIs and tables stitched together. See you in Devlog #5!
Devlog 5 - FOV Rings & Custom Satellites! Overview This session was mostly spent adding QOL updates. I made a section for custom TLE data so that you can just drop the TLE for ANY asset you want to track and the app will display it. I also added a ground station field-of-view (FOV) overlay so users can see the exact area of the Earth they can realistically observe from their specific location. What’s New! Added a ground station FOV ring with a ~1500 km visibility radius. Implemented accurate spherical projection for the FOV overlay. Added support for custom TLE injection. Created a new backend API endpoint for custom satellites. Enabled live orbit updates without needing full page reloads. Added pass predictions for custom satellites. Improved overlay rendering and stability. Fixed several major performance bottlenecks. Challenges Globe.gl’s built-in rings system turned out to be designed for animated ripple effects rather than static geometry, making it incredibly frustrating to work with. Spent a good chunk of time tracking down rendering bugs, massive performance drops, and objects annoyingly drawing right through the Earth. Page load times were atrocious—taking at least 50 seconds because my code organization sucked, causing the app to repeatedly load timescales and rerun complex calculations instead of doing them globally. Solutions Scrapped the built-in Globe.gl rings API entirely and custom-built the FOV ring myself using a canvas overlay and spherical geometry calculations. Implemented a mix of occlusion culling, render-loop optimization, and smarter canvas handling to fix the visual bugs and clipping issues. Moved repetitive calculations and timescale loading into global instances, which absolutely crushed the performance bottleneck. Page load times dropped from 50+ seconds down to a smooth 5-10 seconds! I am super proud of how the performance changes turned out (though they were mostly caused because of my stupidity). Also, this is going to be the final development blog for Orbital Eye because I’m finally preparing to ship it! This has somehow turned into a full satellite tracking platform with visibility forecasting, live telemetry, custom TLE support, and a 3D globe. There’s still a lot I want to add in the future, but for now I think it’s time for me to fix the last few little bugs and ship it!
Welp, My Ship got rejected, hahahahha, not rejected but there were some changes requested and they were entirely reasonable and actually I’m amazed how much the shipwrights actually care about the people who are making these project. The main reason was because my ENTIRE CSS was just AI slop, and I know that we all hate AI but trust me, CSS is the bane of my existence, even though it is now I had to manually revamp the entire CSS and it looks sooo muchhh better, Istg if this gets flagged as AI I might actually quit lol. Anyways, the second change they suggested was updating the README, which I havent done yet but I will do soon (my exams are in 2 days, I have to study lol) and I guess because I didnt commit until like 50% of the project they thought my entire project was AI or something? In my defence it was my first time using github codespaces and since the code was saved I thought it must have magically synced with my repo or smthing lol. Anyways, the reasons were completely valid and let me list out the changes I made: -Changed font from the generic typewriter to the Inter font, and sans-serif. -Made HUD Panels almost invisible (they were protruding too much and felt distracting, I wanted to make the Globe the visual centre of the site so yea). -Changed the Globe skin to blue marble, the NASA skin wasn’t very detailed it just had a higher resolution, the current one looks very good. -Added a background image URL so that there is a starry sky in the background not a plain black void. -Changed the top left HUD, did many changes, I found inspiration from stellarium, its basically a star tracking astrophotgraphy software, but its UI is like way too detail intensive, I took the transparent design philosophy from there and the rest I just fiddled with it until I liked it lol. -Changed the 100 accents of blues I used, to a single steel blue #5D88AA4D, I decreased the opacity for borders to around 30% ish. -I also reduced the size of the actually pass table to about 70% of its current size, it was wayyy too dominant on the UI, and I also added the accent colour there too. I completely removed green (except for the user dot). -I made the satellite path thickness less because it was tooo thick, it didn’t look like an orbit, so I made it thinner and also made the satellite sphere smaller as well from 8 : 5 to 5 : 4, I dont know the units I just turned the number smaller lol. -Next, I added a Hide UI button, the UI was very prominent on PC itself and on mobile it was just unbearable so I thought I should add a HIDE UI button so that users can focus on the globe (tho that’s not the point of this website but sure, it serves as a simulation too lol). I put it on the top right edge. On click, it just makes all the HUD elements transparent and set their pointer events to none so they can’t interact. That is basically it. I will be sure to completely remake the README I guess when I will get some time, right now, I gotta study.
Devlog #7 Another Day to feel demotivated because your ship got rejected… there was another recommendation they made to me (following up from the fact they thought my project was AI but sure), that was to add new features that would make it more cool to use! Kinda agree tho it does need more QOL features. That is why after the Hide UI (which was also added because of this suggestion btw) I added 2 new features!!! Camera Lock: This button allows you to lock your camera to the satellite, and the camera just follows the satellite, its useful if you just want it to sit in the background or smthing or just dont want to rotate the globe constantly in-between a Pass to see the satellite angle. Notifications!!!: This button allows you to enable notifications and the web-app will remind you 2 minutes before a pass using the alert() function in JS. pretty simpleOff topic: for 1080p monitors or low-end setups, the first load might be very fiddly and maybe the orbit path or the satellite or something can break, reloading fixes this mostly. These features are really simple lol and I was planning on adding more but I think its enough for now, I plan to integrate E-mails so it can remind you through Email or smthing but that will take HOURS! anyways, this sums it up to a total of 3 features. I also FINALLY completed the readme, and yes I know I said I had exams but all the more reason to finish it right here and right now, because if I hadn’t done it now, then I would have kept thinking about it lol, it might have even hindered my exam performance (yes its that serious for me). Anyways, I completely deleted the entire readme which AI made, and I tried my best when writing it manually, I don;t know what you include in a readme because I havent made it before this but I tried my best, I also added a picture of a photo I took using orbital-eye!!!
Ships:
Orbital Eye - Shipped. Five days ago this project was just supposed to be a simple ISS pass predictor. That’s it. I wanted to take better satellite photos and got annoyed at having to open 15 different tabs just to answer one question: “Can I actually see this thing tonight?” One website had pass times. Another had weather. Another had orbit visualization. Another had satellite information. Somehow I always ended up jumping between all of them. So naturally, instead of spending 5 minutes checking websites like a normal human being, I spent 5 days building an entire satellite tracking platform. Orbital Eye calculates upcoming satellite passes, estimates visibility using weather and sunlight data, provides live telemetry during active passes, and displays everything on a 3D globe. Along the way I learned far more about orbital mechanics than I ever expected to. I also learned that: Hidden whitespace characters can ruin your entire day. Globe.gl documentation occasionally feels like a scavenger hunt. A page load time of 50 seconds is generally considered “bad”. The bug is almost never where you think it is. My favorite feature ended up being the custom TLE system. You can paste the TLE of basically any satellite and Orbital Eye will immediately generate orbit predictions, calculate passes, and render it on the globe. The 3D globe itself was also way harder than expected. There were multiple points where the Earth rendered perfectly, the orbit calculations were correct, the backend was working, and the satellite simply refused to exist. Not broken. Not erroring. Just… gone. In the end, though, everything came together. The globe works. The satellites move. The passes are accurate. The performance no longer makes me question my life choices. And most importantly, I finally have a tool that tells me when to point my camera at the sky. Special thanks to lukewalsh11234, he was the only follower lol and seeing his follow it motivated me to do more since people were actually tracking the progress. GitHub: https://github.com/avishgoyal/orbital-eye Because staring at moving dots in space is cooler than it sounds....
|
1793299756.9230695
|
1793386156.9230695
|
|
22878
|
Archie-Verse by @ujwaltr | Stardance
|
ujwaltr
|
1
|
3.46
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-28T17:53:04Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Archie-Verse is a browser-based 3D architecture tool that lets you design houses and buildings without installing any software…. You can add walls, floors, roofs, furniture, lights, and more, then move everything around with simple drag-and-drop controls. It also has different viewing modes, like a 2D floor plan, a 3D view, and a walkthrough mode, so you can explore your design. Once you’re done, you can save your project automatically or export it in different formats. I built it to make creating and visualizing architectural designs simple and as interactive as possible plus accessible to anyone with a web browser!!", "repo": "https://github.com/Ujwal-TR/archie-verse", "demo": "https://archie-verse.vercel.app/"}]...
|
[{"post_id": 22709, "ts": "202 [{"post_id": 22709, "ts": "2026-07-05T08:45:58Z", "hours": 1.4558, "text": "redesigned the landing page with Neobrutalist style along with paper texture, and floating geometric elements, also built a contact page, integrated with EmailJS, smooth Framer Motion page transitions across the site, fixed some bugs with auto save, and its live! check it out!!"}, {"post_id": 17715, "ts": "2026-06-28T17:02:37Z", "hours": 1.2361, "text": "I am almost done with Archie-verse, added a few elements, light and dark theme, saving and exporting in three file formats, as well as importing files directly… still needs a lot of improvements but its a lot better than before, no lags, and mainly working! and there’s some issue with time log, idk if its my laptops (laptop’s quite old) or not…"}, {"post_id": 12969, "ts": "2026-06-21T07:00:06Z", "hours": 1.1039, "text": "I am working on Archi-verse, a place to design, model and render architectural models for free, all in one place and completely on your browser! I have started with the 3d editor, it will take a few days to fully make it working!"}]...
|
Title: Archie-Verse by @ujwaltr | Stardance
Devlo Title: Archie-Verse by @ujwaltr | Stardance
Devlogs:
I am working on Archi-verse, a place to design, model and render architectural models for free, all in one place and completely on your browser! I have started with the 3d editor, it will take a few days to fully make it working!
I am almost done with Archie-verse, added a few elements, light and dark theme, saving and exporting in three file formats, as well as importing files directly… still needs a lot of improvements but its a lot better than before, no lags, and mainly working! and there’s some issue with time log, idk if its my laptops (laptop’s quite old) or not…
redesigned the landing page with Neobrutalist style along with paper texture, and floating geometric elements, also built a contact page, integrated with EmailJS, smooth Framer Motion page transitions across the site, fixed some bugs with auto save, and its live! check it out!!
Ships:
Archie-Verse is a browser-based 3D architecture tool that lets you design houses and buildings without installing any software…. You can add walls, floors, roofs, furniture, lights, and more, then move everything around with simple drag-and-drop controls. It also has different viewing modes, like a 2D floor plan, a 3D view, and a walkthrough mode, so you can explore your design. Once you’re done, you can save your project automatically or export it in different formats. I built it to make creating and visualizing architectural designs simple and as interactive as possible plus accessible to anyone with a web browser!!...
|
1793224575.849906
|
1793310975.849906
|
|
22901
|
PlayChord by @Plum | Stardance
|
Plum
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-26T00:01:20Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "HELLOO!! I am here to present you my first ever finished hardware project (which I actually publish somewhere). PlayChord: A MIDI-Chord-Player ^^ WHAT IS IT? This hackpad is a MIDI-Input device which plays chords! But what is midi you may ask? MIDI (Musical Instrument Digital Interface) is basically a middleman between your inputs and a musical plugin or DAW. This means it’s like your small desk piano, but as a hackpad. Therefore the name: PlayChord :] INSPIRATION? YES, OF COURSE! I had a lot of inspiration from the OmniChord and the HiChord, which are both Chord-Synthesizers. The key difference between their product and my PlayChord, is that the PlayChord inputs MIDI-Signals into your Computer, which means you can use it FOR ANY INSTRUMENT (as long as you have the software for it installed somewhere). HOW IT WAS WORKING ON IT: I loved working on this project so much! During the first two days I had a LOT of energy and grinded through multiple hours. But the last 2-3 days, I’ve done less and less, probably also because it was mostly finished at that time. This was actually my first time designing a PCB, and it was so much more fun than I thought, which is why I will probably do this more often. I really love hardware projects and I can’t wait to hold it in my hands :> Message me and follow me for some future projects or if you maybe want to collab or just write me a message <3 It would really make my day :3 Slack: @Plum Discord: plum_6", "repo": "https://github.com/Plum3489/PlayChord", "demo": ""}]...
|
[{"post_id": 15989, "ts": "202 [{"post_id": 15989, "ts": "2026-06-25T23:27:27Z", "hours": 0.7206, "text": "DEVLOG #5 READY TO SHIP!! (Hopefully) Today I have taken the last steps towards the finish line, I’ve created a GitHub Repo here and also worked on a readme file. I am really happy about how it turned out. Aaanndd I also fixed some tiny things regarding my code. I am so happy, that I could get this done, I cant wait to hold this in my own two hands :DD"}, {"post_id": 15319, "ts": "2026-06-24T21:41:14Z", "hours": 1.6356, "text": "DEVLOG #4 HELLO AGAIN! :3 I am coming real close to the finish line! Today, I assembled the 3D printed Case with some left-over parts I had laying around, just to see how it would fit. And it does look nice, I am really happy with it. :happy Also, I fixed some things on the 3D Model….. AND I ALSO WROTE THE CODE FOR THE XIAO SEED!! So, now I only need to assemble the project and upload it to github. But I think about doing a 3D-Render of it, which would mean a bit more work, thats something for tomorrow tho :P"}, {"post_id": 15134, "ts": "2026-06-24T16:22:32Z", "hours": 1.5667, "text": "**DEVLOG #3: ** My work from yesterday actually, but I forgot to post a devlog lol. I’ve just worked on finishing the casing. I also 3D printed it in order to see if everything is fitting correctly, but sadly I forgot to add supports, which is why a part of the print failed. Everything else is okay and functional. ToDo: Coding the MiDi-Controller Reprint to see if the screen would fit Making a nice looking 3D render (maybe) Prep and upload on GitHub Ship If I lock in I can finish it today. But as all electronics projects are, this means it will take at least another day 😭"}, {"post_id": 13957, "ts": "2026-06-22T22:14:12Z", "hours": 3.5333, "text": "DEVLOG #2: HEYO! Today I have reworked my Casing for a bit. I finally got the dimensions kinda right. But now… IT NEEDS MORE PERSONALITY!! Any ideas on what to add in order to make it look better, except rounding the harsh edges? Also, the Top-Part with the XIAO SEEED needs some special attention too, as the USB C cutout removed parts of the Top Plate, so now its 0.5mm thin at that part. This means I need something there which could make it a bit thicker. Any Ideas are highly appreciated!!"}, {"post_id": 13375, "ts": "2026-06-21T22:12:46Z", "hours": 6.6372, "text": "So, I created my first ever PCB (Old Screenshot btw, I added the 3D Files for the other parts but I am a too tired to take a new screenshot). I’ve even worked a bit on the case, but I cant seem to get the Top Part of the case right, as the holes are always a bit off. Any tips?"}]...
|
Title: PlayChord by @Plum | Stardance
Devlogs:
So Title: PlayChord by @Plum | Stardance
Devlogs:
So, I created my first ever PCB (Old Screenshot btw, I added the 3D Files for the other parts but I am a too tired to take a new screenshot). I’ve even worked a bit on the case, but I cant seem to get the Top Part of the case right, as the holes are always a bit off. Any tips?
DEVLOG #2: HEYO! Today I have reworked my Casing for a bit. I finally got the dimensions kinda right. But now… IT NEEDS MORE PERSONALITY!! Any ideas on what to add in order to make it look better, except rounding the harsh edges? Also, the Top-Part with the XIAO SEEED needs some special attention too, as the USB C cutout removed parts of the Top Plate, so now its 0.5mm thin at that part. This means I need something there which could make it a bit thicker. Any Ideas are highly appreciated!!
**DEVLOG #3: ** My work from yesterday actually, but I forgot to post a devlog lol. I’ve just worked on finishing the casing. I also 3D printed it in order to see if everything is fitting correctly, but sadly I forgot to add supports, which is why a part of the print failed. Everything else is okay and functional. ToDo: Coding the MiDi-Controller Reprint to see if the screen would fit Making a nice looking 3D render (maybe) Prep and upload on GitHub Ship If I lock in I can finish it today. But as all electronics projects are, this means it will take at least another day 😭
DEVLOG #4 HELLO AGAIN! :3 I am coming real close to the finish line! Today, I assembled the 3D printed Case with some left-over parts I had laying around, just to see how it would fit. And it does look nice, I am really happy with it. :happy Also, I fixed some things on the 3D Model….. AND I ALSO WROTE THE CODE FOR THE XIAO SEED!! So, now I only need to assemble the project and upload it to github. But I think about doing a 3D-Render of it, which would mean a bit more work, thats something for tomorrow tho :P
DEVLOG #5 READY TO SHIP!! (Hopefully) Today I have taken the last steps towards the finish line, I’ve created a GitHub Repo here and also worked on a readme file. I am really happy about how it turned out. Aaanndd I also fixed some tiny things regarding my code. I am so happy, that I could get this done, I cant wait to hold this in my own two hands :DD
Ships:
HELLOO!! I am here to present you my first ever finished hardware project (which I actually publish somewhere). PlayChord: A MIDI-Chord-Player ^^ WHAT IS IT? This hackpad is a MIDI-Input device which plays chords! But what is midi you may ask? MIDI (Musical Instrument Digital Interface) is basically a middleman between your inputs and a musical plugin or DAW. This means it’s like your small desk piano, but as a hackpad. Therefore the name: PlayChord :] INSPIRATION? YES, OF COURSE! I had a lot of inspiration from the OmniChord and the HiChord, which are both Chord-Synthesizers. The key difference between their product and my PlayChord, is that the PlayChord inputs MIDI-Signals into your Computer, which means you can use it FOR ANY INSTRUMENT (as long as you have the software for it installed somewhere). HOW IT WAS WORKING ON IT: I loved working on this project so much! During the first two days I had a LOT of energy and grinded through multiple hours. But the last 2-3 days, I’ve done less and less, probably also because it was mostly finished at that time. This was actually my first time designing a PCB, and it was so much more fun than I thought, which is why I will probably do this more often. I really love hardware projects and I can’t wait to hold it in my hands :> Message me and follow me for some future projects or if you maybe want to collab or just write me a message <3 It would really make my day :3 Slack: @Plum Discord: plum_6...
|
1793253107.195064
|
1793339507.195064
|
|
22923
|
Daily tracker by @black_shadow_009 | Stardance
|
black_shadow_009
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-04T10:46:02Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "CLI based Python program which helps the user to keep a track of their daily activities like sleep duration, work hours, exercise time, and task efficiency", "repo": "https://github.com/Black-Shadow-009/Daily_Tracker", "demo": "https://github.com/Black-Shadow-009/Daily_Tracker/blob/main/main.py"}]...
|
[{"post_id": 61429, "ts": "202 [{"post_id": 61429, "ts": "2026-09-04T10:34:02Z", "hours": 0.8397, "text": "Finishing touches.."}, {"post_id": 13117, "ts": "2026-06-21T13:34:32Z", "hours": 1.0642, "text": "I am currently working on a the core structure of the program, I am almost done with the command line interface"}]...
|
Title: Daily tracker by @black_shadow_009 | Starda Title: Daily tracker by @black_shadow_009 | Stardance
Devlogs:
I am currently working on a the core structure of the program, I am almost done with the command line interface
Finishing touches..
Ships:
CLI based Python program which helps the user to keep a track of their daily activities like sleep duration, work hours, exercise time, and task efficiency...
|
1793303390.0988357
|
1793389790.0988357
|
|
22958
|
Tung tung tung sahur by @Arjav | Stardance
|
Arjav
|
1
|
4.23
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T11:30:00Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Ship message", "repo": "https://github.com/arjav0703/site", "demo": "https://www.youtube.com/watch?v=G9-pi6_15fI"}]...
|
[{"post_id": 37126, "ts": "202 [{"post_id": 37126, "ts": "2026-07-29T16:45:31Z", "hours": 0.8603, "text": "sahur"}, {"post_id": 21418, "ts": "2026-07-03T10:59:27Z", "hours": 1.3686, "text": "ig vro"}, {"post_id": 12473, "ts": "2026-06-20T11:27:36Z", "hours": 1.5417, "text": "woah test devlog"}]...
|
Title: Tung tung tung sahur by @Arjav | Stardance
Title: Tung tung tung sahur by @Arjav | Stardance
Devlogs:
woah test devlog
ig vro
sahur
Ships:
Ship message...
|
1793278144.4113126
|
1793364544.4113126
|
|
22985
|
NexusAI by @Greg_ios | Stardance
|
Greg_ios
|
1
|
8.0
|
86
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T16:37:21Z", "hours": 8.0, "multiplier": 11.21, "payout": 86, "blessing": "neutral", "text": "A local desktop AI assistant for Windows with direct system control capabilities. NexusAI isn’t limited to answering questions — it can interact with the operating system through a growing collection of built-in tools.", "repo": "https://github.com/travletothefurureprogramming/NexusAI/", "demo": "https://localnexusai.carrd.co/"}]...
|
[{"post_id": 15621, "ts": "202 [{"post_id": 15621, "ts": "2026-06-25T12:32:25Z", "hours": 0.4425, "text": "Feature: Updated system prompt for better AI behavior Why: The assistant sometimes produced inconsistent or low-quality responses How: Refined instructions and constraints in the base prompt to improve response structure Result: More stable and relevant outputs from NexusAI"}, {"post_id": 14994, "ts": "2026-06-24T11:24:52Z", "hours": 0.6019, "text": "Feature: Added memory system + upgraded model to Qwen3:4B Why: NexusAI couldn’t retain context between sessions and responses lacked depth How: Implemented memory tool integration and swapped model backend Result: Improved contextual awareness and more coherent conversations"}, {"post_id": 14982, "ts": "2026-06-24T10:20:30Z", "hours": 0.275, "text": "Add Memory Class. Next step use this class and make tools for it."}, {"post_id": 14518, "ts": "2026-06-23T17:38:25Z", "hours": 0.6539, "text": "Add YouTube and GitHub search functionalities to Tools class and update AI operating rules"}, {"post_id": 14376, "ts": "2026-06-23T14:17:37Z", "hours": 0.4783, "text": "Add process management functionalities to Tools class. From now the Nexus AI can help with process management"}, {"post_id": 14323, "ts": "2026-06-23T12:39:04Z", "hours": 0.8031, "text": "Add File Management tools so the AI assistant can help with these requests."}, {"post_id": 13856, "ts": "2026-06-22T18:18:44Z", "hours": 0.6892, "text": "Create a modern and clean UI"}, {"post_id": 13788, "ts": "2026-06-22T16:27:34Z", "hours": 1.2397, "text": "Add web search functionality to Tools class and enhance AI response handling in the API. Change model to a faster one(qwen2.5:3b-instruct) and make a basic Web Inferacnce."}, {"post_id": 13139, "ts": "2026-06-21T14:19:43Z", "hours": 0.5736, "text": "Add shutdown, restart, and log out functionalities to Tools class and make AI model history management so the NexusAI can remember previous messages"}, {"post_id": 13121, "ts": "2026-06-21T13:41:50Z", "hours": 0.6014, "text": "Add functionality to open system applications: Calculator, Notepad, File Explorer, Task Manager, and Command Prompt"}, {"post_id": 13084, "ts": "2026-06-21T12:40:15Z", "hours": 0.3381, "text": "Add URL opening and screenshot functionality to Tools class. From now NexusAI can use tools with args."}, {"post_id": 13079, "ts": "2026-06-21T12:19:13Z", "hours": 0.5178, "text": "Add more tools on the Nexus AI: Available tools: - open_chrome: It opens the Chrome - get_cpu: Return the percent of CPU usage - get_ram: Return the percent of RAM uage - get_disk_io_counters: Return the disk IO counters of the pc in write per second and read per second - get_disk_usage: Return the disk usage - get_network_usage: Return the network IO counters of the pc in sent per second and recv per second"}, {"post_id": 12543, "ts": "2026-06-20T14:23:39Z", "hours": 0.3875, "text": "Add AI on the backend"}, {"post_id": 12524, "ts": "2026-06-20T13:27:11Z", "hours": 0.3153, "text": "Create endpoints using Flask. And structure the AI logic."}]...
|
Title: NexusAI by @Greg_ios | Stardance
Devlogs:
Title: NexusAI by @Greg_ios | Stardance
Devlogs:
Create endpoints using Flask. And structure the AI logic.
Add AI on the backend
Add more tools on the Nexus AI: Available tools: - open_chrome: It opens the Chrome - get_cpu: Return the percent of CPU usage - get_ram: Return the percent of RAM uage - get_disk_io_counters: Return the disk IO counters of the pc in write per second and read per second - get_disk_usage: Return the disk usage - get_network_usage: Return the network IO counters of the pc in sent per second and recv per second
Add URL opening and screenshot functionality to Tools class. From now NexusAI can use tools with args.
Add functionality to open system applications: Calculator, Notepad, File Explorer, Task Manager, and Command Prompt
Add shutdown, restart, and log out functionalities to Tools class and make AI model history management so the NexusAI can remember previous messages
Add web search functionality to Tools class and enhance AI response handling in the API. Change model to a faster one(qwen2.5:3b-instruct) and make a basic Web Inferacnce.
Create a modern and clean UI
Add File Management tools so the AI assistant can help with these requests.
Add process management functionalities to Tools class. From now the Nexus AI can help with process management
Add YouTube and GitHub search functionalities to Tools class and update AI operating rules
Add Memory Class. Next step use this class and make tools for it.
Feature: Added memory system + upgraded model to Qwen3:4B Why: NexusAI couldn’t retain context between sessions and responses lacked depth How: Implemented memory tool integration and swapped model backend Result: Improved contextual awareness and more coherent conversations
Feature: Updated system prompt for better AI behavior Why: The assistant sometimes produced inconsistent or low-quality responses How: Refined instructions and constraints in the base prompt to improve response structure Result: More stable and relevant outputs from NexusAI
Ships:
A local desktop AI assistant for Windows with direct system control capabilities. NexusAI isn’t limited to answering questions — it can interact with the operating system through a growing collection of built-in tools....
|
1793263697.7381067
|
1793350097.7381067
|
|
22988
|
Morse code reader by @michal_brinza | Stardance
|
michal_brinza
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-24T18:10:45Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a morse ocde reader. It is the first project i’ve ever properly finshed and i’m quite proud of it all although it’s not exactly the most difficult project ever. I feel like this project was just the beginning and as test of this org and i already have more difficult and cooler projects in mind.", "repo": "https://github.com/michalbrinza/morse-code-reader", "demo": ""}]...
|
[{"post_id": 14459, "ts": "202 [{"post_id": 14459, "ts": "2026-06-23T16:16:36Z", "hours": 0.3667, "text": "After a lot of vibe coding i managed to connect my other mini TV project to this one. Also i transferred the translation from morse code to the latin alphabet from python back to arduino ide and all the code is in one text file. I’m still going to use python but for a different reason. I want to use the morse code reader to write Whatsapp messages, hopefully i can get that to work. Also the mini Tv is still not finished and i’m still wainting for my morse code reader to get printed. The print should come in tomorrow. I have to admit i used a lot of AI in this stage of the project and i must start learning the c++ syntax. Today i’m going to finish the mini TV get all the wiring done and i might even create a PCB for this project. Update- i finished the hardware part of the syncing process between the mini Tv and the morse code reader. Took me about an hour but i cant log it."}, {"post_id": 13090, "ts": "2026-06-21T12:53:02Z", "hours": 1.2744, "text": "I finally started with the CAD design for my morse code reader. I wanted it to look like the morse code sender things form the 19th century and i think i did a good job for my skill level. It’s nowhere close to being finished but i think its a good start. Also i recently switched from Fusion to Onshape and i’m finding designing much easier therefore i recommend you should also start using Onshape. It hasn’t crashed on me once. The hole in the design is where the button will be."}, {"post_id": 12597, "ts": "2026-06-20T15:57:14Z", "hours": 0.2833, "text": "I made a long recording before this but it didnt save:(.During these 15 minutes i drew a sketch of the reader. But i did the more important things during the recording which has been deleted. I started over with the python code and i go tit working, but it was kinda shaky, long and slow. In short i wrote all numbers and added the morse code translations in 27 if functions. It was really slow and ugly and that encouraged me to learn dictionaries in python. After quite a lot of thinking i realised i had to convert the letters in morse alphabet to bits(morse_signal = data.decode(‘utf-8’).strip()). I finally got it working after that change"}, {"post_id": 12530, "ts": "2026-06-20T13:40:50Z", "hours": 0.6061, "text": "i am trying to send data from the serial monitor to python because its easier for me to work there."}]...
|
Title: Morse code reader by @michal_brinza | Stard Title: Morse code reader by @michal_brinza | Stardance
Devlogs:
i am trying to send data from the serial monitor to python because its easier for me to work there.
I made a long recording before this but it didnt save:(.During these 15 minutes i drew a sketch of the reader. But i did the more important things during the recording which has been deleted. I started over with the python code and i go tit working, but it was kinda shaky, long and slow. In short i wrote all numbers and added the morse code translations in 27 if functions. It was really slow and ugly and that encouraged me to learn dictionaries in python. After quite a lot of thinking i realised i had to convert the letters in morse alphabet to bits(morse_signal = data.decode(‘utf-8’).strip()). I finally got it working after that change
I finally started with the CAD design for my morse code reader. I wanted it to look like the morse code sender things form the 19th century and i think i did a good job for my skill level. It’s nowhere close to being finished but i think its a good start. Also i recently switched from Fusion to Onshape and i’m finding designing much easier therefore i recommend you should also start using Onshape. It hasn’t crashed on me once. The hole in the design is where the button will be.
After a lot of vibe coding i managed to connect my other mini TV project to this one. Also i transferred the translation from morse code to the latin alphabet from python back to arduino ide and all the code is in one text file. I’m still going to use python but for a different reason. I want to use the morse code reader to write Whatsapp messages, hopefully i can get that to work. Also the mini Tv is still not finished and i’m still wainting for my morse code reader to get printed. The print should come in tomorrow. I have to admit i used a lot of AI in this stage of the project and i must start learning the c++ syntax. Today i’m going to finish the mini TV get all the wiring done and i might even create a PCB for this project. Update- i finished the hardware part of the syncing process between the mini Tv and the morse code reader. Took me about an hour but i cant log it.
Ships:
I made a morse ocde reader. It is the first project i’ve ever properly finshed and i’m quite proud of it all although it’s not exactly the most difficult project ever. I feel like this project was just the beginning and as test of this org and i already have more difficult and cooler projects in mind....
|
1793220487.57068
|
1793306887.57068
|
|
22989
|
Arduino buzzer "piano" by @Poppy | Stardan Arduino buzzer "piano" by @Poppy | Stardance...
|
Poppy
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T18:28:53Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my first ever hardware/software project btw! I built a mini, arduino based “piano” which uses an active buzzer and 4 buttons on a breadboard connected to an uno r3. I was loosely inspired by a few projects on the arduino project hub, although I only had limited access to resources, so I used what I know about hardware from a bit of prior research to work it out as I was putting it together, with a LOT of trial and error. Once I assembled everything, I wrote some simple C++ (which I already know and have some experience with) in the arduino IDE, debugged it and uploaded it onto the uno. Amazingly, it worked first try!!!!!!!!", "repo": "https://github.com/lolznotpoppy/Mini-arduino-buzzer-piano", "demo": ""}]...
|
[{"post_id": 20046, "ts": "202 [{"post_id": 20046, "ts": "2026-07-01T15:36:57Z", "hours": 0.7167, "text": "I finished writing the code on arduino IDE, added all of the frequencies and durations to each of the buttons and uploaded it onto the uno r3 :)"}, {"post_id": 19558, "ts": "2026-06-30T21:43:42Z", "hours": 0.6167, "text": "I put together the main breadboard which was just an active buzzer and 4 buttons, did all the wiring and connected it to my uno r3 controller !! Next I need to start working on the code for the individual buttons in relation to the buzzer.."}]...
|
Title: Arduino buzzer "piano" by @Poppy | Title: Arduino buzzer "piano" by @Poppy | Stardance
Devlogs:
I put together the main breadboard which was just an active buzzer and 4 buttons, did all the wiring and connected it to my uno r3 controller !! Next I need to start working on the code for the individual buttons in relation to the buzzer..
I finished writing the code on arduino IDE, added all of the frequencies and durations to each of the buttons and uploaded it onto the uno r3 :)
Ships:
This is my first ever hardware/software project btw! I built a mini, arduino based “piano” which uses an active buzzer and 4 buttons on a breadboard connected to an uno r3. I was loosely inspired by a few projects on the arduino project hub, although I only had limited access to resources, so I used what I know about hardware from a bit of prior research to work it out as I was putting it together, with a LOT of trial and error. Once I assembled everything, I wrote some simple C++ (which I already know and have some experience with) in the arduino IDE, debugged it and uploaded it onto the uno. Amazingly, it worked first try!!!!!!!!...
|
1793281783.156395
|
1793368183.156395
|
|
22998
|
Apollo OS by @VaishnavS | Stardance
|
VaishnavS
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-22T12:20:09Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "APOLLO OS I made Apollo OS, my very own ‘Web OS’ for the WebOS 1 challenge. It includes basic apps such as a fake terminal, a notes app, a game of pong, a web browser(with a few bugs), a Paint app and wallpapers, color settings and themes!", "repo": "https://github.com/python-guy123/apollo.git/", "demo": "https://apollo-os.netlify.app/"}]...
|
[{"post_id": 12785, "ts": "202 [{"post_id": 12785, "ts": "2026-06-20T22:10:08Z", "hours": 0.2622, "text": "APOLLO OS V1.0 Apollo OS’s Version 1 is officially complete! This includes everything included in the previous updates, along with paint, a notepad, pong, wallpaper and theme options, resizable windows and much more!"}, {"post_id": 12773, "ts": "2026-06-20T21:38:50Z", "hours": 0.5139, "text": "APOLLO OS - UPDATE In the previous update, we added the desktop and welcome card. Now we added a terminal as well, with a hidden easter egg in it! We also added the commands ‘ls’, ‘ubuntu’ to show the ubuntu logo in ASCII art, ‘arch’ to show the Arch Linux logo in ASCII art, ‘apollo’ to show the Apllo OS ASCII art, and the easter egg command!"}, {"post_id": 12561, "ts": "2026-06-20T14:51:10Z", "hours": 0.5767, "text": "APOLLO OS - V0.2 This is Apollo OS . Currently the desktop, top bar, dock and welcome cards are implemented, and the rest is yet to be done. Once the project is done, the code will be open-sourced on GitHub!"}]...
|
Title: Apollo OS by @VaishnavS | Stardance
Devlog Title: Apollo OS by @VaishnavS | Stardance
Devlogs:
APOLLO OS - V0.2 This is Apollo OS . Currently the desktop, top bar, dock and welcome cards are implemented, and the rest is yet to be done. Once the project is done, the code will be open-sourced on GitHub!
APOLLO OS - UPDATE In the previous update, we added the desktop and welcome card. Now we added a terminal as well, with a hidden easter egg in it! We also added the commands ‘ls’, ‘ubuntu’ to show the ubuntu logo in ASCII art, ‘arch’ to show the Arch Linux logo in ASCII art, ‘apollo’ to show the Apllo OS ASCII art, and the easter egg command!
APOLLO OS V1.0 Apollo OS’s Version 1 is officially complete! This includes everything included in the previous updates, along with paint, a notepad, pong, wallpaper and theme options, resizable windows and much more!
Ships:
APOLLO OS I made Apollo OS, my very own ‘Web OS’ for the WebOS 1 challenge. It includes basic apps such as a fake terminal, a notes app, a game of pong, a web browser(with a few bugs), a Paint app and wallpapers, color settings and themes!...
|
1793267425.471531
|
1793353825.471531
|
|
22999
|
music player website by @shuaiyf | Stardance
|
shuaiyf
|
1
|
10.0
|
41
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-24T14:32:35Z", "hours": 10.0, "multiplier": 4.1, "payout": 41, "blessing": "neutral", "text": "Web Music Player A simple web music player made using HTML and CSS, able to play five pre-downloaded songs! Includes a home page where users can use a song to play by title or artist. Simple animations (spinning vinyl disc and scrolling text!) are featured in the music player page. Challenges, etc. First project in HTML! I had no experience prior to making this and so it was a little daunting and a little confusing, but it worked out pretty well in the end :) Followed a (tutorial)[https://youtu.be/JtrFzoL1joI?si=4XzKUBnZ152NrrPh] for the basics of a music player, then added the rest myself (including the home page). Consulted a LOT of https://www.html.am/ and https://www.w3schools.com/html/ . Overall, I’m really happy with how the project turned out!", "repo": "https://github.com/selinayunfei/music-player-public", "demo": "https://music-player-shuai.vercel.app/"}]...
|
[{"post_id": 14844, "ts": "202 [{"post_id": 14844, "ts": "2026-06-24T03:20:19Z", "hours": 1.1867, "text": "⋆˚꩜。 Devlog 3 : Officially done with my first HTML project! Added comments and re-organised some of my code, added a README file, now waiting for site to deploy before shipping :)"}, {"post_id": 14814, "ts": "2026-06-24T01:48:44Z", "hours": 6.975, "text": "⋆˚꩜。 Devlog 2 : Pretty much finished the project! Added a home page featuring five songs and redesigned the user interface for the actual music player; added animations such as the spinning disc and the moving text. Had a lot of fun working on this project! It was a great introduction to HTML for me. Next steps: cleaning up the code, organizing and adding comments, etc.!"}, {"post_id": 12927, "ts": "2026-06-21T05:07:12Z", "hours": 1.8217, "text": "⋆˚꩜。 Devlog 1: Started to work on a web music player! This is my first time working with HTML and CSS seriously, excited to learn more and see how far I can take this project. Started with a basic tutorial that included the play button and the seek bar; next steps would definitely be to personalise it a lot more and add more features!"}]...
|
Title: music player website by @shuaiyf | Stardanc Title: music player website by @shuaiyf | Stardance
Devlogs:
⋆˚꩜。 Devlog 1: Started to work on a web music player! This is my first time working with HTML and CSS seriously, excited to learn more and see how far I can take this project. Started with a basic tutorial that included the play button and the seek bar; next steps would definitely be to personalise it a lot more and add more features!
⋆˚꩜。 Devlog 2 : Pretty much finished the project! Added a home page featuring five songs and redesigned the user interface for the actual music player; added animations such as the spinning disc and the moving text. Had a lot of fun working on this project! It was a great introduction to HTML for me. Next steps: cleaning up the code, organizing and adding comments, etc.!
⋆˚꩜。 Devlog 3 : Officially done with my first HTML project! Added comments and re-organised some of my code, added a README file, now waiting for site to deploy before shipping :)
Ships:
Web Music Player A simple web music player made using HTML and CSS, able to play five pre-downloaded songs! Includes a home page where users can use a song to play by title or artist. Simple animations (spinning vinyl disc and scrolling text!) are featured in the music player page. Challenges, etc. First project in HTML! I had no experience prior to making this and so it was a little daunting and a little confusing, but it worked out pretty well in the end :) Followed a (tutorial)[https://youtu.be/JtrFzoL1joI?si=4XzKUBnZ152NrrPh] for the basics of a music player, then added the rest myself (including the home page). Consulted a LOT of https://www.html.am/ and https://www.w3schools.com/html/ . Overall, I’m really happy with how the project turned out!...
|
1793310611.1015127
|
1793397011.1015127
|
|
23003
|
Jbot by @Noid_DEV | Stardance
|
Noid_DEV
|
1
|
0.35
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-21T07:42:47Z", "hours": 0.0, "multiplier": 1.11, "payout": 0, "blessing": "neutral", "text": "I made jbot Available Commands: /jbot-hello - Say hi! /jbot-joke - Tells you a joke! (what else would it do???) /jbot-who-are-you? - Tells you who he is! /jbot-math - Solve math expressions", "repo": "https://github.com/its-noid-dev/Jbot-slack", "demo": "https://app.slack.com/client/E09V59WQY1E/C0BBJH1K5TR"}]...
|
[{"post_id": 13017, "ts": "202 [{"post_id": 13017, "ts": "2026-06-21T09:11:14Z", "hours": 0.3539, "text": "Devlog #1 Hi, i am Noid dev and i’m a 13 year old student from belgium. I made jbot jbot is a fun slack bot you can test in the botspam channel of the hackclub slack. Commands: /jbot-help - shows the commands /jbot-hello - say hi to jbot ! /jbot-joke - tells you a random joke! /jbot-ascii - shows you an ASCII rocketship! (work in progress) more commands will come later!"}, {"post_id": 12704, "ts": "2026-06-20T19:02:15Z", "hours": 0.4072, "text": "Making a slack bot!"}]...
|
Title: Jbot by @Noid_DEV | Stardance
Devlogs:
Mak Title: Jbot by @Noid_DEV | Stardance
Devlogs:
Making a slack bot!
Devlog #1 Hi, i am Noid dev and i’m a 13 year old student from belgium. I made jbot jbot is a fun slack bot you can test in the botspam channel of the hackclub slack. Commands: /jbot-help - shows the commands /jbot-hello - say hi to jbot ! /jbot-joke - tells you a random joke! /jbot-ascii - shows you an ASCII rocketship! (work in progress) more commands will come later!
Ships:
I made jbot Available Commands: /jbot-hello - Say hi! /jbot-joke - Tells you a joke! (what else would it do???) /jbot-who-are-you? - Tells you who he is! /jbot-math - Solve math expressions...
|
1793224527.9817376
|
1793310927.9817376
|
|
23011
|
Scope Cutter by @renanfartes | Stardance
|
renanfartes
|
1
|
4.0
|
9
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-21T19:41:55Z", "hours": 4.0, "multiplier": 2.49, "payout": 9, "blessing": "neutral", "text": "I made this website so i and other hackers can reduce the scope of their projects. My biggest struggle was making the style actually works. It’s very simple, but my first ever shipped project (yep, i’ve always started but never finished. Hope this was a great start :p)", "repo": "https://github.com/Renan-G-projec/ScopeCutter", "demo": "https://scopecutter.netlify.app/"}]...
|
[{"post_id": 13300, "ts": "202 [{"post_id": 13300, "ts": "2026-06-21T19:37:17Z", "hours": 1.5017, "text": "Style Added! Finally, i added a veryyy simple style. It was just raw css and some fonts taken by Google fonts. The main feature is ready, but i shall add some animations and a more complex reward system. Andd i discovered that is a pain to add style to checkboxes in raw css."}, {"post_id": 12724, "ts": "2026-06-20T19:57:48Z", "hours": 2.175, "text": "Scope Cutter 1st devlog Usually, i want to create big projects and by doing so, i fall into a storm of inifinite unfinished projects. So, i started developing this simple tool so i can focus in one project and in only 3 features of it to prevent overengineering. It is “functional”, but as evident in the video, is the uggliest thing that you will see today. I’ve used a cache to fast data storing and used the localStorage to the V1. I need to add some style ub a while. I also was stuck in some rendering bugs, i learned a lot, and finished the README"}]...
|
Title: Scope Cutter by @renanfartes | Stardance
D Title: Scope Cutter by @renanfartes | Stardance
Devlogs:
Scope Cutter 1st devlog Usually, i want to create big projects and by doing so, i fall into a storm of inifinite unfinished projects. So, i started developing this simple tool so i can focus in one project and in only 3 features of it to prevent overengineering. It is “functional”, but as evident in the video, is the uggliest thing that you will see today. I’ve used a cache to fast data storing and used the localStorage to the V1. I need to add some style ub a while. I also was stuck in some rendering bugs, i learned a lot, and finished the README
Style Added! Finally, i added a veryyy simple style. It was just raw css and some fonts taken by Google fonts. The main feature is ready, but i shall add some animations and a more complex reward system. Andd i discovered that is a pain to add style to checkboxes in raw css.
Ships:
I made this website so i and other hackers can reduce the scope of their projects. My biggest struggle was making the style actually works. It’s very simple, but my first ever shipped project (yep, i’ve always started but never finished. Hope this was a great start :p)...
|
1793274664.7853112
|
1793361064.7853112
|
|
23015
|
Personal Website ('-') by @Mad_Magnetar | Personal Website ('-') by @Mad_Magnetar | Stardance...
|
Mad_Magnetar
|
1
|
6.0
|
9
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T11:57:51Z", "hours": 6.0, "multiplier": 1.47, "payout": 9, "blessing": "neutral", "text": "So i made a website about myself that features my personality my playlist and my achievements,ts was my first ever project so i used gemini.", "repo": "https://github.com/silly-supernova/MY_PORTFOLIO/tree/main", "demo": "https://stardance-drab.vercel.app"}]...
|
[{"post_id": 22106, "ts": "202 [{"post_id": 22106, "ts": "2026-07-04T11:51:47Z", "hours": 1.0289, "text": "devlog no. 2!!!!!!. so finally i added spotify and it was lowkey easy than i thought yayayayaya!! i was thinking of adding smth else like a sat tracker or a star tracker but ig its good as it is."}, {"post_id": 17998, "ts": "2026-06-28T23:26:17Z", "hours": 4.8486, "text": "first devlog yayayayayyaya!!!!!!! so this is me first time making something on my own (ofc with gemini)so basically ts was not smth i was planning to build but since i wanted the sticker so bad i decided to build a personal portfolio because ik it takes less time. So i only have to add spotify add smth cool and then i will just smash ship.PROBLEMS: 1)Since my laptop is damn cooked i cant use vs code so i use github codespace and when i wanted to add images i tried many ways but it didnt work at the end i hosted them online and used the direct link 2) choosing right bg colour i tried many combinations then i setteled with ts after my hg told me to just use ts one and sybau.P.S. since ts was my first project please give me some suggestions. THANKS FOR READING!!!!!!"}]...
|
Title: Personal Website ('-') by @Mad_Magn Title: Personal Website ('-') by @Mad_Magnetar | Stardance
Devlogs:
first devlog yayayayayyaya!!!!!!! so this is me first time making something on my own (ofc with gemini)so basically ts was not smth i was planning to build but since i wanted the sticker so bad i decided to build a personal portfolio because ik it takes less time. So i only have to add spotify add smth cool and then i will just smash ship.PROBLEMS: 1)Since my laptop is damn cooked i cant use vs code so i use github codespace and when i wanted to add images i tried many ways but it didnt work at the end i hosted them online and used the direct link 2) choosing right bg colour i tried many combinations then i setteled with ts after my hg told me to just use ts one and sybau.P.S. since ts was my first project please give me some suggestions. THANKS FOR READING!!!!!!
devlog no. 2!!!!!!. so finally i added spotify and it was lowkey easy than i thought yayayayaya!! i was thinking of adding smth else like a sat tracker or a star tracker but ig its good as it is.
Ships:
So i made a website about myself that features my personality my playlist and my achievements,ts was my first ever project so i used gemini....
|
1793267714.0212731
|
1793354114.0212731
|
|
23020
|
My first slack bot! by @Chenjv | Stardance
|
Chenjv
|
1
|
3.0
|
11
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-28T19:04:00Z", "hours": 3.0, "multiplier": 4.14, "payout": 11, "blessing": "neutral", "text": "I made a slack bot that runs 24/7. It was way more challenging than I thought, but in the end it was worth it because I learned so many new things. I am proud to say that a frontend dev can also handle API keys 🥳", "repo": "https://github.com/Chenjv2/Broken_bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 17808, "ts": "202 [{"post_id": 17808, "ts": "2026-06-28T18:59:20Z", "hours": 0.4242, "text": "Added the README, also my first time writing a README that will be actually read, so excited to ship the project. I took some inspiration from online model READMEs."}, {"post_id": 17781, "ts": "2026-06-28T18:31:24Z", "hours": 1.0531, "text": "Final Version, fixed the latest problems with the weather command, turns out I forgot to git pull (I was too used to auto deploy git repos connected to netlify). Also added the randomfact command, which was suddenly much easier thanks to my prior experiences (turns out it works when you git pull). Now it’s just writing a README and it’s ready to ship."}, {"post_id": 13193, "ts": "2026-06-21T16:29:11Z", "hours": 0.5775, "text": "New commands for the brokenbot. Honestly I had no idea how to work with APIs, I had only vaguely heard about to never store API keys directly in the code (which I definitely didn’t do at first), but now it seems funny how it took so long research to find out how to get a functioning API key from OpenWeather (in the end I had to wait for my key to be activated because it usually takes a few hours). I still don’t understand how and .env file keeps the API keys magically safe ;)"}, {"post_id": 12719, "ts": "2026-06-20T19:34:13Z", "hours": 0.6125, "text": "Just following the Tutorial. I honestly had no idea what a slack bot is before, and how it functions. Now I still don’t now how it functions, but I got a working local prototype."}]...
|
Title: My first slack bot! by @Chenjv | Stardance
Title: My first slack bot! by @Chenjv | Stardance
Devlogs:
Just following the Tutorial. I honestly had no idea what a slack bot is before, and how it functions. Now I still don’t now how it functions, but I got a working local prototype.
New commands for the brokenbot. Honestly I had no idea how to work with APIs, I had only vaguely heard about to never store API keys directly in the code (which I definitely didn’t do at first), but now it seems funny how it took so long research to find out how to get a functioning API key from OpenWeather (in the end I had to wait for my key to be activated because it usually takes a few hours). I still don’t understand how and .env file keeps the API keys magically safe ;)
Final Version, fixed the latest problems with the weather command, turns out I forgot to git pull (I was too used to auto deploy git repos connected to netlify). Also added the randomfact command, which was suddenly much easier thanks to my prior experiences (turns out it works when you git pull). Now it’s just writing a README and it’s ready to ship.
Added the README, also my first time writing a README that will be actually read, so excited to ship the project. I took some inspiration from online model READMEs.
Ships:
I made a slack bot that runs 24/7. It was way more challenging than I thought, but in the end it was worth it because I learned so many new things. I am proud to say that a frontend dev can also handle API keys 🥳...
|
1793134100.4575336
|
1793220500.4575336
|
|
23033
|
GLITCH-FLICKS by @ujwaltr | Stardance
|
ujwaltr
|
1
|
2.57
|
10
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T16:48:53Z", "hours": 1.0, "multiplier": 8.58, "payout": 10, "blessing": "neutral", "text": "Hello Hackers, I am tired as im writing this but yes i did it finally!! Glitch-flicks is my first step towards my dream of having my own marketing agencyyy. I thought why not make this kinda like an OS itself, completing the task and getting my website done as wellll. The most difficult parts were the 3D scroll animations, oh god… The easiest was surely connecting it to EmailJS and deploying it. What have i learnt? staying up and finishing what you started is totally worth it! check it out and hope you like it! peace out, utr ps: i hadnt configured the wakatime when i started working and only realised it later that it was gonna log the time i spend…", "repo": "https://github.com/Ujwal-TR/glitch-flicks", "demo": "https://glitch-flicks.vercel.app/"}]...
|
[{"post_id": 22619, "ts": "202 [{"post_id": 22619, "ts": "2026-07-05T05:16:36Z", "hours": 1.5697, "text": "Glitch-Flicks now feels like a real cyberpunk operating system! I added a Spotify track which i love, will try to integrate a playlist next The background now has an endless scrolling cyber-grid, sections smoothly animate into view, data cards glow with classified styling, and small details like glitch effects…. it still needs a lot of work but for now its live! check it out!! https://glitch-flicks.vercel.app/"}, {"post_id": 12595, "ts": "2026-06-20T15:56:39Z", "hours": 1.1128, "text": "Running on 3 hours of sleep and pure Red Bull now.. I just pushed Glitch-Flicks to Vercel and it is finally live. I’m tired a lot ngl. When I started with this, I thought “yeah, a 3D cyberpunk marketing agency website, how hard could it be?” guess what, building a continuous scroll-driven narrative with WebGL is actually hard as helll. I spent like half of the weekend just fighting with React Three Fiber and trying to get the camera to not clip through the 3D objects… stuff i did in the last three days: i) 3D scroll animations took most of my energy ii) figuring out emailjs with youtube tutorials was quite easy iii) tried few other website makers like wix but no flexibility so left it do check out the website and suggest what i can add! peace out, utr ps: i forgot to configure wakatime and hence the 1 hr logtime"}]...
|
Title: GLITCH-FLICKS by @ujwaltr | Stardance
Devl Title: GLITCH-FLICKS by @ujwaltr | Stardance
Devlogs:
Running on 3 hours of sleep and pure Red Bull now.. I just pushed Glitch-Flicks to Vercel and it is finally live. I’m tired a lot ngl. When I started with this, I thought “yeah, a 3D cyberpunk marketing agency website, how hard could it be?” guess what, building a continuous scroll-driven narrative with WebGL is actually hard as helll. I spent like half of the weekend just fighting with React Three Fiber and trying to get the camera to not clip through the 3D objects… stuff i did in the last three days: i) 3D scroll animations took most of my energy ii) figuring out emailjs with youtube tutorials was quite easy iii) tried few other website makers like wix but no flexibility so left it do check out the website and suggest what i can add! peace out, utr ps: i forgot to configure wakatime and hence the 1 hr logtime
Glitch-Flicks now feels like a real cyberpunk operating system! I added a Spotify track which i love, will try to integrate a playlist next The background now has an endless scrolling cyber-grid, sections smoothly animate into view, data cards glow with classified styling, and small details like glitch effects…. it still needs a lot of work but for now its live! check it out!! https://glitch-flicks.vercel.app/
Ships:
Hello Hackers, I am tired as im writing this but yes i did it finally!! Glitch-flicks is my first step towards my dream of having my own marketing agencyyy. I thought why not make this kinda like an OS itself, completing the task and getting my website done as wellll. The most difficult parts were the 3D scroll animations, oh god… The easiest was surely connecting it to EmailJS and deploying it. What have i learnt? staying up and finishing what you started is totally worth it! check it out and hope you like it! peace out, utr ps: i hadnt configured the wakatime when i started working and only realised it later that it was gonna log the time i spend…...
|
1793274888.8601966
|
1793361288.8601966
|
|
23038
|
Macropad for copy/paste and fidgeting by @danielmb Macropad for copy/paste and fidgeting by @danielmb | Stardance...
|
danielmb
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-22T11:13:31Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Macropad to copy and paste in the linux command more easily, if you dont know copying and pasting in the linux commandline is done with ctr ins and shift ins. There are also some RGB leds that will light up when you press a button.", "repo": "https://github.com/DaanDolfijn/Macropad-Fidgettoy", "demo": ""}]...
|
[{"post_id": 13133, "ts": "202 [{"post_id": 13133, "ts": "2026-06-21T14:12:35Z", "hours": 2.295, "text": "Just finished designing the Hackpad, At first i decided that i wanted to have this macropad for fidgeting only, but then i realised that i really needed something to copy/paste in the linux commandline more easy. I designed the pcb, case and firmware. I submitted the hackpad in the hackpad hackboard channel, so hopefully it will get aproved."}]...
|
Title: Macropad for copy/paste and fidgeting by @d Title: Macropad for copy/paste and fidgeting by @danielmb | Stardance
Devlogs:
Just finished designing the Hackpad, At first i decided that i wanted to have this macropad for fidgeting only, but then i realised that i really needed something to copy/paste in the linux commandline more easy. I designed the pcb, case and firmware. I submitted the hackpad in the hackpad hackboard channel, so hopefully it will get aproved.
Ships:
I made a Macropad to copy and paste in the linux command more easily, if you dont know copying and pasting in the linux commandline is done with ctr ins and shift ins. There are also some RGB leds that will light up when you press a button....
|
1793130555.63428
|
1793216955.63428
|
|
23040
|
rhythm crossing by @alyah | Stardance
|
alyah
|
1
|
7.63
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-19T22:10:22Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made Rhythm Crossing, an adaptation of the VR and XBox game Beat Sabers. It currently only runs locally, so check out the latest release at https://github.com/lyri3aly/rhythm-crossing/releases/tag/v.1 . It runs by connecting a phone (as the console) to a laptop and utilizing its IMU sensors. This was my first time working with concepts such as using the browser’s DeviceMotionEvent / DeviceOrientationEvent APIs, so everything was very new to me. After a lot trial and error and prayers, the game finally works properly without any (known) bugs and I’m very proud of how it turned out!", "repo": "https://github.com/lyri3aly/rhythm-crossing", "demo": "https://rhythm-crossing.dino.icu/"}]...
|
[{"post_id": 83278, "ts": "202 [{"post_id": 83278, "ts": "2026-10-27T16:26:12Z", "hours": 0.3108, "text": "finally deployed via nest! this took so long and I had to apply to both nest and dino.icu, but it finally works at: https://rhythm-crossing.dino.icu . TO THOSE TRYING OUT MY GAME: YOU MUST JAB YOUR PHONE FORWARD, NOT JUST TILT TO SWITCH LANES."}, {"post_id": 70932, "ts": "2026-09-20T02:07:33Z", "hours": 0.3236, "text": "update: SOOO STARDANCE HATES ME AND RENDER ISN’T ALLOWED EITHER. WILL BE MOVING TO HACK CLUB NEST.. apparently ships require a web-access link, so I’ve FINALLY made the game available on the web. it is deployed through render (my first time using it and it’s on a free plan so I’m not sure how well it will work). to those rating my project: please ignore the info on my ship about releases and use the following link insetad! if it doesn’t work uhh… that’s not supposed to happen… https://rhythm-crossing.onrender.com/ also ignore the laginess at the start of the gameplay in my attached video, the screen recorder was bugging it out but it returns back to the actual resolution in a few seconds!"}, {"post_id": 70865, "ts": "2026-09-19T21:50:44Z", "hours": 6.6031, "text": "for some reason, I recall devlogging things by nothing is showing? guys I might just be schizo… anyway, I made rhythm crossing! this was a project I made with my friends, personally spening 6 hours on! it’s meant to be a replication of beat saber, the vr game where you slice blocks coming towards you in time to the beat. the ui is inspired by animal crossing :)"}]...
|
Title: rhythm crossing by @alyah | Stardance
Devl Title: rhythm crossing by @alyah | Stardance
Devlogs:
for some reason, I recall devlogging things by nothing is showing? guys I might just be schizo… anyway, I made rhythm crossing! this was a project I made with my friends, personally spening 6 hours on! it’s meant to be a replication of beat saber, the vr game where you slice blocks coming towards you in time to the beat. the ui is inspired by animal crossing :)
update: SOOO STARDANCE HATES ME AND RENDER ISN’T ALLOWED EITHER. WILL BE MOVING TO HACK CLUB NEST.. apparently ships require a web-access link, so I’ve FINALLY made the game available on the web. it is deployed through render (my first time using it and it’s on a free plan so I’m not sure how well it will work). to those rating my project: please ignore the info on my ship about releases and use the following link insetad! if it doesn’t work uhh… that’s not supposed to happen… https://rhythm-crossing.onrender.com/ also ignore the laginess at the start of the gameplay in my attached video, the screen recorder was bugging it out but it returns back to the actual resolution in a few seconds!
finally deployed via nest! this took so long and I had to apply to both nest and dino.icu, but it finally works at: https://rhythm-crossing.dino.icu . TO THOSE TRYING OUT MY GAME: YOU MUST JAB YOUR PHONE FORWARD, NOT JUST TILT TO SWITCH LANES.
Ships:
I made Rhythm Crossing, an adaptation of the VR and XBox game Beat Sabers. It currently only runs locally, so check out the latest release at https://github.com/lyri3aly/rhythm-crossing/releases/tag/v.1 . It runs by connecting a phone (as the console) to a laptop and utilizing its IMU sensors. This was my first time working with concepts such as using the browser’s DeviceMotionEvent / DeviceOrientationEvent APIs, so everything was very new to me. After a lot trial and error and prayers, the game finally works properly without any (known) bugs and I’m very proud of how it turned out!...
|
1793152264.5326383
|
1793238664.5326383
|
|
23049
|
My Personal Website by @michellee | Stardance
|
michellee
|
1
|
23.0
|
249
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-30T02:58:17Z", "hours": 23.0, "multiplier": 10.76, "payout": 249, "blessing": "neutral", "text": "This is my portfolio website! It is something basic, but at least you can get to know me. It’s my first project, and I learned a lot throughout the time, and I will learn more", "repo": "https://github.com/michelleebe/portfolio", "demo": "https://michelleebe.github.io/portfolio/index.html"}]...
|
[{"post_id": 18901, "ts": "202 [{"post_id": 18901, "ts": "2026-06-30T02:55:56Z", "hours": 2.8878, "text": "Im finally finished, it is shorter than what it was initially meant to be, but I am fine with it. I removed the skills page. I didn’t really think I needed it, and decided to add some photos on the about me page because it looked empty, and maybe people would feel more connected in a sense. For my first project, I think it’s not too bad???"}, {"post_id": 16048, "ts": "2026-06-26T02:24:54Z", "hours": 6.5203, "text": "I didn’t finish my projects page or my about me page fully. There are some things that I would still like to add, but I think you guys might understand the theme a little more now because im from New York and yk like the train theme and everything. But yeah, Im one page away from being done with my first projectt!!!"}, {"post_id": 14789, "ts": "2026-06-24T01:00:28Z", "hours": 4.9992, "text": "I completely changed the concept of my home page, and I like it much better now!! I had a certain concept in mind, but it can be up for interpretation, honestly."}, {"post_id": 14003, "ts": "2026-06-22T23:45:08Z", "hours": 8.7817, "text": "This is my very first experience with coding, and after A LOT of trial and error im somewhat satisfied with the home page of my portfolio website. Im just getting the hang of it but I will probably change this whole thing to fit my vibe a little better."}]...
|
Title: My Personal Website by @michellee | Stardan Title: My Personal Website by @michellee | Stardance
Devlogs:
This is my very first experience with coding, and after A LOT of trial and error im somewhat satisfied with the home page of my portfolio website. Im just getting the hang of it but I will probably change this whole thing to fit my vibe a little better.
I completely changed the concept of my home page, and I like it much better now!! I had a certain concept in mind, but it can be up for interpretation, honestly.
I didn’t finish my projects page or my about me page fully. There are some things that I would still like to add, but I think you guys might understand the theme a little more now because im from New York and yk like the train theme and everything. But yeah, Im one page away from being done with my first projectt!!!
Im finally finished, it is shorter than what it was initially meant to be, but I am fine with it. I removed the skills page. I didn’t really think I needed it, and decided to add some photos on the about me page because it looked empty, and maybe people would feel more connected in a sense. For my first project, I think it’s not too bad???
Ships:
This is my portfolio website! It is something basic, but at least you can get to know me. It’s my first project, and I learned a lot throughout the time, and I will learn more...
|
1793253393.2044938
|
1793339793.2044938
|
|
23067
|
wobblyOS! by @alark | Stardance
|
alark
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-22T15:58:11Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a minimal “web-os” project using HTMX, Tailwind, DaisyUI, and GitHub Pages! Loosely based on the guide - I look some license to build the app in the way that I’m used to. My incredible, unseen new feature: wobbly windows! The windows wobble around and move super smoothly :p", "repo": "https://github.com/alfielionel/stardance-web-os", "demo": "https://alfielionel.github.io/stardance-web-os/"}]...
|
[{"post_id": 13770, "ts": "202 [{"post_id": 13770, "ts": "2026-06-22T15:57:25Z", "hours": 0.2844, "text": "Best way to make my “web os” feel like a real app? Disabling user text selection (seriously 😭)"}, {"post_id": 13238, "ts": "2026-06-21T17:52:13Z", "hours": 0.5556, "text": "How wobblyOS windows feel alive The goal of this system is not to “animate” windows with CSS transitions. It treats every window as a physical object with mass, velocity and momentum, then simulates that every frame. This makes movement feel weighted, reactive, and surprisingly satisfying. The spring Every window tracks two positions- where it is, and where it’s going: currentX += (targetX - currentX) * 0.18 That 0.18 is the spring stiffness. Velocity After each position update, velocity is derived from the gap that remains: velocityX = targetX - currentX This is reused for every visual effect. Rotation The window tilts based on how fast it’s moving horizontally: rotate = velocityX * 0.08 Drag it left and it leans left. Etc etc. Squash & stretch Animation principle, applied physically: stretchX = 1 + abs(velocityX) * 0.0015 stretchY = 1 - abs(velocityX) * 0.0008 Fast horizontal movement makes it wider and slightly shorter. Bounce A sine wave modulated by current velocity adds a subtle wobble while moving: bounce = sin(time * 0.015) * min(speed, 25) * 0.15 When still, it does nothing- moving, it oscillates. Open & close A second spring drives the scale when windows appear or disappear: velocity += (target - value) * stiffness value += velocity Open: spring launches from 0 with an initial velocity kick, overshoots 1, bounces back. Close: target flips to 0, the window squashes down toward the taskbar and vanishes. Taskbar Waits 500ms after the window is gone, then pops in on its own spring. Restore reverses it- button springs out first, then the window pops back. Summary Every effect shares one velocity value derived from one spring equation. No CSS transitions, no keyframes, just position, momentum, and a multiply."}, {"post_id": 13203, "ts": "2026-06-21T16:58:57Z", "hours": 2.5547, "text": "I started building wobblyOS!, a jellified web-os with some fancy animations that you will all be delighted to see. (using HTMX and github pages)"}]...
|
Title: wobblyOS! by @alark | Stardance
Devlogs:
I Title: wobblyOS! by @alark | Stardance
Devlogs:
I started building wobblyOS!, a jellified web-os with some fancy animations that you will all be delighted to see. (using HTMX and github pages)
How wobblyOS windows feel alive The goal of this system is not to “animate” windows with CSS transitions. It treats every window as a physical object with mass, velocity and momentum, then simulates that every frame. This makes movement feel weighted, reactive, and surprisingly satisfying. The spring Every window tracks two positions- where it is, and where it’s going: currentX += (targetX - currentX) * 0.18 That 0.18 is the spring stiffness. Velocity After each position update, velocity is derived from the gap that remains: velocityX = targetX - currentX This is reused for every visual effect. Rotation The window tilts based on how fast it’s moving horizontally: rotate = velocityX * 0.08 Drag it left and it leans left. Etc etc. Squash & stretch Animation principle, applied physically: stretchX = 1 + abs(velocityX) * 0.0015 stretchY = 1 - abs(velocityX) * 0.0008 Fast horizontal movement makes it wider and slightly shorter. Bounce A sine wave modulated by current velocity adds a subtle wobble while moving: bounce = sin(time * 0.015) * min(speed, 25) * 0.15 When still, it does nothing- moving, it oscillates. Open & close A second spring drives the scale when windows appear or disappear: velocity += (target - value) * stiffness value += velocity Open: spring launches from 0 with an initial velocity kick, overshoots 1, bounces back. Close: target flips to 0, the window squashes down toward the taskbar and vanishes. Taskbar Waits 500ms after the window is gone, then pops in on its own spring. Restore reverses it- button springs out first, then the window pops back. Summary Every effect shares one velocity value derived from one spring equation. No CSS transitions, no keyframes, just position, momentum, and a multiply.
Best way to make my “web os” feel like a real app? Disabling user text selection (seriously 😭)
Ships:
I built a minimal “web-os” project using HTMX, Tailwind, DaisyUI, and GitHub Pages! Loosely based on the guide - I look some license to build the app in the way that I’m used to. My incredible, unseen new feature: wobbly windows! The windows wobble around and move super smoothly :p...
|
1793252884.7145278
|
1793339284.7145278
|
|
23084
|
StarBrowser by @jphwb | Stardance
|
jphwb
|
1
|
23.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-18T12:01:14Z", "hours": 23.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a web browser from scratch in Rust. I made my own networking code, it can fetch HTTP and HTTPS websites, and it can parse the HTML itself. The challenging part was getting the websites to actually show up since everytime I tried to get it to work it kept showing No Response. I was able to fix this by rewriting my client.rs file and changing the way the app connects to websites. I am proud of this whole thing as I was still a sort of ‘intermediate beginner’ to rust but I got the hang of it by watching a bunch of youtube videos at 3am in the morning and learning from w3schools as well as getting documentation from the Mozilla docs. To run the project you just need to run the windows exe. For macOS and Linux I cannot test those executables so I am not 100% sure but the windows exe works. Just make sure that on some websites like google.com you need the www subdomain first. All websites require http:// or https:// at the start. Other websites like github.com dont need the www. I was initially going to add working CSS styling however due to Stardance ending soon and I was on holiday for majority of the time I just didn’t have time.", "repo": "https://github.com/jphwba/StarBrowser", "demo": "https://github.com/jphwba/StarBrowser/releases/tag/v1.0.0"}]...
|
[{"post_id": 80645, "ts": "202 [{"post_id": 80645, "ts": "2026-10-18T11:52:41Z", "hours": 1.6633, "text": "This is a short change, initially I was working on making working CSS styling however I don’t have the time for it so all I did was create a release workflow (which took longer than expected) and I made a README going through all the features and limitations as well as a rundown of the app. I have made 3 executables. One for Windows, Linux and MacOS. All are x86_64 not ARM. I am unable to test the Linux and MacOS executables however the windows one works."}, {"post_id": 79769, "ts": "2026-10-15T10:04:18Z", "hours": 4.1039, "text": "First in the UI and Rendering architecture I added a 2010 style chrome colour palette. I also implemented new vertex, rect and ui structs with layout_ui() to calculate and position the tab strip, address bat, navi buttons and the content viewport. I also made a new WGSL shader pipeline and vertex buffer for rendering flat colour rectangles. I then added normalise_url(), fetch_page(), navigate(), go_history() and reload(). Then I updated the core State struct, removed the raw display_text stering and replaced it with rectangle pipelines, address input state, focus flags, document title tracking, history stacks, scroll offsets and mouse tracking. I rewrote window_event() and app resume logic to handle the mouse movements, vlivks, wheel scrolling and keyboard typing including Enter backspace and shortcuts with ctrl and alt. I also removed the esc to quit application and it now just refocuses onto the addrtess bar. And render() draws the UI rectabgles first, then the address text, tabs buttons and page text with clipping and scroll offsets on a white background. I also made a new HTML Parser module. With tokenisation and scanning, it includfes void/raw text element lists, entitity decoding with &, &nbdp, etc, character scanning and attribute parsing. parse() constructs the existing HTMLDocument and HTMLNode types from client.rs which handles comments, doctypes, closing tags and script/style. With DOM Utils it includfes is_block_level(), extract_visible_text() which skips , , and tags while infecting liner breaks around block elements and nodewalking and title extraction (find_title()). I also deleted cssrom.rs whcih I originally had plans for but I just merged them into parser.rs and cascade.rs. My current limitations are rendering since the pages only display as plain text so no images, hyperlinks, styling or CSS in general. There is also network bliocking where page fetching is synchronus and blocks the UI window while loading."}, {"post_id": 77540, "ts": "2026-10-07T12:06:19Z", "hours": 8.0286, "text": "I can guarantee you I am not dead even though its been like 3 months. I build about the entire css engine. I can now display the web page’s html onto the app. In the app you can’t scroll down as I still need to implement that but this is progress. A lot of the functionality is there in my code but it is unused since I need to do a whole lot more work on it but this devlog is already 8 hours and I don’t want to go over 10 so I’m making a devlog here. tokenise.rs is a css level 3 tokeniser and is pretty much the architecture. units.rs is just simple unit and angle conversion. colour.rs is just colour parsing. colours.rs is mostly just the colour-name hex table. selectors.rs is the full selector parser. parser.rs is the component valuesa dn declarations into a Stylesheet model. cascade.rs matches an element against a stylesheet and sorts it by specificity/order. box_model.rs and layout.rs just set the layout of the app’s edges/borders/padding/margin and a block-layout pass decoupled from font types that dont exist in the app natively. I would write a lot more and style the devlog better but this new stardance thing with the animations everywhere make it almost impossible to type properly and I’m on a gaming laptop"}, {"post_id": 16945, "ts": "2026-06-27T14:50:30Z", "hours": 2.6572, "text": "Added Protocol::connect_tls() method using rustls::StreamOwned<rustls::ClientConnection, TcpStream>. Created AllowAnyVerifier implementing rustls::client::danger::ServerCertVerifier to accept any certificate AddedClient::connect_tls() that loads ca-certificates.crt if present otherwise falls back to system certs TLS now works for HTTP1_1 and HTTP2_0 protocols New DNSCache struct with Arc<Mutex<HashMap<String, DNSCacheEntry»> thread-safe, TTL-based DNSCacheEntry stores resolved SocketAddr list + expiry timestamp resolve_dns() now uses trust_dns_resolver::Resolver::from_system_conf() for proper DNS lookups, with fallback to ToSocketAddrs parse_url() extracts the host, port, and TLS flag from http:// or https:// URLs Handles explicit ports (example.com:8080) and defaults (80/443) connect_to() now calls resolve_and_connect() which uses DNS cache + TLS decision logic Client now tracks redirect_count send_request() detects 3xx status codes, reads location header, and follows redirects HTMLTag -enum of all standard HTML5 tags HTMLAttribute -name/value pairs HTMLNode - tag + attributes + children + optional text content HTMLDocument -doctype + root node HTMLTag::from_string() - case-insensitive parser for all tags"}, {"post_id": 14312, "ts": "2026-06-23T12:16:35Z", "hours": 1.6106, "text": "I added text rendering to the wgpu window so it displays the HTTP status code instead of just printing it to the console. The window now shows “Status: 200” (or whatever the server returns)"}, {"post_id": 13879, "ts": "2026-06-22T19:03:58Z", "hours": 2.2364, "text": "I added response decoding and support for http0.9 1.0 and 1.1. These guides: browser.engineering , firefox guides and servo were amazing resources for learning how HTTP works and with encoding/decoding requests and responses. I mostly just followed along with how firefox worked and built my way away from it but the code formatting went a bit off in the middle (it was 4:30am I have an exam in 4 hours I was tired) Next I want to print everything in the UI instead of terminal"}, {"post_id": 13080, "ts": "2026-06-21T12:20:07Z", "hours": 0.5225, "text": "Added the initial browser engine foundataion. I added basic support for http protocol and implemented http request encoding."}, {"post_id": 13036, "ts": "2026-06-21T10:04:14Z", "hours": 2.2739, "text": "I created the basic app here but it just shows a colour right now. I was following a tutorial on basic rust because I’m still learning it."}]...
|
Title: StarBrowser by @jphwb | Stardance
Devlogs: Title: StarBrowser by @jphwb | Stardance
Devlogs:
I created the basic app here but it just shows a colour right now. I was following a tutorial on basic rust because I’m still learning it.
Added the initial browser engine foundataion. I added basic support for http protocol and implemented http request encoding.
I added response decoding and support for http0.9 1.0 and 1.1. These guides: browser.engineering , firefox guides and servo were amazing resources for learning how HTTP works and with encoding/decoding requests and responses. I mostly just followed along with how firefox worked and built my way away from it but the code formatting went a bit off in the middle (it was 4:30am I have an exam in 4 hours I was tired) Next I want to print everything in the UI instead of terminal
I added text rendering to the wgpu window so it displays the HTTP status code instead of just printing it to the console. The window now shows “Status: 200” (or whatever the server returns)
Added Protocol::connect_tls() method using rustls::StreamOwned<rustls::ClientConnection, TcpStream>. Created AllowAnyVerifier implementing rustls::client::danger::ServerCertVerifier to accept any certificate AddedClient::connect_tls() that loads ca-certificates.crt if present otherwise falls back to system certs TLS now works for HTTP1_1 and HTTP2_0 protocols New DNSCache struct with Arc<Mutex<HashMap<String, DNSCacheEntry»> thread-safe, TTL-based DNSCacheEntry stores resolved SocketAddr list + expiry timestamp resolve_dns() now uses trust_dns_resolver::Resolver::from_system_conf() for proper DNS lookups, with fallback to ToSocketAddrs parse_url() extracts the host, port, and TLS flag from http:// or https:// URLs Handles explicit ports (example.com:8080) and defaults (80/443) connect_to() now calls resolve_and_connect() which uses DNS cache + TLS decision logic Client now tracks redirect_count send_request() detects 3xx status codes, reads location header, and follows redirects HTMLTag -enum of all standard HTML5 tags HTMLAttribute -name/value pairs HTMLNode - tag + attributes + children + optional text content HTMLDocument -doctype + root node HTMLTag::from_string() - case-insensitive parser for all tags
I can guarantee you I am not dead even though its been like 3 months. I build about the entire css engine. I can now display the web page’s html onto the app. In the app you can’t scroll down as I still need to implement that but this is progress. A lot of the functionality is there in my code but it is unused since I need to do a whole lot more work on it but this devlog is already 8 hours and I don’t want to go over 10 so I’m making a devlog here. tokenise.rs is a css level 3 tokeniser and is pretty much the architecture. units.rs is just simple unit and angle conversion. colour.rs is just colour parsing. colours.rs is mostly just the colour-name hex table. selectors.rs is the full selector parser. parser.rs is the component valuesa dn declarations into a Stylesheet model. cascade.rs matches an element against a stylesheet and sorts it by specificity/order. box_model.rs and layout.rs just set the layout of the app’s edges/borders/padding/margin and a block-layout pass decoupled from font types that dont exist in the app natively. I would write a lot more and style the devlog better but this new stardance thing with the animations everywhere make it almost impossible to type properly and I’m on a gaming laptop
First in the UI and Rendering architecture I added a 2010 style chrome colour palette. I also implemented new vertex, rect and ui structs with layout_ui() to calculate and position the tab strip, address bat, navi buttons and the content viewport. I also made a new WGSL shader pipeline and vertex buffer for rendering flat colour rectangles. I then added normalise_url(), fetch_page(), navigate(), go_history() and reload(). Then I updated the core State struct, removed the raw display_text stering and replaced it with rectangle pipelines, address input state, focus flags, document title tracking, history stacks, scroll offsets and mouse tracking. I rewrote window_event() and app resume logic to handle the mouse movements, vlivks, wheel scrolling and keyboard typing including Enter backspace and shortcuts with ctrl and alt. I also removed the esc to quit application and it now just refocuses onto the addrtess bar. And render() draws the UI rectabgles first, then the address text, tabs buttons and page text with clipping and scroll offsets on a white background. I also made a new HTML Parser module. With tokenisation and scanning, it includfes void/raw text element lists, entitity decoding with &, &nbdp, etc, character scanning and attribute parsing. parse() constructs the existing HTMLDocument and HTMLNode types from client.rs which handles comments, doctypes, closing tags and script/style. With DOM Utils it includfes is_block_level(), extract_visible_text() which skips , , and tags while infecting liner breaks around block elements and nodewalking and title extraction (find_title()). I also deleted cssrom.rs whcih I originally had plans for but I just merged them into parser.rs and cascade.rs. My current limitations are rendering since the pages only display as plain text so no images, hyperlinks, styling or CSS in general. There is also network bliocking where page fetching is synchronus and blocks the UI window while loading.
This is a short change, initially I was working on making working CSS styling however I don’t have the time for it so all I did was create a release workflow (which took longer than expected) and I made a README going through all the features and limitations as well as a rundown of the app. I have made 3 executables. One for Windows, Linux and MacOS. All are x86_64 not ARM. I am unable to test the Linux and MacOS executables however the windows one works.
Ships:
I made a web browser from scratch in Rust. I made my own networking code, it can fetch HTTP and HTTPS websites, and it can parse the HTML itself. The challenging part was getting the websites to actually show up since everytime I tried to get it to work it kept showing No Response. I was able to fix this by rewriting my client.rs file and changing the way the app connects to websites. I am proud of this whole thing as I was still a sort of ‘intermediate beginner’ to rust but I got the hang of it by watching a bunch of youtube videos at 3am in the morning and learning from w3schools as well as getting documentation from the Mozilla docs. To run the project you just need to run the windows exe. For macOS and Linux I cannot test those executables so I am not 100% sure but the windows exe works. Just make sure that on some websites like google.com you need the www subdomain first. All websites require http:// or https:// at the start. Other websites like github.com dont need the www. I was initially going to add working CSS styling however due to Stardance ending soon and I was on holiday for majority of the time I just didn’t have time....
|
1793155931.340221
|
1793242331.340221
|
|
23118
|
Task Tracker by @Zz315 | Stardance
|
Zz315
|
1
|
2.27
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T19:38:13Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Just a simple project because i has some spare time", "repo": "https://github.com/razielhefer1234-cell/simple-project", "demo": "https://github.com/razielhefer1234-cell/simple-project/releases/tag/simple"}]...
|
[{"post_id": 14332, "ts": "202 [{"post_id": 14332, "ts": "2026-06-23T12:58:47Z", "hours": 0.2681, "text": "A simple task tracker"}, {"post_id": 12685, "ts": "2026-06-20T18:41:28Z", "hours": 2.3983, "text": "a simple project"}]...
|
Title: Task Tracker by @Zz315 | Stardance
Devlogs Title: Task Tracker by @Zz315 | Stardance
Devlogs:
a simple project
A simple task tracker
Ships:
Just a simple project because i has some spare time...
|
1793141463.2964606
|
1793227863.2964606
|
|
23157
|
MWebOS by @Mapplect | Stardance
|
Mapplect
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-02T19:08:01Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my own web operating system. The most difficult thing for me was figuring out how to style my elements with CSS. I put a decent bit of effort into this (and plan to do more with the WebOS 2 mission). Feedback is appreciated.", "repo": "https://github.com/tg257225-oss/MWebOS", "demo": "https://tg257225-oss.github.io/MWebOS/"}]...
|
[{"post_id": 20966, "ts": "202 [{"post_id": 20966, "ts": "2026-07-02T18:14:03Z", "hours": 2.325, "text": "Finished the WebOS 1 mission! The Work So Far: Changed the border color of each window slightly just to add some variation. Made the color-changing of the buttons ease so it appears smoother. Made a new calculator window. Doesn’t do calculus unfortunately, but multiplication, division, addition, and subtraction operations can be carried out. It was my first time trying out <form></form> , so it was a nice experience. Nothing much else to say, I want to do most of my changes under the WebOS 2 mission. Next Course of Action: I want to add a new window. I want to add more functionality to the calculator (so it could maybe do calculus/trig). I want to add tabs on the notes page so you can swap between a different note. I want to make my UI more pleasing to the eye. Not much else. Notes: I keep forgetting that people may not have monitors, so when I move my tab over to my laptop screen I tweak a little bit because everything is thrown off visually…To combat this I’m trying out height: clamp and width: clamp so everything should be fine there (I hope so)."}, {"post_id": 20813, "ts": "2026-07-02T14:56:03Z", "hours": 4.0142, "text": "Coding isn’t that bad actually (some of the time)! The Work So Far: A task bar has been created with 2 buttons (more soon) that open their respective windows (hovering over the buttons shows you what each one is for). The buttons change color when their windows are active. Clicking the button again while its active closes the window (the ‘X’ button is still there). There is now a notes window. The user can type in whatever they want, however there is a limit (using maxLength ) so the text doesn’t spill out of the window. Copy and pasting text into the window is also limited. The text entered into the notes window is saved (using localStorage ) so you can go back to it after closing the tab. The window also grows as more text is inputted, may alter the values slightly. Altered my code for open/close/toggle window functions for clarity. Next Course of Action: Adding more windows! I have no idea what windows I should add, maybe a game, music player, calculator. I’ll have to see what’s in my skill range. I want to make the OS more aesthetically pleasing. I’ll probably add some smooth animations or something. Notes: Debugging is actually kind of fun when you can easily fix an issue. One of my first ones was that the text in my top bar (MOs and the current time) were centered vertically on my monitor but not my laptop screen, so it was an easy fix ( align items: center; ). Debugging sucks otherwise.."}, {"post_id": 20260, "ts": "2026-07-01T20:09:03Z", "hours": 4.0394, "text": "Coding sucks. The Work So Far: I’ve added a top bar that displays the name of the OS (MOs) and the current date and time. I plan on changing this in the future, I just wanted to get a base down. My first window is finally functional. It’s a simple “Welcome” where I talk a bit about myself and I’ll link some other stuff there soon. There is an “X” button to close it, to reopen it, you click MOs in the top bar (definitely changing). I’ll most likely add a taskbar to take over the job of opening my windows. Not much else to say because it took me so long to do this little bit. Notes: It took me forever to fix the issue where my open and close buttons wouldn’t work. The script from the mission guide was crashing so I had to alter it to make it work."}]...
|
Title: MWebOS by @Mapplect | Stardance
Devlogs:
C Title: MWebOS by @Mapplect | Stardance
Devlogs:
Coding sucks. The Work So Far: I’ve added a top bar that displays the name of the OS (MOs) and the current date and time. I plan on changing this in the future, I just wanted to get a base down. My first window is finally functional. It’s a simple “Welcome” where I talk a bit about myself and I’ll link some other stuff there soon. There is an “X” button to close it, to reopen it, you click MOs in the top bar (definitely changing). I’ll most likely add a taskbar to take over the job of opening my windows. Not much else to say because it took me so long to do this little bit. Notes: It took me forever to fix the issue where my open and close buttons wouldn’t work. The script from the mission guide was crashing so I had to alter it to make it work.
Coding isn’t that bad actually (some of the time)! The Work So Far: A task bar has been created with 2 buttons (more soon) that open their respective windows (hovering over the buttons shows you what each one is for). The buttons change color when their windows are active. Clicking the button again while its active closes the window (the ‘X’ button is still there). There is now a notes window. The user can type in whatever they want, however there is a limit (using maxLength ) so the text doesn’t spill out of the window. Copy and pasting text into the window is also limited. The text entered into the notes window is saved (using localStorage ) so you can go back to it after closing the tab. The window also grows as more text is inputted, may alter the values slightly. Altered my code for open/close/toggle window functions for clarity. Next Course of Action: Adding more windows! I have no idea what windows I should add, maybe a game, music player, calculator. I’ll have to see what’s in my skill range. I want to make the OS more aesthetically pleasing. I’ll probably add some smooth animations or something. Notes: Debugging is actually kind of fun when you can easily fix an issue. One of my first ones was that the text in my top bar (MOs and the current time) were centered vertically on my monitor but not my laptop screen, so it was an easy fix ( align items: center; ). Debugging sucks otherwise..
Finished the WebOS 1 mission! The Work So Far: Changed the border color of each window slightly just to add some variation. Made the color-changing of the buttons ease so it appears smoother. Made a new calculator window. Doesn’t do calculus unfortunately, but multiplication, division, addition, and subtraction operations can be carried out. It was my first time trying out <form></form> , so it was a nice experience. Nothing much else to say, I want to do most of my changes under the WebOS 2 mission. Next Course of Action: I want to add a new window. I want to add more functionality to the calculator (so it could maybe do calculus/trig). I want to add tabs on the notes page so you can swap between a different note. I want to make my UI more pleasing to the eye. Not much else. Notes: I keep forgetting that people may not have monitors, so when I move my tab over to my laptop screen I tweak a little bit because everything is thrown off visually…To combat this I’m trying out height: clamp and width: clamp so everything should be fine there (I hope so).
Ships:
I made my own web operating system. The most difficult thing for me was figuring out how to style my elements with CSS. I put a decent bit of effort into this (and plan to do more with the WebOS 2 mission). Feedback is appreciated....
|
1793227652.6919115
|
1793314052.6919115
|
|
23158
|
World Cup Dashboard by @jdszekeres | Stardance
|
jdszekeres
|
1
|
4.0
|
31
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-21T16:53:40Z", "hours": 4.0, "multiplier": 8.56, "payout": 31, "blessing": "neutral", "text": "I built a World Cup dashboard to keep track of the World’s biggest sporting event without needing to watch the full games. This project uses the unofficial ESPN API to pull live updates and displays them with Pygame. The app also comes with sound effects for different events to inform you of what is happening.", "repo": "https://github.com/jdszekeres/world_cup_dashboard", "demo": "https://github.com/jdszekeres/world_cup_dashboard/releases/tag/v0.0.0"}]...
|
[{"post_id": 12920, "ts": "202 [{"post_id": 12920, "ts": "2026-06-21T04:50:19Z", "hours": 0.5567, "text": "I got the app to build to an exe! One headache and one Ecuador vs Curaçao match later. Didn’t get to test the goal scoring notification :("}, {"post_id": 12816, "ts": "2026-06-20T23:44:39Z", "hours": 0.6161, "text": "Added sounds when events happen. Waiting for the Ecuador vs Curaçao game to test it out!"}, {"post_id": 12692, "ts": "2026-06-20T18:47:25Z", "hours": 2.5156, "text": "Got the UI working and scraping ESPN data, I need to wait to make sure I’m covering all the different event, so my Hackatime duration is low"}]...
|
Title: World Cup Dashboard by @jdszekeres | Starda Title: World Cup Dashboard by @jdszekeres | Stardance
Devlogs:
Got the UI working and scraping ESPN data, I need to wait to make sure I’m covering all the different event, so my Hackatime duration is low
Added sounds when events happen. Waiting for the Ecuador vs Curaçao game to test it out!
I got the app to build to an exe! One headache and one Ecuador vs Curaçao match later. Didn’t get to test the goal scoring notification :(
Ships:
I built a World Cup dashboard to keep track of the World’s biggest sporting event without needing to watch the full games. This project uses the unofficial ESPN API to pull live updates and displays them with Pygame. The app also comes with sound effects for different events to inform you of what is happening....
|
1793274655.8180606
|
1793361055.8180606
|
|
23165
|
Planter Dividers by @isadora_M | Stardance
|
isadora_M
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-27T19:09:39Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Planter Dividers Ship! - This was a relatively quick project I built to solve a real-life problem I have. I have planters that are nailed into the top of my 6’ fence. This makes watering the plants very difficult without giving everyone on the sidewalk an involuntary shower. My solution was to create inserts for the planter bed that can be easily removed to make watering easier, along with allowing for rearranging. The project includes full and half size inserts, with full and half size aeration trays. Both sizes are identical except for the width, and all feature water drainage holes and grooves. Dealing with the usual challenges of Onshape constraints and dimensions was a joy as always, but eventually I used a system of midpoint lines to create a scalable grid for water drainage holes.", "repo": "https://github.com/IsaJM111/Planter-Dividers", "demo": ""}]...
|
[{"post_id": 17076, "ts": "202 [{"post_id": 17076, "ts": "2026-06-27T18:39:46Z", "hours": 1.1831, "text": "Planter Dividers Devlog #2- I have added the half size version! I updated the full size to use a grid created by lines and midpoints for the water drainage holes, so that if it is resized, the water hole grid will not be messed up. I also created a half and full size aeration tray for plants that need more water drainage. I used a similar method for creating the grid, so creating the half size was as easy as changing the dimensions of the original sketch and deleting half of the squares. This project is pretty much done and I have printed some demos using PLA."}, {"post_id": 12732, "ts": "2026-06-20T20:20:04Z", "hours": 0.825, "text": "Started working on the base parts for the modular planter dividers! The idea is that eventually it will be a modular system with different types of inserts for built-in planter bases. Currently built the basic insert, but I plan to add different sizes and sliders to make insertion/removal easier!"}]...
|
Title: Planter Dividers by @isadora_M | Stardance
Title: Planter Dividers by @isadora_M | Stardance
Devlogs:
Started working on the base parts for the modular planter dividers! The idea is that eventually it will be a modular system with different types of inserts for built-in planter bases. Currently built the basic insert, but I plan to add different sizes and sliders to make insertion/removal easier!
Planter Dividers Devlog #2- I have added the half size version! I updated the full size to use a grid created by lines and midpoints for the water drainage holes, so that if it is resized, the water hole grid will not be messed up. I also created a half and full size aeration tray for plants that need more water drainage. I used a similar method for creating the grid, so creating the half size was as easy as changing the dimensions of the original sketch and deleting half of the squares. This project is pretty much done and I have printed some demos using PLA.
Ships:
Planter Dividers Ship! - This was a relatively quick project I built to solve a real-life problem I have. I have planters that are nailed into the top of my 6’ fence. This makes watering the plants very difficult without giving everyone on the sidewalk an involuntary shower. My solution was to create inserts for the planter bed that can be easily removed to make watering easier, along with allowing for rearranging. The project includes full and half size inserts, with full and half size aeration trays. Both sizes are identical except for the width, and all feature water drainage holes and grooves. Dealing with the usual challenges of Onshape constraints and dimensions was a joy as always, but eventually I used a system of midpoint lines to create a scalable grid for water drainage holes....
|
1793263812.8402762
|
1793350212.8402762
|
|
23166
|
plexity.tools by @OrangJaguar | Stardance
|
OrangJaguar
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T04:25:53Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Full-stack personal dashboard that rebuilds 16+ everyday productivity tools from scratch into a unified system — task manager, calendar, grade tracker, live stock workspace, college planner, and more — all connected through a shared data layer and navigated through a single command bar and AI assistant.", "repo": "https://github.com/OrangJaguar/Plexity", "demo": "https://plexity.tools/"}]...
|
[{"post_id": 19573, "ts": "202 [{"post_id": 19573, "ts": "2026-06-30T22:13:51Z", "hours": 4.4089, "text": "Plexity — Devlog 01 I have a problem. Whenever I open my laptop to get stuff done, I immediately end up with 6 tabs open before I’ve done anything. One for tasks, one for my calendar, one to organize my college application workspace, one because I wanted to check a stock real quick, and one for a GPA calculator I found on some random website in 2023 and never closed. You know the feeling. So I built Plexity — a full-stack personal dashboard that just… has everything built exactly how I think works the best and looks the best. One shell, one place, command bar at the top. that’s it. What is it actually Plexity is a unified productivity OS with 16+ tools built from scratch , all connected through a shared data layer. Not a Notion clone, not an AI wrapper. Just tools I actually use, rebuilt the way I want them. Here’s what’s inside right now: Dashboard — your home base, everything at a glance Tasks — natural language date parsing (type “due friday” and it figures it out) Calendar — actually connected to your tasks and deadlines Grades — GPA tracker with per-course breakdowns Goals — long-term tracking, not just to-dos Journal — private, clean, no distractions Focus — timer, nothing else Calculator — with real math rendering via KaTeX PDF Tools — in-browser, no upload-to-some-random-site required Profile — A personal reference hub for your identity, background, context, links, etc. Stocks — live workspace for quick lookups College — college planning tools (this one’s personal) Lists — simple, fast list-making Units — unit converter Typing — typing speed practice Passwords — local password manager Catalog — browse everything from one place The whole thing is navigated through a single command bar. Hit a shortcut, type what you want, open it. It felt weird to use at first and now I can’t imagine going back. What I’ve been building Honestly… everything at once, which is probably not the smartest way to ship but here we are. The part I’m most proud of right now is how the tools actually talk to each other. Your tasks show up in your calendar. Your goals connect to your to-do list. it’s not just 16 isolated pages — there’s a shared data layer underneath holding it together. Getting that right took longer than I expected. The command bar was also a whole thing to build. Parsing natural language dates with chrono-node , routing commands to the right tool, making it feel instant — there were a lot of small details that had to line up before it felt good. Now it does. The stocks tool is one of my favorites because it’s the one I find myself opening randomly throughout the day. Live lookups, clean workspace, no clutter — just the data you want without the noise of a full brokerage UI. Built it for myself and it turned out really clean. Tech React + Vite + Tailwind + Zustand + TanStack Query + Base44 for the backend. Kept it lean on purpose — no unnecessary abstractions, just the tools that made the most sense. It’s Open Source The whole thing is on GitHub — github.com/OrangJaguar/Plexity . Still a side project, always free, no AI features, no paywall. Live at plexity.tools . More tools coming. More devlogs coming. Just wanted to get this first one out. — Sanskar"}]...
|
Title: plexity.tools by @OrangJaguar | Stardance
Title: plexity.tools by @OrangJaguar | Stardance
Devlogs:
Plexity — Devlog 01 I have a problem. Whenever I open my laptop to get stuff done, I immediately end up with 6 tabs open before I’ve done anything. One for tasks, one for my calendar, one to organize my college application workspace, one because I wanted to check a stock real quick, and one for a GPA calculator I found on some random website in 2023 and never closed. You know the feeling. So I built Plexity — a full-stack personal dashboard that just… has everything built exactly how I think works the best and looks the best. One shell, one place, command bar at the top. that’s it. What is it actually Plexity is a unified productivity OS with 16+ tools built from scratch , all connected through a shared data layer. Not a Notion clone, not an AI wrapper. Just tools I actually use, rebuilt the way I want them. Here’s what’s inside right now: Dashboard — your home base, everything at a glance Tasks — natural language date parsing (type “due friday” and it figures it out) Calendar — actually connected to your tasks and deadlines Grades — GPA tracker with per-course breakdowns Goals — long-term tracking, not just to-dos Journal — private, clean, no distractions Focus — timer, nothing else Calculator — with real math rendering via KaTeX PDF Tools — in-browser, no upload-to-some-random-site required Profile — A personal reference hub for your identity, background, context, links, etc. Stocks — live workspace for quick lookups College — college planning tools (this one’s personal) Lists — simple, fast list-making Units — unit converter Typing — typing speed practice Passwords — local password manager Catalog — browse everything from one place The whole thing is navigated through a single command bar. Hit a shortcut, type what you want, open it. It felt weird to use at first and now I can’t imagine going back. What I’ve been building Honestly… everything at once, which is probably not the smartest way to ship but here we are. The part I’m most proud of right now is how the tools actually talk to each other. Your tasks show up in your calendar. Your goals connect to your to-do list. it’s not just 16 isolated pages — there’s a shared data layer underneath holding it together. Getting that right took longer than I expected. The command bar was also a whole thing to build. Parsing natural language dates with chrono-node , routing commands to the right tool, making it feel instant — there were a lot of small details that had to line up before it felt good. Now it does. The stocks tool is one of my favorites because it’s the one I find myself opening randomly throughout the day. Live lookups, clean workspace, no clutter — just the data you want without the noise of a full brokerage UI. Built it for myself and it turned out really clean. Tech React + Vite + Tailwind + Zustand + TanStack Query + Base44 for the backend. Kept it lean on purpose — no unnecessary abstractions, just the tools that made the most sense. It’s Open Source The whole thing is on GitHub — github.com/OrangJaguar/Plexity . Still a side project, always free, no AI features, no paywall. Live at plexity.tools . More tools coming. More devlogs coming. Just wanted to get this first one out. — Sanskar
Ships:
Full-stack personal dashboard that rebuilds 16+ everyday productivity tools from scratch into a unified system — task manager, calendar, grade tracker, live stock workspace, college planner, and more — all connected through a shared data layer and navigated through a single command bar and AI assistant....
|
1793252905.3669794
|
1793339305.3669794
|
|
23188
|
My very own WebOS by @Derpyman | Stardance
|
Derpyman
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-28T15:47:37Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an OS inspired by cats. The most challenging aspects were creating a grid based organizational system and creating the advanced app: Purrgram (Instagram but for cats). I’m proud of the chibi cat implementation akin to a companion extension.", "repo": "https://github.com/AC583/KittyOS", "demo": "https://ac583.github.io/KittyOS/"}]...
|
[{"post_id": 17667, "ts": "202 [{"post_id": 17667, "ts": "2026-06-28T15:36:11Z", "hours": 0.4833, "text": "Implemented an Instagram type app that allows the user to scroll through reels with cats."}, {"post_id": 13288, "ts": "2026-06-21T19:12:17Z", "hours": 0.8864, "text": "Added a chibi cat extension can be fed and pet and has different reactions."}, {"post_id": 12877, "ts": "2026-06-21T03:04:28Z", "hours": 1.5986, "text": "Basic Functionality"}]...
|
Title: My very own WebOS by @Derpyman | Stardance
Title: My very own WebOS by @Derpyman | Stardance
Devlogs:
Basic Functionality
Added a chibi cat extension can be fed and pet and has different reactions.
Implemented an Instagram type app that allows the user to scroll through reels with cats.
Ships:
I made an OS inspired by cats. The most challenging aspects were creating a grid based organizational system and creating the advanced app: Purrgram (Instagram but for cats). I’m proud of the chibi cat implementation akin to a companion extension....
|
1793278179.5751166
|
1793364579.5751166
|
|
23193
|
Plantsafe AI by @rounaknayak17649 | Stardance
|
rounaknayak17649
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T20:25:50Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I am making an AI system which detect disease in plant. I am facing challenges with dataset. people should check website and also indicate which fruit or vegetable they want to check.", "repo": "https://github.com/rounak17649/pl", "demo": "https://pl-ten-psi.vercel.app"}]...
|
[{"post_id": 19737, "ts": "202 [{"post_id": 19737, "ts": "2026-07-01T03:57:49Z", "hours": 0.0, "text": "compeleted all training and added the URL to html file. it takes few seconds to load a model but it is more acurate than before"}, {"post_id": 13188, "ts": "2026-06-21T16:13:39Z", "hours": 0.0, "text": "I am currently working on dataset. where can I find best dataset for plant disease"}]...
|
Title: Plantsafe AI by @rounaknayak17649 | Stardan Title: Plantsafe AI by @rounaknayak17649 | Stardance
Devlogs:
I am currently working on dataset. where can I find best dataset for plant disease
compeleted all training and added the URL to html file. it takes few seconds to load a model but it is more acurate than before
Ships:
I am making an AI system which detect disease in plant. I am facing challenges with dataset. people should check website and also indicate which fruit or vegetable they want to check....
|
1793227675.4719546
|
1793314075.4719546
|
|
23208
|
WebOS1 by @Amedo | Stardance
|
Amedo
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-23T16:11:38Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my own webOS. I try code the JavaScript myself, but it was not going well but I wrote the Html and CSS myself. I think people will find the setting fun since they get to change the colour of the background", "repo": "https://github.com/ahmadsalman0526-creator/WebOS1", "demo": "https://ahmadsalman0526-creator.github.io/WebOS1/"}]...
|
[{"post_id": 14451, "ts": "202 [{"post_id": 14451, "ts": "2026-06-23T16:07:53Z", "hours": 0.0, "text": "I fix some bug in the OS like the notepad"}, {"post_id": 13220, "ts": "2026-06-21T17:27:48Z", "hours": 1.0, "text": "Wrote the JavaScript to make all windows draggable and stackable. Added full functionality to the calculator, task list, live clock, search bar, and settings background color picker."}, {"post_id": 13158, "ts": "2026-06-21T15:10:21Z", "hours": 1.0, "text": "Styled the OS with a dark space gradient, glass-morphism windows, and colorful gradient backgrounds for each app icon. Positioned the search bar perfectly above the icons."}, {"post_id": 13106, "ts": "2026-06-21T13:18:17Z", "hours": 1.0, "text": "Built the HTML skeleton with a desktop container, centered icon grid for 7 apps, a top-right clock, and empty window containers."}]...
|
Title: WebOS1 by @Amedo | Stardance
Devlogs:
Buil Title: WebOS1 by @Amedo | Stardance
Devlogs:
Built the HTML skeleton with a desktop container, centered icon grid for 7 apps, a top-right clock, and empty window containers.
Styled the OS with a dark space gradient, glass-morphism windows, and colorful gradient backgrounds for each app icon. Positioned the search bar perfectly above the icons.
Wrote the JavaScript to make all windows draggable and stackable. Added full functionality to the calculator, task list, live clock, search bar, and settings background color picker.
I fix some bug in the OS like the notepad
Ships:
I made my own webOS. I try code the JavaScript myself, but it was not going well but I wrote the Html and CSS myself. I think people will find the setting fun since they get to change the colour of the background...
|
1792882042.5959542
|
1793746042.5959542
|
|
23225
|
Space Test by @Sadiya | Stardance
|
Sadiya
|
1
|
2.0
|
11
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T23:01:29Z", "hours": 2.0, "multiplier": 5.69, "payout": 11, "blessing": "neutral", "text": "I made an interactive quiz about space. It consist of 10 questions and the user has to answer them without looking at the answers. The answers can be check by clicking on the top right corn of the box. A challenge was the CSS because it wasn’t looking the way I expected it to be. I accomplished this by realizing that each class has different elements.", "repo": "https://github.com/sadiyameem/space-test", "demo": "https://sadiyameem.github.io/space-test/"}]...
|
[{"post_id": 15975, "ts": "202 [{"post_id": 15975, "ts": "2026-06-25T22:54:44Z", "hours": 0.6508, "text": "I was able to finish the CSS, finished the README and made a demo link"}, {"post_id": 15318, "ts": "2026-06-24T21:40:11Z", "hours": 0.5539, "text": "I am still working on the CSS but I realized I was using the wrong classes. Here are the colors I chose"}, {"post_id": 14783, "ts": "2026-06-24T00:45:44Z", "hours": 0.2764, "text": "Here is a random part of this project. I am done with the CSS and now I will check to see why nothing has changed"}, {"post_id": 13973, "ts": "2026-06-22T22:46:33Z", "hours": 0.2553, "text": "I plan to add more questions but this is just a placeholder and I wanted to start on the CSS which is also has placeholders."}, {"post_id": 13420, "ts": "2026-06-21T23:43:29Z", "hours": 0.2867, "text": "I started coding this project and their will be lots of placeholders."}]...
|
Title: Space Test by @Sadiya | Stardance
Devlogs: Title: Space Test by @Sadiya | Stardance
Devlogs:
I started coding this project and their will be lots of placeholders.
I plan to add more questions but this is just a placeholder and I wanted to start on the CSS which is also has placeholders.
Here is a random part of this project. I am done with the CSS and now I will check to see why nothing has changed
I am still working on the CSS but I realized I was using the wrong classes. Here are the colors I chose
I was able to finish the CSS, finished the README and made a demo link
Ships:
I made an interactive quiz about space. It consist of 10 questions and the user has to answer them without looking at the answers. The answers can be check by clicking on the top right corn of the box. A challenge was the CSS because it wasn’t looking the way I expected it to be. I accomplished this by realizing that each class has different elements....
|
1793134391.0355484
|
1793220791.0355484
|
|
23230
|
CNAME Tool by @ryank | Stardance
|
ryank
|
1
|
1.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-21T19:53:40Z", "hours": 1.0, "multiplier": 5.69, "payout": 3, "blessing": "neutral", "text": "I have made a webpage that lets you look up United States phone numbers, and it will return the Caller Name under their carrier account. Some parts that was easy was getting a lookup API, because I already had a API made from my PBX purposes a couple years ago, so I only had to make a web UI that fetches. One part that was challenging was to get flask to work. I had to use some AI assistance to get flask working properly. Please read the API TOS in the github repo before using this tool to make sure you follow all local laws and regulations. This tool will only work on Phone Number IF they have a Caller Name associated with it, AND only if the phone number is based in the US", "repo": "https://github.com/csptechnologies/cnametool", "demo": "https://cname.csptech.org"}]...
|
[{"post_id": 13295, "ts": "202 [{"post_id": 13295, "ts": "2026-06-21T19:32:32Z", "hours": 0.6178, "text": "Testing it out!"}]...
|
Title: CNAME Tool by @ryank | Stardance
Devlogs:
Title: CNAME Tool by @ryank | Stardance
Devlogs:
Testing it out!
Ships:
I have made a webpage that lets you look up United States phone numbers, and it will return the Caller Name under their carrier account. Some parts that was easy was getting a lookup API, because I already had a API made from my PBX purposes a couple years ago, so I only had to make a web UI that fetches. One part that was challenging was to get flask to work. I had to use some AI assistance to get flask working properly. Please read the API TOS in the github repo before using this tool to make sure you follow all local laws and regulations. This tool will only work on Phone Number IF they have a Caller Name associated with it, AND only if the phone number is based in the US...
|
1793253303.081208
|
1793339703.081208
|
|
23251
|
Homepage for the Erstwählerforum 2026 by @jackatdj Homepage for the Erstwählerforum 2026 by @jackatdjl | Stardance...
|
jackatdjl
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T22:14:35Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I am proud of the Project, we got into our local paper Here are the many articles ;) https://www.tageblatt.de/Nachrichten/Erstwaehlerforum-zur-Kommunalwahl-in-Stade-Kritik-an-AfD-Teilnahme-746159.html https://www.tageblatt.de/Nachrichten/Erstwaehlerforum-im-Stadeum-So-sehen-Jugendliche-die-Kommunalpolitik-746162.html https://www.tageblatt.de/Nachrichten/Erstwaehlerforum-im-Stadeum-So-wollen-Parteien-Jugendliche-erreichen-746165.html https://www.tageblatt.de/Nachrichten/Hitlergruss-beim-Erstwaehlerforum-und-warum-ein-Drochterser-viral-ging-746970.html https://www.tageblatt.de/Nachrichten/Demokratie-muss-Extreme-aushalten-Stader-Schueler-organisieren-Forum-selbst-746177.html", "repo": "https://codeberg.org/erstwaehler/homepage", "demo": "https://not.ewf-stade.de/en/"}]...
|
[{"post_id": 12786, "ts": "202 [{"post_id": 12786, "ts": "2026-06-20T22:10:36Z", "hours": 2.065, "text": "I am submitting this after. I forgot to post blog posts. I always had hackatime running in the background"}]...
|
Title: Homepage for the Erstwählerforum 2026 by @j Title: Homepage for the Erstwählerforum 2026 by @jackatdjl | Stardance
Devlogs:
I am submitting this after. I forgot to post blog posts. I always had hackatime running in the background
Ships:
I am proud of the Project, we got into our local paper Here are the many articles ;) https://www.tageblatt.de/Nachrichten/Erstwaehlerforum-zur-Kommunalwahl-in-Stade-Kritik-an-AfD-Teilnahme-746159.html https://www.tageblatt.de/Nachrichten/Erstwaehlerforum-im-Stadeum-So-sehen-Jugendliche-die-Kommunalpolitik-746162.html https://www.tageblatt.de/Nachrichten/Erstwaehlerforum-im-Stadeum-So-wollen-Parteien-Jugendliche-erreichen-746165.html https://www.tageblatt.de/Nachrichten/Hitlergruss-beim-Erstwaehlerforum-und-warum-ein-Drochterser-viral-ging-746970.html https://www.tageblatt.de/Nachrichten/Demokratie-muss-Extreme-aushalten-Stader-Schueler-organisieren-Forum-selbst-746177.html...
|
1793260465.8103132
|
1793346865.8103132
|
|
23257
|
website by @elaowl10 | Stardance
|
elaowl10
|
1
|
69.0
|
666
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-10T03:44:33Z", "hours": 69.0, "multiplier": 16.31, "payout": 666, "blessing": "neutral", "text": "I created a website to promote my mother and I’s creative projects, and the book we made. As someone with limited coding experience, especially in website building, starting this project off was quite a learning curve and often felt overwhelming/frustrating. However, I’m glad I stayed with it, because I feel a lot more comfortable with my coding capabilities AND I have my very own website! I am still getting the hang of website building, but I think this turned out good for a first time project!", "repo": "https://github.com/elaowl10-bot/personalwebsite", "demo": "https://elaowl10-bot.github.io/personalwebsite/"}]...
|
[{"post_id": 44392, "ts": "202 [{"post_id": 44392, "ts": "2026-08-10T03:11:52Z", "hours": 3.5961, "text": "dev log #7 exciting news!! the website its basically done ^_^!! updates: finished the current projects page, played around with formatting minor adjustments to other pages for consistency and little tweaks finished store page : well, to be fair the store won’t really exist for a while until i publish my website and can link insite payments…. but the scaffold with a few example display products are there! finished about page : the about page is finished, though i might change some of the css styling because there’s some thigns im not in love with adjusted to smaller screen sizes i went through and fixed all the pages so they can now be viewed ona mobile screen! idk how it looks on an ipad screen though… that might still need some work overall, the website is just about ready to be published! its just down to making small revisions, checking over for any bugs, and final adjustments! im hoping to ship it by next devlog!! yay!"}, {"post_id": 42732, "ts": "2026-08-07T16:25:12Z", "hours": 3.3158, "text": "dev log #6 (but its actually the 6th one this time my last dev log was my 5th– ignore my brain fart >^< anyways —– exciting update! the current projects page is finished now! heres what i updated: - finished the three article sections : these are the little sections that introduce/focus on each of my current projects– they’re what the whole page is about -i also decided to play around with a different style/layout for this section to help me get more comfortable and stronger with using css to make different format/section styles next steps -start and finish the about page and revamp the store page -format the entire website for mobile screen (oh god) BUT we are seeing the light at the end of the tunnel! i’m hoping to ship the project soon!"}, {"post_id": 38852, "ts": "2026-08-01T12:42:11Z", "hours": 5.1206, "text": "dev log #6!!! hi guys! sorry for the brief pause. i just havent had much time to code recently so this will be a smaller update. art lessons page : the art lessons page has finally been completed! new features —–– finished the supplies lists for each kind of lesson- now each lesson has a specific list of materials w/images/directing links to make finding suggested supplies easier! i also reused the code from the comissions FAQ section to create an FAQ section for the art lessons page <3 lastly, i created a new contact form specifically for requesting art lessons! current projects page : i am now working on the current projects page!!! i want this page to sort of be like a bunch of seperate articles/sections that show the current art projects i’m working on i began working on the first article section thing, which details the painting im working on, but there is still a lot of formatitng changes i want to make i’m thinking about whether i should keep it more text heavy, like a traditional article, or keep the images and little slide thingies -tbh i hate writing but i feel like it would be more polished with more of an article format TwT"}, {"post_id": 30933, "ts": "2026-07-18T22:43:30Z", "hours": 5.84, "text": "dev log #4 :DDD I’m going to do my best to continue be more comprehensive here. Homepage updates added a book preview element : thanks to a youtube tutorial by hankthetank, I was able to create a small preview that shows some of the books pages what makes this element so cool (in my opinion) is the animation, which mimics a real turning page (you could say its a real page turner hahaha im so funny) huge credits to www.turnjs.com for the js code that made this possible! removed iframes *: as much as the iframes on the home page were fun, i don’t think they really made it easy to go the website and purchase the book, especially since they were aligned on the page more decoratively then utility minded… instead, i replaced them with simply embedding links into the text. this felt more straightforward and made more sense, even tho iframes are fun art lesson page updates created form to sign up for art lessons finished small bio section/lesson info i am now working on finishing the needed materials section, which is so tedious because i want to link every product/material to make it easier to find them anyways, thats all for now!"}, {"post_id": 29893, "ts": "2026-07-17T01:53:21Z", "hours": 22.3981, "text": "Dev Log (^w^) It’s been… a while since my last update, so here’s a big catch-up! I’m trying to document everything properly from now on instead of relying on my goldfish memory. Homepage Updates Glassmorphism Added reusable glassmorphism cards. Replaced a plain gray border with a gradient pseudo-element for more depth. Credit to the Hype4 Glassmorphism Generator for the base effect. Animations Added floating stars to make the homepage feel more alive. Implemented scroll reveal animations so sections appear as users scroll. Created a reusable .swing class using CSS keyframes for playful hover animations. Hover Effects Added several interactions to make the site feel less static: Growing navigation buttons Lifting image cards 3D tilt effects Wobbling hanging images Animated logos Art Page Created a dedicated Art page that serves as a navigation hub. Current features: Navigation bar “Ela’s Art Emporium” logo AP Art portfolio showcase Eventually I’d like to add preview sections for the other art pages. Art Lessons Page Started building the Art Lessons page. Current features: About Me section Lesson preview cards Images and descriptions Consistent card styling Hover animations Still a WIP, but I’m really happy with the direction it’s going. Commission Page This has become one of the biggest pages on the website. Features include: Accordion timeline explaining the commission process Pricing section Interactive commission builder that generates price estimates FAQ accordion The commission builder was definitely the hardest feature I’ve coded so far, but also one of my favorites. Art Gallery Created a gallery using polaroid-style flip cards. Since every painting has different dimensions, I added a full image viewer so users can see artwork at its original size. I may replace the buttons with a click-to-expand feature later to reduce clutter. Next Steps Finish the Art Lessons page Create the Current Projects page Finish the About page Finish the Store page Make the website fully mobile-friendly (task of doom and despair…)"}, {"post_id": 24149, "ts": "2026-07-07T15:07:44Z", "hours": 25.4569, "text": "Okay I cant lie I slacked off on updating my dev log for like way too long oops! but we made a lot of progress!!! First of all, I finished the home page!! Yay!! I added a nav bar to the other pages (which aren’t yet finished) interactive elements liek slideshows, and other fun little sections. I am honestly loving the progress that is happening its come a long way for sure. There was a pretty steep learning curve at the beginning but now like 200 video tutorial later I finally feel like I know what im doing. Lets gooooo"}, {"post_id": 14479, "ts": "2026-06-23T16:44:40Z", "hours": 2.9353, "text": "I am working on adjusting the layout and creating the basic structure for my website."}]...
|
Title: website by @elaowl10 | Stardance
Devlogs:
Title: website by @elaowl10 | Stardance
Devlogs:
I am working on adjusting the layout and creating the basic structure for my website.
Okay I cant lie I slacked off on updating my dev log for like way too long oops! but we made a lot of progress!!! First of all, I finished the home page!! Yay!! I added a nav bar to the other pages (which aren’t yet finished) interactive elements liek slideshows, and other fun little sections. I am honestly loving the progress that is happening its come a long way for sure. There was a pretty steep learning curve at the beginning but now like 200 video tutorial later I finally feel like I know what im doing. Lets gooooo
Dev Log (^w^) It’s been… a while since my last update, so here’s a big catch-up! I’m trying to document everything properly from now on instead of relying on my goldfish memory. Homepage Updates Glassmorphism Added reusable glassmorphism cards. Replaced a plain gray border with a gradient pseudo-element for more depth. Credit to the Hype4 Glassmorphism Generator for the base effect. Animations Added floating stars to make the homepage feel more alive. Implemented scroll reveal animations so sections appear as users scroll. Created a reusable .swing class using CSS keyframes for playful hover animations. Hover Effects Added several interactions to make the site feel less static: Growing navigation buttons Lifting image cards 3D tilt effects Wobbling hanging images Animated logos Art Page Created a dedicated Art page that serves as a navigation hub. Current features: Navigation bar “Ela’s Art Emporium” logo AP Art portfolio showcase Eventually I’d like to add preview sections for the other art pages. Art Lessons Page Started building the Art Lessons page. Current features: About Me section Lesson preview cards Images and descriptions Consistent card styling Hover animations Still a WIP, but I’m really happy with the direction it’s going. Commission Page This has become one of the biggest pages on the website. Features include: Accordion timeline explaining the commission process Pricing section Interactive commission builder that generates price estimates FAQ accordion The commission builder was definitely the hardest feature I’ve coded so far, but also one of my favorites. Art Gallery Created a gallery using polaroid-style flip cards. Since every painting has different dimensions, I added a full image viewer so users can see artwork at its original size. I may replace the buttons with a click-to-expand feature later to reduce clutter. Next Steps Finish the Art Lessons page Create the Current Projects page Finish the About page Finish the Store page Make the website fully mobile-friendly (task of doom and despair…)
dev log #4 :DDD I’m going to do my best to continue be more comprehensive here. Homepage updates added a book preview element : thanks to a youtube tutorial by hankthetank, I was able to create a small preview that shows some of the books pages what makes this element so cool (in my opinion) is the animation, which mimics a real turning page (you could say its a real page turner hahaha im so funny) huge credits to www.turnjs.com for the js code that made this possible! removed iframes *: as much as the iframes on the home page were fun, i don’t think they really made it easy to go the website and purchase the book, especially since they were aligned on the page more decoratively then utility minded… instead, i replaced them with simply embedding links into the text. this felt more straightforward and made more sense, even tho iframes are fun art lesson page updates created form to sign up for art lessons finished small bio section/lesson info i am now working on finishing the needed materials section, which is so tedious because i want to link every product/material to make it easier to find them anyways, thats all for now!
dev log #6!!! hi guys! sorry for the brief pause. i just havent had much time to code recently so this will be a smaller update. art lessons page : the art lessons page has finally been completed! new features —–– finished the supplies lists for each kind of lesson- now each lesson has a specific list of materials w/images/directing links to make finding suggested supplies easier! i also reused the code from the comissions FAQ section to create an FAQ section for the art lessons page <3 lastly, i created a new contact form specifically for requesting art lessons! current projects page : i am now working on the current projects page!!! i want this page to sort of be like a bunch of seperate articles/sections that show the current art projects i’m working on i began working on the first article section thing, which details the painting im working on, but there is still a lot of formatitng changes i want to make i’m thinking about whether i should keep it more text heavy, like a traditional article, or keep the images and little slide thingies -tbh i hate writing but i feel like it would be more polished with more of an article format TwT
dev log #6 (but its actually the 6th one this time my last dev log was my 5th– ignore my brain fart >^< anyways —– exciting update! the current projects page is finished now! heres what i updated: - finished the three article sections : these are the little sections that introduce/focus on each of my current projects– they’re what the whole page is about -i also decided to play around with a different style/layout for this section to help me get more comfortable and stronger with using css to make different format/section styles next steps -start and finish the about page and revamp the store page -format the entire website for mobile screen (oh god) BUT we are seeing the light at the end of the tunnel! i’m hoping to ship the project soon!
dev log #7 exciting news!! the website its basically done ^_^!! updates: finished the current projects page, played around with formatting minor adjustments to other pages for consistency and little tweaks finished store page : well, to be fair the store won’t really exist for a while until i publish my website and can link insite payments…. but the scaffold with a few example display products are there! finished about page : the about page is finished, though i might change some of the css styling because there’s some thigns im not in love with adjusted to smaller screen sizes i went through and fixed all the pages so they can now be viewed ona mobile screen! idk how it looks on an ipad screen though… that might still need some work overall, the website is just about ready to be published! its just down to making small revisions, checking over for any bugs, and final adjustments! im hoping to ship it by next devlog!! yay!
Ships:
I created a website to promote my mother and I’s creative projects, and the book we made. As someone with limited coding experience, especially in website building, starting this project off was quite a learning curve and often felt overwhelming/frustrating. However, I’m glad I stayed with it, because I feel a lot more comfortable with my coding capabilities AND I have my very own website! I am still getting the hang of website building, but I think this turned out good for a first time project!...
|
1793137812.400127
|
1793224212.400127
|
|
23277
|
rainwall by @angelcube | Stardance
|
angelcube
|
1
|
21.28
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-21T23:38:16Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "🌈 rainwall is done! This is a CLI utility that uses the weather outside to select a matching image as your wallpaper. This was my first time using Deno, and I feel like it’s got its pros and cons. I learned so much in manipulating the actual OS through TypeScript, and I feel much more confiident in it as a scripting language now! I wasn’t able to test on any other architectures, so please submit feedback as needed! You can download rainwall via JSR , GitHub , or with the PKGBUILD !", "repo": "https://github.com/weightedangelcube/rainwall", "demo": "https://github.com/weightedangelcube/rainwall/releases/tag/0.1.0-alpha.stardance"}]...
|
[{"post_id": 16656, "ts": "202 [{"post_id": 16656, "ts": "2026-06-27T02:34:30Z", "hours": 3.6031, "text": "DEVS OF STARDANCE, I need YOUR HELP! Setting wallpapers for multiple monitors on macOS is tediously hard! There’s gotta be a Swift application in the middle accepting this call, so… Would you rather: a Swift library bundled within the (TypeScript) application to interact with Cocoa and handle setting the wallpaper a dependency on another CLI tool like desktoppr for this? LET ME KNOW IN THE COMMENTS! Or something. I’m not a YouTuber"}, {"post_id": 14727, "ts": "2026-06-23T22:46:16Z", "hours": 1.7067, "text": "Today I learned that the CIEDE2000 algorithm never worked in the first place and was outputting numbers opposite to on the colour wheel. Why? I have no clue and I don’t intend to find out, because I’ve decided I’ve had enough of typing in sine and cosine and was just going to use the library colordx instead. The whole project was refactored, including the analyze API, so if you’ve had an index file generated previously make sure to regenerate it!"}, {"post_id": 14625, "ts": "2026-06-23T20:06:21Z", "hours": 4.0125, "text": "I just spent four hours doing genuinely the most annoying thing on the planet: building for Windows . I found a neat little Stack Overflow thread that seemed to do what I wanted it to: write a PowerShell script that could set the wallpaper on Windows machines. Not too shabby, I thought. I could probably ask one of my friends to test on their machine. It wouldn’t take too long, maybe half an hour at max. Boy, was I wrong. I forced the poor bloke to install ImageMagick, then sent him a CI build. We gave the program a test run, and I ran into my first real challenge: paths. Oh my God, I hate Windows paths. Nothing would work—making folders, writing files, any of that until I replaced every single forward slash with Deno’s fromFileUrl . And being a person with not so great memory, I sent over at least five builds before I fixed every single path in the way. Honourable mentions include: I mistook configPath for cachePath fromFileUrl(\"C:/..\") because that is definitely a file:/// URL path.join(`${imageDir}, ${image.name}`) Part 2: PowerShell. I thought ( ) that zx would run on PowerShell out of the box. Nope! It depends (and it actually says this in the README too) that it depends almost exclusively on Bash and Bash escaping. There’s a usePowerShell() command, but I genuinely don’t have the energy right now to figure out the refactors required to make that work—on someone else’s machine . So I make the guy install Git Bash, and also Deno so I can just send him diffs instead of having to send the Full Deno Runtime™ every time I had a new build. At this point, rainwall-analyze finally works (yay!) and dumps the correct paths to the cache folder. We run rainwall-apply , I find four new cases of paths I did not fix, and I go back into VSCode hell. Part 3: the actual PowerShell script. Usually, on Linux, I just use Bash’s eval whenever I need to run something enclosed in a string, because zx will automatically quote and escape everything you’ve passed in through a variable. There’s no eval with PowerShell, so I do an insane amount of googling. At this point, I send him a total of twelve diffs just to test to see what the heck is going on. We eventually settled on using Deno.Command instead of zx for this one, running pwsh C:\\path\\to\\script C:\\path\\to\\image . Later, after I logged off for the night (at 2:00! I thought I’d be in bed by 22:00!), I did realize one thing—while we were installing Deno, I saw that they had an install script irm https://deno.land/install.ps1 | iex . I figured a much, much easier way would’ve been to just run 'C\\path\\to\\script' | iex instead, but my brain at that insane hour was not having it. That’s the whole Windows saga, for now. I still have to adjust the lightness curves a little bit, but other than that, we should be nearing completion. Today, I want to test the script with my macOS friend… provided she wakes up earlier than 21:00. Almost there!"}, {"post_id": 13833, "ts": "2026-06-22T17:45:38Z", "hours": 0.9606, "text": "There I was, scrolling through my Discord servers, when I saw this link: https://www.keithcirkel.co.uk/whats-my-jnd/ It was a small program to calculate the Just Noticeable Difference between two colours, or the JND. Reading the blogpost linked, it mentioned an algorithm called the “CIEDE2000.” And that’s when it hit me—the CIE is a real organization. Of course they would have a formula to calculate the similarities between two colours. That meant that I didn’t have to iterate through my array of wallpaper colours and do simple less-than checks— using CIEDE2000 would be much more accurate . Thankfully, there’s an npm library for this: color-diff. (I was NOT about to implement all that myself.) I also added a bit of randomization to the algorithm, so that should ensure you’re not getting the same wallpaper all the time if you live somewhere where there’s consistent weather patterns. All in all, this probably constitutes a reship, doesn’t it? I’ll probably be tweaking the algorithm slightly as I continue to use it, so stay tuned…"}, {"post_id": 13403, "ts": "2026-06-21T22:58:07Z", "hours": 2.0586, "text": "Wrote a README, and my very first PKGBUILD! Arch Linux is pretty cool :)"}, {"post_id": 13269, "ts": "2026-06-21T18:43:40Z", "hours": 2.2925, "text": "Dumping all the sun data times to ensure the algorithm’s as accurate as possible! (-0.833 is the angle of the sun at sunrise/sunset.)"}, {"post_id": 12898, "ts": "2026-06-21T03:52:27Z", "hours": 2.8158, "text": "Done!!! YEAH! I had to reimplement the output so that it wouldn’t sort into categories, as that turned out to be harder for the final algorithm to find a matching wallpaper. Currently hueRange is unimplemented as I’m not super sure how to go about it, and I’ve got to clean up the easing function code somehow, but other than that, this should be pretty much ready to ship!"}, {"post_id": 12827, "ts": "2026-06-21T00:19:10Z", "hours": 4.1394, "text": "Been formatting this into a full Deno project from an isolated zx idea. Never done anything config-related before, so making something to read/write the config was pretty cool. A lot of writing the analysis code was processing the bash output into something manipulate-able with TypeScript. That was annoying as shit—splitting, filtering, mapping… I never want to process text again in my entire life. Something really unexpected had to be the floating point errors I found in the loop. I was thinking there had to be a better way to populate the better array in the first place, but there didn’t seem to be, so there I was doing let i = 0, i < 1, i += 0.1 and fighting for my life against 0.60000001 . I eventually got so tired of it I just made it a percentage out of 100% instead. Surely this won’t bite me in the back later :) We’ve got cloud cover, shortwave radiation, and sun altitude with the help of Open-Meteo and suncalc. They’re going to map to parameters chroma, lightness, and hue respectively! This’ll be fun…."}]...
|
Title: rainwall by @angelcube | Stardance
Devlogs Title: rainwall by @angelcube | Stardance
Devlogs:
Been formatting this into a full Deno project from an isolated zx idea. Never done anything config-related before, so making something to read/write the config was pretty cool. A lot of writing the analysis code was processing the bash output into something manipulate-able with TypeScript. That was annoying as shit—splitting, filtering, mapping… I never want to process text again in my entire life. Something really unexpected had to be the floating point errors I found in the loop. I was thinking there had to be a better way to populate the better array in the first place, but there didn’t seem to be, so there I was doing let i = 0, i < 1, i += 0.1 and fighting for my life against 0.60000001 . I eventually got so tired of it I just made it a percentage out of 100% instead. Surely this won’t bite me in the back later :) We’ve got cloud cover, shortwave radiation, and sun altitude with the help of Open-Meteo and suncalc. They’re going to map to parameters chroma, lightness, and hue respectively! This’ll be fun….
Done!!! YEAH! I had to reimplement the output so that it wouldn’t sort into categories, as that turned out to be harder for the final algorithm to find a matching wallpaper. Currently hueRange is unimplemented as I’m not super sure how to go about it, and I’ve got to clean up the easing function code somehow, but other than that, this should be pretty much ready to ship!
Dumping all the sun data times to ensure the algorithm’s as accurate as possible! (-0.833 is the angle of the sun at sunrise/sunset.)
Wrote a README, and my very first PKGBUILD! Arch Linux is pretty cool :)
There I was, scrolling through my Discord servers, when I saw this link: https://www.keithcirkel.co.uk/whats-my-jnd/ It was a small program to calculate the Just Noticeable Difference between two colours, or the JND. Reading the blogpost linked, it mentioned an algorithm called the “CIEDE2000.” And that’s when it hit me—the CIE is a real organization. Of course they would have a formula to calculate the similarities between two colours. That meant that I didn’t have to iterate through my array of wallpaper colours and do simple less-than checks— using CIEDE2000 would be much more accurate . Thankfully, there’s an npm library for this: color-diff. (I was NOT about to implement all that myself.) I also added a bit of randomization to the algorithm, so that should ensure you’re not getting the same wallpaper all the time if you live somewhere where there’s consistent weather patterns. All in all, this probably constitutes a reship, doesn’t it? I’ll probably be tweaking the algorithm slightly as I continue to use it, so stay tuned…
I just spent four hours doing genuinely the most annoying thing on the planet: building for Windows . I found a neat little Stack Overflow thread that seemed to do what I wanted it to: write a PowerShell script that could set the wallpaper on Windows machines. Not too shabby, I thought. I could probably ask one of my friends to test on their machine. It wouldn’t take too long, maybe half an hour at max. Boy, was I wrong. I forced the poor bloke to install ImageMagick, then sent him a CI build. We gave the program a test run, and I ran into my first real challenge: paths. Oh my God, I hate Windows paths. Nothing would work—making folders, writing files, any of that until I replaced every single forward slash with Deno’s fromFileUrl . And being a person with not so great memory, I sent over at least five builds before I fixed every single path in the way. Honourable mentions include: I mistook configPath for cachePath fromFileUrl("C:/..") because that is definitely a file:/// URL path.join(`${imageDir}, ${image.name}`) Part 2: PowerShell. I thought ( ) that zx would run on PowerShell out of the box. Nope! It depends (and it actually says this in the README too) that it depends almost exclusively on Bash and Bash escaping. There’s a usePowerShell() command, but I genuinely don’t have the energy right now to figure out the refactors required to make that work—on someone else’s machine . So I make the guy install Git Bash, and also Deno so I can just send him diffs instead of having to send the Full Deno Runtime™ every time I had a new build. At this point, rainwall-analyze finally works (yay!) and dumps the correct paths to the cache folder. We run rainwall-apply , I find four new cases of paths I did not fix, and I go back into VSCode hell. Part 3: the actual PowerShell script. Usually, on Linux, I just use Bash’s eval whenever I need to run something enclosed in a string, because zx will automatically quote and escape everything you’ve passed in through a variable. There’s no eval with PowerShell, so I do an insane amount of googling. At this point, I send him a total of twelve diffs just to test to see what the heck is going on. We eventually settled on using Deno.Command instead of zx for this one, running pwsh C:\path\to\script C:\path\to\image . Later, after I logged off for the night (at 2:00! I thought I’d be in bed by 22:00!), I did realize one thing—while we were installing Deno, I saw that they had an install script irm https://deno.land/install.ps1 | iex . I figured a much, much easier way would’ve been to just run 'C\path\to\script' | iex instead, but my brain at that insane hour was not having it. That’s the whole Windows saga, for now. I still have to adjust the lightness curves a little bit, but other than that, we should be nearing completion. Today, I want to test the script with my macOS friend… provided she wakes up earlier than 21:00. Almost there!
Today I learned that the CIEDE2000 algorithm never worked in the first place and was outputting numbers opposite to on the colour wheel. Why? I have no clue and I don’t intend to find out, because I’ve decided I’ve had enough of typing in sine and cosine and was just going to use the library colordx instead. The whole project was refactored, including the analyze API, so if you’ve had an index file generated previously make sure to regenerate it!
DEVS OF STARDANCE, I need YOUR HELP! Setting wallpapers for multiple monitors on macOS is tediously hard! There’s gotta be a Swift application in the middle accepting this call, so… Would you rather: a Swift library bundled within the (TypeScript) application to interact with Cocoa and handle setting the wallpaper a dependency on another CLI tool like desktoppr for this? LET ME KNOW IN THE COMMENTS! Or something. I’m not a YouTuber
Ships:
🌈 rainwall is done! This is a CLI utility that uses the weather outside to select a matching image as your wallpaper. This was my first time using Deno, and I feel like it’s got its pros and cons. I learned so much in manipulating the actual OS through TypeScript, and I feel much more confiident in it as a scripting language now! I wasn’t able to test on any other architectures, so please submit feedback as needed! You can download rainwall via JSR , GitHub , or with the PKGBUILD !...
|
1793263689.6198845
|
1793350089.6198845
|
|
23282
|
Vencord ListenBrainz RPC by @angelcube | Stardance
|
angelcube
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-29T02:35:47Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is (somewhat) done—there’s still an unresolved code smell, check the PR for details. I’m going to ship this now for the Free Sticker™, but stay tuned for the merge :) Alternatively, reviewers, don’t approve this until it gets merged. That’s fine with me too! To install this, clone the repository at the source code link below ⬇️, then pnpm build. Follow the Vencord docs @ installing your custom build to install! Then, go to Settings -> Plugins -> AudioScrobblerRichPresence, open the plugin settings, and configure as needed :)", "repo": "https://github.com/weightedangelcube/vencord", "demo": "https://docs.vencord.dev/installing/"}]...
|
[{"post_id": 18049, "ts": "202 [{"post_id": 18049, "ts": "2026-06-29T00:45:43Z", "hours": 5.4958, "text": "for more info check out the pull request thread ListenBrainz Rich Presence in Vencord! I’ve always been a fan of tools that track your listening activity. Last.FM is a website that does exactly that! Vencord—a client mod for Discord—included a plugin that showed your Last.FM “Now Playing” as a Rich Presence activity, and I used that for a while. However, I grew increasingly dissatisfied with how Last.FM handled metadata, which is to say, it didn’t. There would be like, five different entries for one song, six for one artist, and so on and so forth. Also, oftentimes Last.FM wouldn’t associate albums with tracks—that meant the track would have no album art, and it was really annoying to see a placeholder image show up on your Discord profile. The solution…? ListenBrainz! A scrobbler application made by the same organization responsible for MusicBrainz, the database on everything song metadata. However, using ListenBrainz instead of Last.FM meant that I wouldn’t have my currently playing song show up on my Discord profile. Which obviously meant I gave up. Just kidding, I wrote my own plugin: ListenBrainz Rich Presence for Vencord. That isn’t part of my Stardance time though, I wrote that janky mess all the way back in March. I submitted this plugin as a pull request to the Vencord repository, only to get this response: Vendicated: Please merge this into the lastfm rpc plugin to avoid duplicating code And I said, sure, I can do that—then proceeded to forget all about this project for a whole month. This week, Vendicated bumped the thread, asking whether I was gonna actually do it, and that’s where our story actually starts. The idea: a unified scrobbler plugin (obviously) that accepts a variety of different backends for its status. Last.FM and ListenBrainz would be separate backends that the user could choose from. I would also make the whole fetching metadata feature a separate thing that the user could access from either backend, using MusicBrainz instead of the ListenBrainz lookup API (which requires a token now because of AI abuse.) Here’s the thing, though—I thought I would make the backend selection an enum. However, a backend tends to be more of an object than just a string—it’s got an ID, a name, a website, and tons of other properties that all have to be expressed. My initial implementation was janky as shit: interface ScrobblerBackend { name : string , id : string , url : string , userProfilePath : string ; } const ScrobblerBackends : Map < string , ScrobblerBackend > = new Map ([ [ \" lastfm \" , { name : \" Last.FM \" , id : \" lastfm \" , url : \" https://www.last.fm/ \" , userProfilePath : \" /user \" } ], [ \" listenbrainz \" , { name : \" ListenBrainz \" , id : \" listenbrainz \" , url : \" https://listenbrainz.org/ \" , userProfilePath : \" /user \" } ] ]); what the hell dawg 😭 This is partially attributed to my fairly weak understanding of TypeScript as it relates to object-oriented programming—I didn’t know how classes and inheritance actually worked. I learned OOP in Java and C#, okay 😭 this was all still kinda new to me! Obviously Vendicated caught and corrected me real quick there, and I learned that yes, inheritance is a thing. Classes can inherit interfaces. Isn’t that crazy. We construct this interface… export interface ScrobblerBackend { name : string , id : string , url : string , fetchTrackData ( username : string , apiKey ?: string ): Promise < TrackData | null > ; getUserURL ( username : string ): string ; } …and then we do export class ListenBrainzScrobbler implements ScrobblerBackend . Woohoo. Yippee."}]...
|
Title: Vencord ListenBrainz RPC by @angelcube | St Title: Vencord ListenBrainz RPC by @angelcube | Stardance
Devlogs:
for more info check out the pull request thread ListenBrainz Rich Presence in Vencord! I’ve always been a fan of tools that track your listening activity. Last.FM is a website that does exactly that! Vencord—a client mod for Discord—included a plugin that showed your Last.FM “Now Playing” as a Rich Presence activity, and I used that for a while. However, I grew increasingly dissatisfied with how Last.FM handled metadata, which is to say, it didn’t. There would be like, five different entries for one song, six for one artist, and so on and so forth. Also, oftentimes Last.FM wouldn’t associate albums with tracks—that meant the track would have no album art, and it was really annoying to see a placeholder image show up on your Discord profile. The solution…? ListenBrainz! A scrobbler application made by the same organization responsible for MusicBrainz, the database on everything song metadata. However, using ListenBrainz instead of Last.FM meant that I wouldn’t have my currently playing song show up on my Discord profile. Which obviously meant I gave up. Just kidding, I wrote my own plugin: ListenBrainz Rich Presence for Vencord. That isn’t part of my Stardance time though, I wrote that janky mess all the way back in March. I submitted this plugin as a pull request to the Vencord repository, only to get this response: Vendicated: Please merge this into the lastfm rpc plugin to avoid duplicating code And I said, sure, I can do that—then proceeded to forget all about this project for a whole month. This week, Vendicated bumped the thread, asking whether I was gonna actually do it, and that’s where our story actually starts. The idea: a unified scrobbler plugin (obviously) that accepts a variety of different backends for its status. Last.FM and ListenBrainz would be separate backends that the user could choose from. I would also make the whole fetching metadata feature a separate thing that the user could access from either backend, using MusicBrainz instead of the ListenBrainz lookup API (which requires a token now because of AI abuse.) Here’s the thing, though—I thought I would make the backend selection an enum. However, a backend tends to be more of an object than just a string—it’s got an ID, a name, a website, and tons of other properties that all have to be expressed. My initial implementation was janky as shit: interface ScrobblerBackend { name : string , id : string , url : string , userProfilePath : string ; } const ScrobblerBackends : Map < string , ScrobblerBackend > = new Map ([ [ " lastfm " , { name : " Last.FM " , id : " lastfm " , url : " https://www.last.fm/ " , userProfilePath : " /user " } ], [ " listenbrainz " , { name : " ListenBrainz " , id : " listenbrainz " , url : " https://listenbrainz.org/ " , userProfilePath : " /user " } ] ]); what the hell dawg 😭 This is partially attributed to my fairly weak understanding of TypeScript as it relates to object-oriented programming—I didn’t know how classes and inheritance actually worked. I learned OOP in Java and C#, okay 😭 this was all still kinda new to me! Obviously Vendicated caught and corrected me real quick there, and I learned that yes, inheritance is a thing. Classes can inherit interfaces. Isn’t that crazy. We construct this interface… export interface ScrobblerBackend { name : string , id : string , url : string , fetchTrackData ( username : string , apiKey ?: string ): Promise < TrackData | null > ; getUserURL ( username : string ): string ; } …and then we do export class ListenBrainzScrobbler implements ScrobblerBackend . Woohoo. Yippee.
Ships:
This is (somewhat) done—there’s still an unresolved code smell, check the PR for details. I’m going to ship this now for the Free Sticker™, but stay tuned for the merge :) Alternatively, reviewers, don’t approve this until it gets merged. That’s fine with me too! To install this, clone the repository at the source code link below ⬇️, then pnpm build. Follow the Vencord docs @ installing your custom build to install! Then, go to Settings -> Plugins -> AudioScrobblerRichPresence, open the plugin settings, and configure as needed :)...
|
1793245961.511698
|
1793332361.511698
|
|
23294
|
Togen by @melodelete | Stardance
|
melodelete
|
1
|
8.0
|
12
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T15:19:13Z", "hours": 8.0, "multiplier": 2.91, "payout": 12, "blessing": "neutral", "text": "A background application that provides quick access to a temporary text editor via a configurable global shortcut. Perfect for jotting down quick notes, code snippets, or temporary text that you don’t want to save permanently.", "repo": "https://github.com/melodelete/Togen", "demo": "https://github.com/melodelete/Togen/releases"}]...
|
[{"post_id": 15655, "ts": "202 [{"post_id": 15655, "ts": "2026-06-25T13:41:20Z", "hours": 1.1547, "text": "Currently working on a Demo So Users can try it out without any installation or Users On A different OS, You can currently try it out at https://melodelete.github.io/Togen/"}, {"post_id": 15417, "ts": "2026-06-25T01:52:02Z", "hours": 7.2486, "text": "Working on Different themes and fonts if you dont know what Im making, it is a quick note utility to quickly make changes to text which supports linux so far"}]...
|
Title: Togen by @melodelete | Stardance
Devlogs:
Title: Togen by @melodelete | Stardance
Devlogs:
Working on Different themes and fonts if you dont know what Im making, it is a quick note utility to quickly make changes to text which supports linux so far
Currently working on a Demo So Users can try it out without any installation or Users On A different OS, You can currently try it out at https://melodelete.github.io/Togen/
Ships:
A background application that provides quick access to a temporary text editor via a configurable global shortcut. Perfect for jotting down quick notes, code snippets, or temporary text that you don’t want to save permanently....
|
1793249762.449388
|
1793336162.449388
|