|
12124
|
My first slack bot! by @RTicked | Stardance
|
RTicked
|
1
|
1.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-08T10:54:22Z", "hours": 1.0, "multiplier": 1.3, "payout": 2, "blessing": "neutral", "text": "Guys check out my first ever coding project! its called superslackbot on the hackclub slack group! Commands are /dsb-hello-hi32, /dsb-joke96, /dsb-catfact62 . Hope you guys like it.", "repo": "https://github.com/rticked/stardance-slack-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0266FRGV"}]...
|
[{"post_id": 4749, "ts": "2026 [{"post_id": 4749, "ts": "2026-06-08T06:13:26Z", "hours": 1.2953, "text": "Finally got most bits of my Slack bot (the one listed in the missions) working but 1 command won’t work… Anyways does anyone know how i earn stardust? and where to learn coding? (ideally smth like duolingo.) Thanks"}]...
|
Title: My first slack bot! by @RTicked | Stardance Title: My first slack bot! by @RTicked | Stardance
Devlogs:
Finally got most bits of my Slack bot (the one listed in the missions) working but 1 command won’t work… Anyways does anyone know how i earn stardust? and where to learn coding? (ideally smth like duolingo.) Thanks
Ships:
Guys check out my first ever coding project! its called superslackbot on the hackclub slack group! Commands are /dsb-hello-hi32, /dsb-joke96, /dsb-catfact62 . Hope you guys like it....
|
1793105273.7239544
|
1793191673.7239544
|
|
12145
|
Talos V2 by @danielthedev5 | Stardance
|
danielthedev5
|
1
|
23.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-28T23:01:57Z", "hours": 23.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Talos V2 is a student directory manager using react.js and supabase! (See devlogs for more info on development!) To try the project, you can login with the username “Admin” and password “Admin” Criticism is appreciated", "repo": "https://github.com/Danx3mer/TalosV2", "demo": "https://talos-v2-alpha.vercel.app/login"}]...
|
[{"post_id": 36711, "ts": "202 [{"post_id": 36711, "ts": "2026-07-28T22:57:28Z", "hours": 0.9178, "text": "Devlog 5 - React Mumbo Jumbo React is a liar So it turns out that by default react puts the debug component in your main.jsx file. This is really cool, until you actually deploy your site (for me, I do this using github actions to vercel !) The reason for this is that one of the things that strict mode does is mount, unmount, and instantly remount your component so that any race conditions that aren’t properly handled appear to not be a problem. Since I use the useEffect hook to update my dashboard component asynchronously, this was a problem. Tricking liars To solve this, I made a new isMounted boolean. This boolean handles the control flow of the useEffect hook, which mitigates this issue! Attached below is an image of the new useEffect hook! Additonally, this project is now officially shipable, due to it being deployed on vercel! I may add tailwind css for better styling, but for now this is the first actual version of the project!"}, {"post_id": 36232, "ts": "2026-07-28T05:44:18Z", "hours": 8.5031, "text": "Devlog 4 - Supabase! What’s New? The backend of the project has been completely revamped! Instead of now accessing a local json file located on the hosted server, now the need for a server is gone thanks to the migration of the database to Supabase! Implemented authentication using supabase’s built-in auth module Used relational tables to track data about courses and user profiles in conjunction with the authentication system Pretty short devlog this time, but this pretty much summarizes everything done! Supabase is a really cool tool that I am glad to be able to add into my dev stack! View my commit history for commit-by-commit commentary on the code that I modified! Tailwind CSS incoming!"}, {"post_id": 21810, "ts": "2026-07-03T22:53:55Z", "hours": 9.6606, "text": "Devlog 3: React.js! What’s Old? I never got to go in-depth on what this is, so now would be a good time as ever to do that. This project was originally a school assignment which mandated that the legacy python CGI library was used to retrieve the data of forms instead of using something like JS to read the value of the inputs. Here are the features of the original site: Login page which would create a cookie that had user information including the user name, type, and more data pertaining to that particular user Login page would take you to the Home page on login, which would look different based on which of the contexts you were logged in as (this is basically checking if you are a school Admin , Teacher , or Student ) and would update the Navbar to include buttons linking to context -specific pages as well as the Dashboard based on this context Admin view had a Home page which would display overall school statistics Admin specific pages included pages to add or delete a course, or add, delete, or assign/remove a user from a course Teacher view had a Home page which would display courses taught and the amount of students in each course Teacher specific pages were pages to modify the grades of students, and each course would have its own page for editing the grades Student had no specific pages and would see their grades displayed in a table on the Dashboard on the Home page Navbar had a Logout button which deleted the aforementioned cookies by setting their “expires” value to 0 SuccessIndicator Indicated whether a form action succeeded or not by reading a GET request Similar pages were in one .html file and were modified based off a GET request parameter to display appropriate content What’s New? It is important to note that this is a complete rewrite of the project! The code similarity between the current state of the site and the original state (which you can view by going to the Legacy release linked here !) is minimal. I completely remade the project by making a new directory and then rebasing the newly created project onto the previous repository stack. This added my files to the GitHub repo without me having to make a new one, which was convenient. I learned how to rebase using git to do this, expanding my knowledge of git. The project has been rewritten to mostly use .jsx files instead of the mess that was using .html , .css , .js , and .py files for a single page of the website. Now, every single component (whether that be a page, a styled form, or even just a header) has its own file, which makes everything WAY MORE organized! Every single form on the website is now a <FormStyled/> which is a component that I made. To make this work I simply add a JS object which has a key-value pair notation of Input Name - OnChange handler, which makes making forms way faster. Development has overall been way more pleasing as compared to not having react.js due to the amount of new things in react! Every single interaction with things outside the DOM is now in a convenient services/ folder, which includes files such as manageCookies.js and httpRequests.js which allow me to import certain functions anywhere in the code. This is an improvement over me simply copy and pasting the same code over and over again in two different files. Speaking of organization, all files are now organized in the src/ folder by type of component/use. For example, my components which I add to the website at will are in the components/ folder while the overall page layout components are in the pages/ folder View my commit history for commit-by-commit commentary on the code that I modified! SupaBase incoming!"}, {"post_id": 15093, "ts": "2026-06-24T15:04:40Z", "hours": 2.5383, "text": "I finished the main layout of the website and it works using python’s legacy cgi library, but now I am porting it over to use contemporary technologies. Currently, the program is written in HTML, CSS, JS, and Python with no frameworks, and uses 2 JSONs as the database. The plan is to port the project over to use react.js, tailwind css for styling, supabase for the database, and possibly even creating a REST API for retrieving certain user info."}, {"post_id": 7543, "ts": "2026-06-12T16:19:42Z", "hours": 1.3044, "text": "Login page and cookies! I successfully created a cookie retrieval system for my school project. I am creating a school directory management system. The login page stores the login information as a cookie (if successful) and then the home.js file displays it! Next step: display different buttons on the side navbar based on the type of user!"}]...
|
Title: Talos V2 by @danielthedev5 | Stardance
Dev Title: Talos V2 by @danielthedev5 | Stardance
Devlogs:
Login page and cookies! I successfully created a cookie retrieval system for my school project. I am creating a school directory management system. The login page stores the login information as a cookie (if successful) and then the home.js file displays it! Next step: display different buttons on the side navbar based on the type of user!
I finished the main layout of the website and it works using python’s legacy cgi library, but now I am porting it over to use contemporary technologies. Currently, the program is written in HTML, CSS, JS, and Python with no frameworks, and uses 2 JSONs as the database. The plan is to port the project over to use react.js, tailwind css for styling, supabase for the database, and possibly even creating a REST API for retrieving certain user info.
Devlog 3: React.js! What’s Old? I never got to go in-depth on what this is, so now would be a good time as ever to do that. This project was originally a school assignment which mandated that the legacy python CGI library was used to retrieve the data of forms instead of using something like JS to read the value of the inputs. Here are the features of the original site: Login page which would create a cookie that had user information including the user name, type, and more data pertaining to that particular user Login page would take you to the Home page on login, which would look different based on which of the contexts you were logged in as (this is basically checking if you are a school Admin , Teacher , or Student ) and would update the Navbar to include buttons linking to context -specific pages as well as the Dashboard based on this context Admin view had a Home page which would display overall school statistics Admin specific pages included pages to add or delete a course, or add, delete, or assign/remove a user from a course Teacher view had a Home page which would display courses taught and the amount of students in each course Teacher specific pages were pages to modify the grades of students, and each course would have its own page for editing the grades Student had no specific pages and would see their grades displayed in a table on the Dashboard on the Home page Navbar had a Logout button which deleted the aforementioned cookies by setting their “expires” value to 0 SuccessIndicator Indicated whether a form action succeeded or not by reading a GET request Similar pages were in one .html file and were modified based off a GET request parameter to display appropriate content What’s New? It is important to note that this is a complete rewrite of the project! The code similarity between the current state of the site and the original state (which you can view by going to the Legacy release linked here !) is minimal. I completely remade the project by making a new directory and then rebasing the newly created project onto the previous repository stack. This added my files to the GitHub repo without me having to make a new one, which was convenient. I learned how to rebase using git to do this, expanding my knowledge of git. The project has been rewritten to mostly use .jsx files instead of the mess that was using .html , .css , .js , and .py files for a single page of the website. Now, every single component (whether that be a page, a styled form, or even just a header) has its own file, which makes everything WAY MORE organized! Every single form on the website is now a <FormStyled/> which is a component that I made. To make this work I simply add a JS object which has a key-value pair notation of Input Name - OnChange handler, which makes making forms way faster. Development has overall been way more pleasing as compared to not having react.js due to the amount of new things in react! Every single interaction with things outside the DOM is now in a convenient services/ folder, which includes files such as manageCookies.js and httpRequests.js which allow me to import certain functions anywhere in the code. This is an improvement over me simply copy and pasting the same code over and over again in two different files. Speaking of organization, all files are now organized in the src/ folder by type of component/use. For example, my components which I add to the website at will are in the components/ folder while the overall page layout components are in the pages/ folder View my commit history for commit-by-commit commentary on the code that I modified! SupaBase incoming!
Devlog 4 - Supabase! What’s New? The backend of the project has been completely revamped! Instead of now accessing a local json file located on the hosted server, now the need for a server is gone thanks to the migration of the database to Supabase! Implemented authentication using supabase’s built-in auth module Used relational tables to track data about courses and user profiles in conjunction with the authentication system Pretty short devlog this time, but this pretty much summarizes everything done! Supabase is a really cool tool that I am glad to be able to add into my dev stack! View my commit history for commit-by-commit commentary on the code that I modified! Tailwind CSS incoming!
Devlog 5 - React Mumbo Jumbo React is a liar So it turns out that by default react puts the debug component in your main.jsx file. This is really cool, until you actually deploy your site (for me, I do this using github actions to vercel !) The reason for this is that one of the things that strict mode does is mount, unmount, and instantly remount your component so that any race conditions that aren’t properly handled appear to not be a problem. Since I use the useEffect hook to update my dashboard component asynchronously, this was a problem. Tricking liars To solve this, I made a new isMounted boolean. This boolean handles the control flow of the useEffect hook, which mitigates this issue! Attached below is an image of the new useEffect hook! Additonally, this project is now officially shipable, due to it being deployed on vercel! I may add tailwind css for better styling, but for now this is the first actual version of the project!
Ships:
Talos V2 is a student directory manager using react.js and supabase! (See devlogs for more info on development!) To try the project, you can login with the username “Admin” and password “Admin” Criticism is appreciated...
|
1793130742.4993346
|
1793217142.4993346
|
|
12164
|
SIMOND the HackPad by @dylankchristel | Stardance
|
dylankchristel
|
1
|
7.0
|
43
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-24T18:49:41Z", "hours": 7.0, "multiplier": 5.0, "payout": 43, "blessing": "neutral", "text": "This ship is just for the design and assembly of SIMOND, not the final product yet. SIMOND is a hackpad made with a rotary encoder, 5 buttons, 4 LEDs, and an OLED controlled by a xiao rp2040. I intentionally used a diverse set of parts so that I could learn as many different branches of PCB design as possible. I started SIMOND during blueprint but didn’t get the parts until stardance started, so he’s a continuation project. I probably spent 15+20 hours on him before stardance while learning the process.", "repo": "https://github.com/dylankchristel-sudo/SIMON_the_HackPad", "demo": ""}]...
|
[{"post_id": 13751, "ts": "202 [{"post_id": 13751, "ts": "2026-06-22T15:18:22Z", "hours": 1.4692, "text": "I got around the broken mircontroller by changing the cable and some code. Then I tried to solder it to fix the orginal issue(the board doesn’t stay connected constantly). Long story short, now the board doesn’t even turn on. I think I cooked it when I was soldering."}, {"post_id": 13435, "ts": "2026-06-22T00:32:42Z", "hours": 3.2203, "text": "Tried to fix soldering issue that came up while I was writing the firmware. Ended up breaking the mirco controller in the process. But the code hypothetically works. New parts are on the way :("}, {"post_id": 7638, "ts": "2026-06-12T19:19:02Z", "hours": 2.5614, "text": "Assembled and soldered SIMOND. Also redid part of the case in Onshape"}]...
|
Title: SIMOND the HackPad by @dylankchristel | Sta Title: SIMOND the HackPad by @dylankchristel | Stardance
Devlogs:
Assembled and soldered SIMOND. Also redid part of the case in Onshape
Tried to fix soldering issue that came up while I was writing the firmware. Ended up breaking the mirco controller in the process. But the code hypothetically works. New parts are on the way :(
I got around the broken mircontroller by changing the cable and some code. Then I tried to solder it to fix the orginal issue(the board doesn’t stay connected constantly). Long story short, now the board doesn’t even turn on. I think I cooked it when I was soldering.
Ships:
This ship is just for the design and assembly of SIMOND, not the final product yet. SIMOND is a hackpad made with a rotary encoder, 5 buttons, 4 LEDs, and an OLED controlled by a xiao rp2040. I intentionally used a diverse set of parts so that I could learn as many different branches of PCB design as possible. I started SIMOND during blueprint but didn’t get the parts until stardance started, so he’s a continuation project. I probably spent 15+20 hours on him before stardance while learning the process....
|
1793119914.452373
|
1793206314.452373
|
|
12186
|
Settlers by @TotsllyRandom | Stardance
|
TotsllyRandom
|
1
|
14.0
|
29
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-30T00:56:13Z", "hours": 14.0, "multiplier": 2.08, "payout": 29, "blessing": "neutral", "text": "This is a world-generation algorithm with a basic placement system put on top. I want to, later down the road, add a survival game/co-op game on top, but it’s really draining me to work on this project since I’ve lost motivation. Thanks!", "repo": "https://github.com/TotsllyRandom/survival-game", "demo": "https://totsllyrandom.itch.io/settlers"}]...
|
[{"post_id": 18821, "ts": "202 [{"post_id": 18821, "ts": "2026-06-30T00:54:08Z", "hours": 1.0097, "text": "I’m gunna be really honest. I got so bored making this project as of a few days ago. I added the tile editing and that’s the last thing I wanted to add. I want to finish this one day, but today is NOT that day. Feel free to check the itch page, and add suggestions, but I’m not going to work on it for a while."}, {"post_id": 16360, "ts": "2026-06-26T16:47:28Z", "hours": 2.1375, "text": "I haven’t finished my tile system. BUUUT I got it exported for IOS! NOW: I haven’t got the funding to open my apple dev account just yet, so I’m more-or-less waiting to see if I can get enough hours to snag that from the shop here. Otherwise, I’ve gotten it to expand to the screen’s size on both PC and IOS! It looks great. My next order of business is to add a placement menu to place items, then to make resource generation, then finally to add save/load features for the demo to be done!"}, {"post_id": 14636, "ts": "2026-06-23T20:20:03Z", "hours": 1.9483, "text": "I’ve decided to lower my scope, and make the terrain only 1 size. this will lower how it looks (on a coolness scale,) but will make it easier to code and draw. I can always add this back later. I need YOUR feedback! do I: A - allow tiles with placed-on houses produce resources? this would shift the meta to have FULL house layouts. or B - NOT allow placed-on tiles to produce. Production would happen from the 6 tiles surrounding (if one of the tiles is producing, it must have a house surrounding to give resources.) If I choose B, should I add a distance rule, like in Catan?"}, {"post_id": 13214, "ts": "2026-06-21T17:22:23Z", "hours": 2.5336, "text": "I’ve been working on the placeable item system. My artwork for it is a bit wonky, but I’m just making things that work. The idea here (as of now) is that each tile can hold one thing, then that one thing chooses which sprite fits the tile’s height and slaps it on there. Building buildings will remove the natural stuff on top, and the tile cannot produce resources anymore. I’m not done with this system however. I need to remake it so that the placeables are a separate scene so that I dont have to make 3 for each item (one for each height.) I also need to add paths, which I’ll probably turn this system now into that) This is what it looks like now. Everybody say “hi little house” i’m going to work on the better system and the paths before I post another devlog"}, {"post_id": 11462, "ts": "2026-06-18T18:53:27Z", "hours": 2.9722, "text": "I’ve been working on the biome generation! It sucked to work on, I’ll be real, but now it’s done! Here’s the system. Each tile is made and can choose to be a part of a biome clump nearby or start its own clump. Then, after every tile has a clump, we go through each clump’s data to see if it has more than 7 tiles. if so, we change tiles into new clumps until it only has 7. This makes each clump have anywhere from 1-7 tiles, keeping the biomes small but not consistently single-tiled. The biggest issue (which isnt a big deal) is that two clumps of the same tile can spawn right next to each other. Im not sure if I’ll change this later. Also: I have variables set up for min and max amounts of clumps for each tile. I need to enforce these, but I’ll do that later. Next: I want to make placeable paths and buildings. attached are images of the current game, showung the terrain generation and one image of the largest script I have so far."}, {"post_id": 6636, "ts": "2026-06-11T03:54:13Z", "hours": 1.6019, "text": "Added some more tiles, to actually make it work well. I’m planning on adding more clumped biomes before anything else, and will do that probably tmrw"}, {"post_id": 4707, "ts": "2026-06-08T04:03:20Z", "hours": 1.7128, "text": "Some basic art for the game, as well as some placeholder tiles for the other tiles-to-be (don’t mind the project setup it’s a little rough rn.)"}]...
|
Title: Settlers by @TotsllyRandom | Stardance
Dev Title: Settlers by @TotsllyRandom | Stardance
Devlogs:
Some basic art for the game, as well as some placeholder tiles for the other tiles-to-be (don’t mind the project setup it’s a little rough rn.)
Added some more tiles, to actually make it work well. I’m planning on adding more clumped biomes before anything else, and will do that probably tmrw
I’ve been working on the biome generation! It sucked to work on, I’ll be real, but now it’s done! Here’s the system. Each tile is made and can choose to be a part of a biome clump nearby or start its own clump. Then, after every tile has a clump, we go through each clump’s data to see if it has more than 7 tiles. if so, we change tiles into new clumps until it only has 7. This makes each clump have anywhere from 1-7 tiles, keeping the biomes small but not consistently single-tiled. The biggest issue (which isnt a big deal) is that two clumps of the same tile can spawn right next to each other. Im not sure if I’ll change this later. Also: I have variables set up for min and max amounts of clumps for each tile. I need to enforce these, but I’ll do that later. Next: I want to make placeable paths and buildings. attached are images of the current game, showung the terrain generation and one image of the largest script I have so far.
I’ve been working on the placeable item system. My artwork for it is a bit wonky, but I’m just making things that work. The idea here (as of now) is that each tile can hold one thing, then that one thing chooses which sprite fits the tile’s height and slaps it on there. Building buildings will remove the natural stuff on top, and the tile cannot produce resources anymore. I’m not done with this system however. I need to remake it so that the placeables are a separate scene so that I dont have to make 3 for each item (one for each height.) I also need to add paths, which I’ll probably turn this system now into that) This is what it looks like now. Everybody say “hi little house” i’m going to work on the better system and the paths before I post another devlog
I’ve decided to lower my scope, and make the terrain only 1 size. this will lower how it looks (on a coolness scale,) but will make it easier to code and draw. I can always add this back later. I need YOUR feedback! do I: A - allow tiles with placed-on houses produce resources? this would shift the meta to have FULL house layouts. or B - NOT allow placed-on tiles to produce. Production would happen from the 6 tiles surrounding (if one of the tiles is producing, it must have a house surrounding to give resources.) If I choose B, should I add a distance rule, like in Catan?
I haven’t finished my tile system. BUUUT I got it exported for IOS! NOW: I haven’t got the funding to open my apple dev account just yet, so I’m more-or-less waiting to see if I can get enough hours to snag that from the shop here. Otherwise, I’ve gotten it to expand to the screen’s size on both PC and IOS! It looks great. My next order of business is to add a placement menu to place items, then to make resource generation, then finally to add save/load features for the demo to be done!
I’m gunna be really honest. I got so bored making this project as of a few days ago. I added the tile editing and that’s the last thing I wanted to add. I want to finish this one day, but today is NOT that day. Feel free to check the itch page, and add suggestions, but I’m not going to work on it for a while.
Ships:
This is a world-generation algorithm with a basic placement system put on top. I want to, later down the road, add a survival game/co-op game on top, but it’s really draining me to work on this project since I’ve lost motivation. Thanks!...
|
1793127167.3535168
|
1793213567.3535168
|
|
12205
|
James-Macropad by @james-lian | Stardance
|
james-lian
|
1
|
14.0
|
69
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T18:10:50Z", "hours": 14.0, "multiplier": 5.0, "payout": 69, "blessing": "neutral", "text": "I made a custom 3x4 layout macropad configured with 5 keyboard profiles! It also features a unique keylogging mechanism using a custom class KMK extension that places itself within the KMK firmware Display update loop to display to the user their inputs and key combinations. Everything is my own design, including the PCB and 3d printed CAD parts. Made with parts from the hack club hackpad kit. The keyboard profiles include: Default (includes commonly-used keys like HOME, END, arrow keys, and some Fn keys) Numpad (includes numbers) Art layer (includes common Krita hotkeys like B for brush, E for eraser, A, S, R, etc.), activated through the Toggle key Art-CTRL layer (includes common CTRL-related commands for Krita, including CTRL+A and CTRL+S), activated by holding the bottom-left modifier key on the Art layer Art-CTRL-SHIFT layer (includes common CTRL-SHIFT-related commands for Krita, including CTRL+SHIFT+A and CTRL+SHIFT+Z), activated by holding the bottom-left modifier key AND the key directly above it on the Art layer", "repo": "https://github.com/James-Lian/James-Macropad", "demo": ""}]...
|
[{"post_id": 51672, "ts": "202 [{"post_id": 51672, "ts": "2026-08-21T14:04:38Z", "hours": 5.1533, "text": "Final Devlog (build phase) PCB soldering + Assembly I’ve successfully soldered my PCB and assembled my parts using some 3d prints and the kit that arrived a while ago. There was an issue with my design where 2 out of the 6 screws in my design ended up being redundant, but it still works as-is! KMK fixes + added input display functionality I tested the KMK code that I wrote earlier and due to several errors in the code, it didn’t work. I refactored the code to fix the errors, and I also added additional functionality: Expanded the number of profiles (KMK layers) from 2 to 5 Added modifier key-like functionality (e.g. Ctrl and Shift) using the said profiles Added a custom input display class for the OLED that logs the user’s keypresses and displays the following action! Input display The OLED screen features an input display that keylogs the user the key commands and combinations that they press. Making it work was actually surprisingly hard. For one, KMK does not provide much built-in functionality to perform an action after a specific key is pressed. I decided to create my own custom class - OLEDManager - to manage the keyboard’s TextEntry’s. OLEDManager can be placed itself in the actual firmware loop of KMK by adding it to keyboard.modules - allowing it to activate after keys are pressed or after the matrix is scanned. However, this took a while for me to figure out - there was some boilerplate required that I only corrected after some trial and error. Initially, the keylogging functionality didn’t work if multiple keys were pressed at once, as KMK did not store key press events in some sort of log. I made a workaround that tracked the keypresses by adding and removing them incrementally based on the keypress and keyrelease events. After that, I ran into the issue where some keys wouldn’t be logged at all, or would only show up on the display AFTER the keys were released. This took me a really long time to figure out, but any keys that aren’t associated with layer change keys (e.g. KC.MO and KC.TG) don’t prompt any KMK Display rerenders. I could not simply update the text property of the TextEntry objects, I had to actually force a rerender after every keypress in order for the logging functionality to perform as expected."}, {"post_id": 17373, "ts": "2026-06-28T04:17:43Z", "hours": 2.7617, "text": "Just completed a simple KMK firmware for my macropad, including two keyboard layers and encoder/OLED functionality."}, {"post_id": 16141, "ts": "2026-06-26T07:27:23Z", "hours": 1.0167, "text": "Finished the casing for my macropad, including space for the heated insets + screw holes."}, {"post_id": 16109, "ts": "2026-06-26T06:15:08Z", "hours": 1.8669, "text": "Finished the basic frame of the macropad casing in Fusion! I still need to make holes for the screws + adjust some further details, but there is a frame! The way I implemented the plateless mounting style is definitely a little weird. The top half of the case has plate “cutouts”, but there’s a little bit of clearance between the MX keyswitches and the “plate”. I hope this will give my plateless macropad a bit more support"}, {"post_id": 16073, "ts": "2026-06-26T03:54:16Z", "hours": 1.4642, "text": "I completely redesigned the PCB (again) to fix an error where I forgot to leave the USB port hanging off the edge… haha. I’ve also begun the process of designing a case for the PCB in Fusion."}, {"post_id": 13380, "ts": "2026-06-21T22:28:16Z", "hours": 1.0406, "text": "Custom redesign for a 3x4 layout with a rotary encoder + an OLED. Unfortunately, Lapse glitched and I couldn’t record the PCB design process."}, {"post_id": 13140, "ts": "2026-06-21T14:24:38Z", "hours": 0.4894, "text": "Initial iteration of PCB case + PCB design"}]...
|
Title: James-Macropad by @james-lian | Stardance
Title: James-Macropad by @james-lian | Stardance
Devlogs:
Initial iteration of PCB case + PCB design
Custom redesign for a 3x4 layout with a rotary encoder + an OLED. Unfortunately, Lapse glitched and I couldn’t record the PCB design process.
I completely redesigned the PCB (again) to fix an error where I forgot to leave the USB port hanging off the edge… haha. I’ve also begun the process of designing a case for the PCB in Fusion.
Finished the basic frame of the macropad casing in Fusion! I still need to make holes for the screws + adjust some further details, but there is a frame! The way I implemented the plateless mounting style is definitely a little weird. The top half of the case has plate “cutouts”, but there’s a little bit of clearance between the MX keyswitches and the “plate”. I hope this will give my plateless macropad a bit more support
Finished the casing for my macropad, including space for the heated insets + screw holes.
Just completed a simple KMK firmware for my macropad, including two keyboard layers and encoder/OLED functionality.
Final Devlog (build phase) PCB soldering + Assembly I’ve successfully soldered my PCB and assembled my parts using some 3d prints and the kit that arrived a while ago. There was an issue with my design where 2 out of the 6 screws in my design ended up being redundant, but it still works as-is! KMK fixes + added input display functionality I tested the KMK code that I wrote earlier and due to several errors in the code, it didn’t work. I refactored the code to fix the errors, and I also added additional functionality: Expanded the number of profiles (KMK layers) from 2 to 5 Added modifier key-like functionality (e.g. Ctrl and Shift) using the said profiles Added a custom input display class for the OLED that logs the user’s keypresses and displays the following action! Input display The OLED screen features an input display that keylogs the user the key commands and combinations that they press. Making it work was actually surprisingly hard. For one, KMK does not provide much built-in functionality to perform an action after a specific key is pressed. I decided to create my own custom class - OLEDManager - to manage the keyboard’s TextEntry’s. OLEDManager can be placed itself in the actual firmware loop of KMK by adding it to keyboard.modules - allowing it to activate after keys are pressed or after the matrix is scanned. However, this took a while for me to figure out - there was some boilerplate required that I only corrected after some trial and error. Initially, the keylogging functionality didn’t work if multiple keys were pressed at once, as KMK did not store key press events in some sort of log. I made a workaround that tracked the keypresses by adding and removing them incrementally based on the keypress and keyrelease events. After that, I ran into the issue where some keys wouldn’t be logged at all, or would only show up on the display AFTER the keys were released. This took me a really long time to figure out, but any keys that aren’t associated with layer change keys (e.g. KC.MO and KC.TG) don’t prompt any KMK Display rerenders. I could not simply update the text property of the TextEntry objects, I had to actually force a rerender after every keypress in order for the logging functionality to perform as expected.
Ships:
I made a custom 3x4 layout macropad configured with 5 keyboard profiles! It also features a unique keylogging mechanism using a custom class KMK extension that places itself within the KMK firmware Display update loop to display to the user their inputs and key combinations. Everything is my own design, including the PCB and 3d printed CAD parts. Made with parts from the hack club hackpad kit. The keyboard profiles include: Default (includes commonly-used keys like HOME, END, arrow keys, and some Fn keys) Numpad (includes numbers) Art layer (includes common Krita hotkeys like B for brush, E for eraser, A, S, R, etc.), activated through the Toggle key Art-CTRL layer (includes common CTRL-related commands for Krita, including CTRL+A and CTRL+S), activated by holding the bottom-left modifier key on the Art layer Art-CTRL-SHIFT layer (includes common CTRL-SHIFT-related commands for Krita, including CTRL+SHIFT+A and CTRL+SHIFT+Z), activated by holding the bottom-left modifier key AND the key directly above it on the Art layer...
|
1793271230.4987495
|
1793357630.4987495
|
|
12209
|
Personal Website by @rainope | Stardance
|
rainope
|
1
|
0.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-26T20:37:55Z", "hours": 0.0, "multiplier": 7.81, "payout": 4, "blessing": "neutral", "text": "I built my first personal website with theme of a Japanese-inspired three.js scene. There are many cool features on my website, but I’ll just list a few here. A katana unsheathes and resheathes as you scroll, set against Hokusai-style waves, a torii gate, cherry blossoms, a stone lantern, and falling sakura petals. Plain HTML/CSS/JS was used with no framework. The hardest parts were choreographing the six-phase katana animation across seven scroll-synced camera keyframes, and keeping the scene performant given the custom wave/moon shaders, five streamed 3D models, and DOM-based petals all running together. I’m proud of the clip-plane solution, the performance optimizations, and accessibility (touch handling, reduced motion, etc). Additionally, a fun learning experience was when I was scavenging the internet (sketchfab) for high quality 3d .glb models and using blender to make minor adjustments. When testing it, users should know it must be served over HTTP (cannot be opened as a file). Give the website a few moments to load the 3d models, and scroll slowly to catch the choreography.", "repo": "https://github.com/eric-feng14/personal-website", "demo": "https://personal-website.14ericfeng.workers.dev/"}]...
|
[{"post_id": 4711, "ts": "2026 [{"post_id": 4711, "ts": "2026-06-08T04:12:46Z", "hours": 0.4969, "text": "Added a readme to explain how the website works. Otherwise enjoy the visuals!"}]...
|
Title: Personal Website by @rainope | Stardance
D Title: Personal Website by @rainope | Stardance
Devlogs:
Added a readme to explain how the website works. Otherwise enjoy the visuals!
Ships:
I built my first personal website with theme of a Japanese-inspired three.js scene. There are many cool features on my website, but I’ll just list a few here. A katana unsheathes and resheathes as you scroll, set against Hokusai-style waves, a torii gate, cherry blossoms, a stone lantern, and falling sakura petals. Plain HTML/CSS/JS was used with no framework. The hardest parts were choreographing the six-phase katana animation across seven scroll-synced camera keyframes, and keeping the scene performant given the custom wave/moon shaders, five streamed 3D models, and DOM-based petals all running together. I’m proud of the clip-plane solution, the performance optimizations, and accessibility (touch handling, reduced motion, etc). Additionally, a fun learning experience was when I was scavenging the internet (sketchfab) for high quality 3d .glb models and using blender to make minor adjustments. When testing it, users should know it must be served over HTTP (cannot be opened as a file). Give the website a few moments to load the 3d models, and scroll slowly to catch the choreography....
|
1793220533.09427
|
1793306933.09427
|
|
12275
|
My first slack bot! by @hammaadkhawaja | Stardance
|
hammaadkhawaja
|
1
|
1.71
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-09T01:17:24Z", "hours": 1.0, "multiplier": 1.09, "payout": 1, "blessing": "neutral", "text": "I made my first ever slack bot for my channel #the-hats, it currently has 3 commands and runs 24/7. To test my bot you can go to any slack channel and use any of the 3 commands: /hat-joke, /hat-flip and /hat-ping. All 3 command have their purpose and I will be using them for my channel", "repo": "https://github.com/HammaadKhawja/Slack-Channel-Bot", "demo": "https://app.slack.com/client/E09V59WQY1E/C092D58JBUZ"}]...
|
[{"post_id": 10365, "ts": "202 [{"post_id": 10365, "ts": "2026-06-17T01:27:27Z", "hours": 0.7081, "text": "Alright after some time of running this bot, I ran into the problem of everyone being able to use the ping cmd, I tried hard to make it so that only I can use the cmd but it did not work so I had to take down the bot so for now the HAT_BOT is down but I will update it when I have confirmed that the ping cmd can only be used by me and not anyone in any channel."}, {"post_id": 4778, "ts": "2026-06-08T08:31:25Z", "hours": 0.5761, "text": "Finally I was able to make my bot 24/7 using Nest and now it works wonders! Maybe in the future I will edit it to add more commands but for now I am happy with it as it currently is!"}, {"post_id": 4752, "ts": "2026-06-08T06:18:42Z", "hours": 0.3308, "text": "I was able to finish the bot, I changed the ping to actually ping the channel, and I added a cmd for it to be able to tell a joke! Now all that is left is to upload it to github and ship the project!"}, {"post_id": 4739, "ts": "2026-06-08T05:43:37Z", "hours": 0.4692, "text": "I am currently trying to make the slack bot code work and I have just finished it so I just have to test if the bot works in my channel or not!"}]...
|
Title: My first slack bot! by @hammaadkhawaja | St Title: My first slack bot! by @hammaadkhawaja | Stardance
Devlogs:
I am currently trying to make the slack bot code work and I have just finished it so I just have to test if the bot works in my channel or not!
I was able to finish the bot, I changed the ping to actually ping the channel, and I added a cmd for it to be able to tell a joke! Now all that is left is to upload it to github and ship the project!
Finally I was able to make my bot 24/7 using Nest and now it works wonders! Maybe in the future I will edit it to add more commands but for now I am happy with it as it currently is!
Alright after some time of running this bot, I ran into the problem of everyone being able to use the ping cmd, I tried hard to make it so that only I can use the cmd but it did not work so I had to take down the bot so for now the HAT_BOT is down but I will update it when I have confirmed that the ping cmd can only be used by me and not anyone in any channel.
Ships:
I made my first ever slack bot for my channel #the-hats, it currently has 3 commands and runs 24/7. To test my bot you can go to any slack channel and use any of the 3 commands: /hat-joke, /hat-flip and /hat-ping. All 3 command have their purpose and I will be using them for my channel...
|
1793231429.0111516
|
1793317829.0111516
|
|
12432
|
SlackyssaLiu - Slack Bot by @AidenHammy | Stardanc SlackyssaLiu - Slack Bot by @AidenHammy | Stardance...
|
AidenHammy
|
1
|
7.39
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T12:42:18Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Started as a standard “first Slack bot” with catfacts, jokes, quotes, the usual starter-project stuff. It was redesigned into something actually worth using. A space-themed bot that tracks the ISS in real time, counts down to the next rocket launch, posts NASA’s daily astronomy photo (with zero effort on your part) and pulls random Mars rover photos on demand. It also remembers things now. SQLite-backed mission logs per channel and custom callsigns per user and shows up uninvited with scheduled posts instead of only responding when poked. Built with Node.js + Slack Bolt (Socket Mode, no public URL needed), SQLite for persistence, node-cron for scheduling and free APIs (Open Notify, NASA, Launch Library 2) for the live data. Deployed and running 24/7 on Hack Club Nest.", "repo": "https://github.com/AidenHammy/SlackyssaLiu", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 67226, "ts": "202 [{"post_id": 67226, "ts": "2026-09-13T08:58:32Z", "hours": 3.3922, "text": "Devlog 3: Three Hours of My Life I’m Never Getting Back (And Slack’s Media Renderer Can Thank Me For It) The false confidence I thought the bot was done. I really did. The commands worked, the database was syncing, the cron jobs were firing. It was a fully functional space bot. I sat down to do what I thought would be a 15-min final polish before shipping. Three hours later, I was found questioning my reality and whether I should just delete the folder and take up farming. What started as a quick polish turned into a full-blown war against dead community APIs, Slack’s deeply picky Block Kit renderer and the absolute garbage fire that is Node.js DNS resolution on free hosting platforms. The dead API saga First, /skl-mars completely died. Not a graceful failure. Not a friendly JSON error. It just silently redirected to a GitHub Pages 404 HTML page. Axios, bless its optimistic little heart, tried to parse that HTML as JSON, choked and took the whole bot down with it. I made the executive decision to ditch that entirely. The rover is probably tired of taking photos anyway. I swapped it out for NASA’s EPIC API, which takes photos of Earth from the DSCOVR satellite. But EPIC had its own trap. If you just ask for the “most recent” photos, it returns a tiny array of about 13 photos from the last active day. The bot kept spamming the exact same image of Earth. I had to rewrite the endpoint to fetch the archive of all available dates, shuffle the entire history of the satellite and pull a random day from the past just to get some variety. Then, the Open Notify API (used for ISS location and crew data) went offline too. Same GitHub 404 redirect. I had to write nested try/catch fallbacks with 5-second timeouts to route requests to wheretheiss.at just to keep the telemetry commands alive. It was a war of attrition against community-run infrastructure. Slack Block Kit & the APOD nightmare Getting the APOD (/skl-apod) to actually render in the chat was an absolute nightmare. Originally, the bot just dropped a raw URL into the chat. Slack looked at it and said “Cool link, not displaying it” so I rebuilt the command using Slack’s Block Kit image block. That fixed images. But.. a video? Because of course, if you pass an .mp4 URL into an image block, Slack silently drops the message entirely. I had to write logic to check the media_type: if it was a YouTube link, I parsed the URL and rendered it using Slack’s native video block. If it was a raw .mp4, I had to stream the video file directly into Slack using filesUploadV2 so it would embed and play right in the chat. And to prevent the bot from OOM-crashing the server on large videos, I had to use responseType: \"stream\" so it chunked the download instead of loading a 50MB video into RAM all at once. The Nest hosting quirk Right when I thought I was victorious, APOD and Earth started failing with getaddrinfo ENOTFOUND api.nasa.gov . After staring at my screen wondering if I had forgotten how URLs work, I learned that Node.js 17+ defaults to IPv6 for DNS resolution and the hosting platform (Nest) doesn’t fully support IPv6 routing. The server literally couldn’t find NASA. Adding dns.setDefaultResultOrder('ipv4first') to the top of the service file fixed it instantly. Extremely normal behavior, I love computers. The actual architecture shift Amidst all the API firefighting, I also ripped out the hardcoded .env channel routing. Making someone edit a .env file just to move a bot to a new channel is a crime. I moved the scheduled announcements to a SQLite-backed system with /skl-setup and /skl-unset commands so the bot could support multiple servers dynamically without touching environment variables. What started as a simple script turned into a much more reliable bot with backup APIs, saved data, scheduled posts and the ability to handle images and videos directly in Slack. It was hella exhausting, my brain is completely fried but atleast it’s done."}, {"post_id": 64173, "ts": "2026-09-08T12:10:49Z", "hours": 2.9514, "text": "Devlog: SlackyssaLiu Went to Space (and I Forgot to Write Any of This Down) The itch SlackyssaLiu started as a pretty standard first Slack bot. Slash commands, a few API wrappers, the usual suspects: catfacts, jokes, quotes, echo, ping, some sneeze/wave filler commands for personality. It worked fine. It also looked exactly like every other “my first slackbot” project out there because it basically followed the same recipe everyone does. Integrate a joke API, integrate a weather-adjacent API, call it done. I wanted to know how to make it stand out so I asked around for ideas. The answer was pretty obvious in hindsight. Stop building the demo everyone builds and build something around an actual theme with actual state instead of a stateless command list wrapped around whatever free API came up first. I bounced between a few themes.. figure skating (RIP, no usable free API), medieval history (also no API, just Wikipedia scraping, hard pass) and space. Space won because it had exactly what I needed. Solid free APIs with no bureaucracy (Open Notify needs zero auth, NASA’s API just needs a free key) and enough surface area to build something that actually feels alive instead of just answering when poked. What actually changed This ended up being a full redesign not a patch job. Rough shape of it (RIP to /skl-achoo, you were doing your best). Killed the old command set! No more catfact/joke/quote/echo/achoo/wave. None of it fit the new direction and it was the generic stuff I was trying to get away from in the first place. A moment of silence for the bot that could sneeze but not tell you when a rocket was launching. New space-themed commands: /skl-iss and /skl-crew (Open Notify, no key needed), /skl-launch (Launch Library 2, with an actual countdown for maximum dramatic tension), /skl-apod and /skl-mars (NASA’s API, APOD + random Curiosity rover photos the rover did not consent to being featured but also cannot complain). Added actual persistence. SQLite via better-sqlite3. This was the real shift. The old bot had the memory of a goldfish with amnesia. It never remembered anything between requests. Now it tracks mission logs per channel, user callsigns and which launches it’s already announced (so it doesn’t spam the same countdown twice like an overeager intern). Added scheduled behavior. node-cron jobs that post NASA’s picture of the day every morning and ping the channel when a launch is within the hour. This is the part I think actually makes it feel like a running thing instead of a command list. It does stuff without being asked which is more initiative than I show most mornings. I gave it an actual personality module! pulled every joke/flavor line out of the command handlers and centralized them in personality.js. Went through two tone passes because apparently I couldn’t decide if the bot should sound like a stoic AI from a space movie or like it’s been on Twitter since 2019. It landed somewhere in between and honestly that’s a personality a lot of people have. Having it centralized meant the whole voice-swap was a single-file change instead of hunting through every command like a raccoon going through someone’s trash. Fixed real bugs from the original file along the way, typos that would’ve crashed the bot. cool, cool, very cool, glad I caught that before it caught me. Why I forgot to log any of this Short version, I was moving fast across a lot of files at once. db setup, service wrappers, command rewiring, personality, scheduler and treated it like “just get it working” instead of “document as I go”. I was working on a lot of projects at the same time and this was something I did just after finding about Stardance so I barely remembered to ship it. But I’m doing so now, several weeks late, riding in on a horse made of retroactive commit messages. I barely had any brainpower left for side projects at 1am because of my “awesome” uni."}, {"post_id": 5868, "ts": "2026-06-09T20:22:36Z", "hours": 1.3881, "text": "Devlog 1 — Building SlackyssaLiu (Slack Bot) What I set out to build: Create a simple Slack bot that can respond to slash commands in real time and make interactions inside a workspace more dynamic and useful. How I approached it: I started by following Stardance’s mission guide to understand how Slack apps connect to a backend and handle real-time events. After setting up the base bot with Socket Mode and environment variables, I focused on implementing slash commands and structuring them in a clean and scalable way. What I built: A deployed Slack bot running 24/7 with real-time command handling A working Slack bot using Node.js and the Bolt framework Multiple slash commands such as: /skl-ping for latency checking /skl-echo for message reflection /skl-time and /skl-date for utility /skl-help for command discovery API integrations: Cat facts using an external API Random jokes Inspirational quotes Basic error handling for API failures A consistent command-response structure using async functions Deployment: The bot is deployed and runs continuously 24/7, allowing it to respond to Slack commands in real time without requiring a local environment. This helped me understand how to keep services running beyond development and make the bot usable in a live workspace. What I learned: How Slack’s Bolt framework handles commands and events The importance of ack() in Slack interactions How to structure asynchronous command handlers How to integrate external APIs into a Node.js application How to handle failures gracefully using try-catch Challenges I faced: Understanding how Slack’s command lifecycle works Managing async responses correctly without breaking Slack’s timing requirements Debugging API responses and ensuring consistent formatting What I improved beyond the mission guide: While the initial setup followed Stardance’s mission guide, I expanded the bot by adding multiple custom commands and integrating external APIs to make it more interactive and useful. Future improvements: Add command history or logging Introduce smarter responses or context awareness Improve response formatting for better readability Expand the command set with more utility features Final thoughts: This project helped me understand how real-time systems work and how to build something that interacts with users in a live environment. It started with guided steps and evolved into a customizable and extendable Slack bot."}]...
|
Title: SlackyssaLiu - Slack Bot by @AidenHammy | S Title: SlackyssaLiu - Slack Bot by @AidenHammy | Stardance
Devlogs:
Devlog 1 — Building SlackyssaLiu (Slack Bot) What I set out to build: Create a simple Slack bot that can respond to slash commands in real time and make interactions inside a workspace more dynamic and useful. How I approached it: I started by following Stardance’s mission guide to understand how Slack apps connect to a backend and handle real-time events. After setting up the base bot with Socket Mode and environment variables, I focused on implementing slash commands and structuring them in a clean and scalable way. What I built: A deployed Slack bot running 24/7 with real-time command handling A working Slack bot using Node.js and the Bolt framework Multiple slash commands such as: /skl-ping for latency checking /skl-echo for message reflection /skl-time and /skl-date for utility /skl-help for command discovery API integrations: Cat facts using an external API Random jokes Inspirational quotes Basic error handling for API failures A consistent command-response structure using async functions Deployment: The bot is deployed and runs continuously 24/7, allowing it to respond to Slack commands in real time without requiring a local environment. This helped me understand how to keep services running beyond development and make the bot usable in a live workspace. What I learned: How Slack’s Bolt framework handles commands and events The importance of ack() in Slack interactions How to structure asynchronous command handlers How to integrate external APIs into a Node.js application How to handle failures gracefully using try-catch Challenges I faced: Understanding how Slack’s command lifecycle works Managing async responses correctly without breaking Slack’s timing requirements Debugging API responses and ensuring consistent formatting What I improved beyond the mission guide: While the initial setup followed Stardance’s mission guide, I expanded the bot by adding multiple custom commands and integrating external APIs to make it more interactive and useful. Future improvements: Add command history or logging Introduce smarter responses or context awareness Improve response formatting for better readability Expand the command set with more utility features Final thoughts: This project helped me understand how real-time systems work and how to build something that interacts with users in a live environment. It started with guided steps and evolved into a customizable and extendable Slack bot.
Devlog: SlackyssaLiu Went to Space (and I Forgot to Write Any of This Down) The itch SlackyssaLiu started as a pretty standard first Slack bot. Slash commands, a few API wrappers, the usual suspects: catfacts, jokes, quotes, echo, ping, some sneeze/wave filler commands for personality. It worked fine. It also looked exactly like every other “my first slackbot” project out there because it basically followed the same recipe everyone does. Integrate a joke API, integrate a weather-adjacent API, call it done. I wanted to know how to make it stand out so I asked around for ideas. The answer was pretty obvious in hindsight. Stop building the demo everyone builds and build something around an actual theme with actual state instead of a stateless command list wrapped around whatever free API came up first. I bounced between a few themes.. figure skating (RIP, no usable free API), medieval history (also no API, just Wikipedia scraping, hard pass) and space. Space won because it had exactly what I needed. Solid free APIs with no bureaucracy (Open Notify needs zero auth, NASA’s API just needs a free key) and enough surface area to build something that actually feels alive instead of just answering when poked. What actually changed This ended up being a full redesign not a patch job. Rough shape of it (RIP to /skl-achoo, you were doing your best). Killed the old command set! No more catfact/joke/quote/echo/achoo/wave. None of it fit the new direction and it was the generic stuff I was trying to get away from in the first place. A moment of silence for the bot that could sneeze but not tell you when a rocket was launching. New space-themed commands: /skl-iss and /skl-crew (Open Notify, no key needed), /skl-launch (Launch Library 2, with an actual countdown for maximum dramatic tension), /skl-apod and /skl-mars (NASA’s API, APOD + random Curiosity rover photos the rover did not consent to being featured but also cannot complain). Added actual persistence. SQLite via better-sqlite3. This was the real shift. The old bot had the memory of a goldfish with amnesia. It never remembered anything between requests. Now it tracks mission logs per channel, user callsigns and which launches it’s already announced (so it doesn’t spam the same countdown twice like an overeager intern). Added scheduled behavior. node-cron jobs that post NASA’s picture of the day every morning and ping the channel when a launch is within the hour. This is the part I think actually makes it feel like a running thing instead of a command list. It does stuff without being asked which is more initiative than I show most mornings. I gave it an actual personality module! pulled every joke/flavor line out of the command handlers and centralized them in personality.js. Went through two tone passes because apparently I couldn’t decide if the bot should sound like a stoic AI from a space movie or like it’s been on Twitter since 2019. It landed somewhere in between and honestly that’s a personality a lot of people have. Having it centralized meant the whole voice-swap was a single-file change instead of hunting through every command like a raccoon going through someone’s trash. Fixed real bugs from the original file along the way, typos that would’ve crashed the bot. cool, cool, very cool, glad I caught that before it caught me. Why I forgot to log any of this Short version, I was moving fast across a lot of files at once. db setup, service wrappers, command rewiring, personality, scheduler and treated it like “just get it working” instead of “document as I go”. I was working on a lot of projects at the same time and this was something I did just after finding about Stardance so I barely remembered to ship it. But I’m doing so now, several weeks late, riding in on a horse made of retroactive commit messages. I barely had any brainpower left for side projects at 1am because of my “awesome” uni.
Devlog 3: Three Hours of My Life I’m Never Getting Back (And Slack’s Media Renderer Can Thank Me For It) The false confidence I thought the bot was done. I really did. The commands worked, the database was syncing, the cron jobs were firing. It was a fully functional space bot. I sat down to do what I thought would be a 15-min final polish before shipping. Three hours later, I was found questioning my reality and whether I should just delete the folder and take up farming. What started as a quick polish turned into a full-blown war against dead community APIs, Slack’s deeply picky Block Kit renderer and the absolute garbage fire that is Node.js DNS resolution on free hosting platforms. The dead API saga First, /skl-mars completely died. Not a graceful failure. Not a friendly JSON error. It just silently redirected to a GitHub Pages 404 HTML page. Axios, bless its optimistic little heart, tried to parse that HTML as JSON, choked and took the whole bot down with it. I made the executive decision to ditch that entirely. The rover is probably tired of taking photos anyway. I swapped it out for NASA’s EPIC API, which takes photos of Earth from the DSCOVR satellite. But EPIC had its own trap. If you just ask for the “most recent” photos, it returns a tiny array of about 13 photos from the last active day. The bot kept spamming the exact same image of Earth. I had to rewrite the endpoint to fetch the archive of all available dates, shuffle the entire history of the satellite and pull a random day from the past just to get some variety. Then, the Open Notify API (used for ISS location and crew data) went offline too. Same GitHub 404 redirect. I had to write nested try/catch fallbacks with 5-second timeouts to route requests to wheretheiss.at just to keep the telemetry commands alive. It was a war of attrition against community-run infrastructure. Slack Block Kit & the APOD nightmare Getting the APOD (/skl-apod) to actually render in the chat was an absolute nightmare. Originally, the bot just dropped a raw URL into the chat. Slack looked at it and said “Cool link, not displaying it” so I rebuilt the command using Slack’s Block Kit image block. That fixed images. But.. a video? Because of course, if you pass an .mp4 URL into an image block, Slack silently drops the message entirely. I had to write logic to check the media_type: if it was a YouTube link, I parsed the URL and rendered it using Slack’s native video block. If it was a raw .mp4, I had to stream the video file directly into Slack using filesUploadV2 so it would embed and play right in the chat. And to prevent the bot from OOM-crashing the server on large videos, I had to use responseType: "stream" so it chunked the download instead of loading a 50MB video into RAM all at once. The Nest hosting quirk Right when I thought I was victorious, APOD and Earth started failing with getaddrinfo ENOTFOUND api.nasa.gov . After staring at my screen wondering if I had forgotten how URLs work, I learned that Node.js 17+ defaults to IPv6 for DNS resolution and the hosting platform (Nest) doesn’t fully support IPv6 routing. The server literally couldn’t find NASA. Adding dns.setDefaultResultOrder('ipv4first') to the top of the service file fixed it instantly. Extremely normal behavior, I love computers. The actual architecture shift Amidst all the API firefighting, I also ripped out the hardcoded .env channel routing. Making someone edit a .env file just to move a bot to a new channel is a crime. I moved the scheduled announcements to a SQLite-backed system with /skl-setup and /skl-unset commands so the bot could support multiple servers dynamically without touching environment variables. What started as a simple script turned into a much more reliable bot with backup APIs, saved data, scheduled posts and the ability to handle images and videos directly in Slack. It was hella exhausting, my brain is completely fried but atleast it’s done.
Ships:
Started as a standard “first Slack bot” with catfacts, jokes, quotes, the usual starter-project stuff. It was redesigned into something actually worth using. A space-themed bot that tracks the ISS in real time, counts down to the next rocket launch, posts NASA’s daily astronomy photo (with zero effort on your part) and pulls random Mars rover photos on demand. It also remembers things now. SQLite-backed mission logs per channel and custom callsigns per user and shows up uninvited with scheduled posts instead of only responding when poked. Built with Node.js + Slack Bolt (Socket Mode, no public URL needed), SQLite for persistence, node-cron for scheduling and free APIs (Open Notify, NASA, Launch Library 2) for the live data. Deployed and running 24/7 on Hack Club Nest....
|
1793145368.8166556
|
1793231768.8166556
|
|
12505
|
Cybertron-S0 by @deepm33 | Stardance
|
deepm33
|
1
|
25.0
|
208
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-09T16:05:28Z", "hours": 21.0, "multiplier": 12.86, "payout": 208, "blessing": "neutral", "text": "Made a webos based on the concept transformers and futuristic way of an webos. Added a pixel cat which follows the cursor in the whole webos, it has an energon radio so that people can listen to the best japanese songs. It also has a feature to change between many live wallpaper which makes the webos experience muchh better. checkk out other features too, ya can doomscrool in the webos too😁", "repo": "https://github.com/DeepMane33/webos", "demo": "https://cybertron-os.vercel.app/"}]...
|
[{"post_id": 27332, "ts": "202 [{"post_id": 27332, "ts": "2026-07-12T20:23:07Z", "hours": 4.0, "text": "So basically someone told me to upgrade my cybertron -os in a more cyber and futuristic vibe so that it matches the style, so i made it a little transformer and cyber ahh feeling webos. I redesigned all the app icons which took a lot of my time a cause i didn’t knew what and how should i re-design them, so i thought for too long and came up with these icons. These icons look way more futuristic and holographic than before and i guess much better too. Also i changed the cyber-cat into a robot so that the vibes would match the cyber effect and not like the previous one 🥀🥀. That 0.06 lag factor means the robot only moves 6% of the remaining distance toward your cursor each frame. So it never quite catches up — it smoothly glides and drifts. When you stop moving, it slowly settles into place near your cursor. When you move fast, it trails behind like it’s trying to keep up. Added a SVG analog clock with smooth second hand using requestAnimationFrame for millisecond precision, digital display, timezone info, plus tabs for a stopwatch and countdown timer. This clock and the calender has made the UI a lot better than before.Also made a search bar, this one sits right at the top of the desktop. It’s a slim, always-visible search field with a magnifying glass icon. You just click on it and start typing to filter your apps. It’s the quick, “I know what I want” kind of search. No shortcuts needed — just eyes on it and type. So when you set a static image as the wallpaper, Cybertron OS doesn’t just slap it on the background — it gives it a subtle parallax effect that makes it feel alive. The wallpaper image is loaded into a #desktop-bg div and scaled up to 1.1x (110% size), so it’s slightly bigger than the screen. That extra 10% is the buffer that allows it to move without showing edges. Then, every time you move your mouse, the wallpaper shifts in the opposite direction of your cursor by up to 20 pixels on each axis. So if you move your mouse right, the wallpaper slides left — like you’re looking through a window and the background is further away. This creates a layered depth effect: the orbs feel closer to you, the wallpaper feels farther away, and your cursor is in the middle. The whole thing has a transition: transform 0.3s ease-out so it doesn’t feel jerky — it smoothly glides to its new position. When you switch to a video wallpaper, the parallax turns off because a video is already moving on its own. It’s a small touch, but it makes the desktop feel way more premium than a static background image ever would. So about the taskbar in Cybertron OS is inspired by Windows but with its own flavor. It sits at the bottom of the screen and it is fixed there, 48 pixels tall, with a heavy blur behind it (backdrop-filter: blur(50px)) so it looks like frosted glass over whatever’s behind it. There’s a subtle white gradient line along the top edge and a faint amber glow along the bottom — it gives it that premium “this bar is floating” feel. After making all these changes the cybertron-os has became a different OS, i hope yall like this!!!!"}, {"post_id": 25333, "ts": "2026-07-09T15:42:50Z", "hours": 3.0, "text": "Bruhhh finally i can say that i have completed my cybertron-os. I think i have done most of the think i can come up with and have added all the necessary things that are found in a webos. The pixel cat that follows your cursor around the screen i have added some features in it too and now its a whole interactive pet: Single click → pin/unpin the cat in place Double-click → pet the cat (triggers meow + purr + floating hearts animation) The cat flips direction based on mouse movement It has a smooth follow-with-lag animation So here’s the thing. Previously I didn’t had a single audio file. No .mp3s. No .wavs. Nothing. So there were no sound feature in the webos which made it kinda plain so i thought i should add some’. There’s this thing called the Web Audio API built into every browser. It lets you create sounds using something called oscillators — basically digital instruments that generate tones. You tell it a pitch, a wave shape, and how long to play, and it just… makes the sound.The reason the sounds don’t just sound like boring beeps is because of something called exponentialRampToValueAtTime. Yeah I know, sounds like a villain’s weapon. But what it does is slide the pitch from one frequency to another over time. So instead of just “BEEP” you get “bewwwoop” — the sound goes UP or DOWN smoothly. That’s what gives it that swooshy, futuristic feel. I looked at all the color comnbinations with the wallpaper and i saw that the miku wallpaper looks very futuristic and classical just as i want with purple colour. So i set them as the default and if you want you can change the wallpaper and the theme colour as your preferences. The holo archieve which is the gallery of my cybertron-os was legit empty. I thought and thought and then i added some pictures of transformers movies and our fav bumble bee.. In the cybertron store we were not able to download any apps and it was just and empty ahh store, so yeahh i added some apps that can actually be installed and used in the webos and then i added some good looking app icons for them too cause i didn’t wanted them to look too plain."}, {"post_id": 24660, "ts": "2026-07-08T12:01:48Z", "hours": 2.0, "text": "Finalyyy i added the optimus prime wallpaper in the Cybertron os which now makes it look like a real tranaformer fan made webos. I really want that this cybertron os look as much as futuristic as well as classical as it can. i made many changes then before and also i redesigned the app icons for the cybertron os so that they look classic and technical not just plain app icon. There were few things which were needed to be fixed like there was no option to stop a short video in the shorts section and also no option for mute and unmute like it got so annoying when i wanted to stop the video or mute when i was testing the webos. So I Added those features and now the short section runs smooth videos like i expect it to. Even the theme changing option was broken like clicking on “Autobot” (red theme) did nothing, it was suppost to make everything go like legit RED but lmao no. The accent color stayed purple and i Spentway too long on this than i should have originally. The old wallpaper app was just a header + a 2-column grid of cards and looked like a prototype. No visual hierarchy, no preview of the current wallpaper, no hover feedback. To fix this i rebuilt renderWallpaperApp() and the entire .wp-app CSS section: added a hero section at the top (180px) that shows either the current video wallpaper playing on loop, or a gradient placeholder for the default. this gives instant visual feedback on what’s active. added an overlay on the hero with the current wallpaper name and “Wallpaper Studio” title and made the transition smoother. Also in the settings, it had 4 nav items: Faction Theme, Display, Wallpapers, About. The Display section had brightness slider, font size, and a widget toggle. the brightness and font controls didn’t actually do anything (they set inline styles that got overwritten on re-render). dead features. So i removed the display option which didn’t changed anything and merged the working features in the faction. I also redeigned the energon radio which is the songs section in the cybertron os in that the big album cover art (240px tall) that takes up the top portion. There’s a gradient fade at the bottom so it blends into the dark background. The cover image is blurred behind the main art, giving it a premium vibe. Controls — three buttons in a row: previous, play/pause (big white circle), next. Buttons scale up slightly on hover. Few more changes and we are good to go."}, {"post_id": 21024, "ts": "2026-07-02T19:54:15Z", "hours": 14.0, "text": "So i have made the cybertron os and i just took a look at the desktop screen, and honestly, the vibe is unmatched. the whole interface looks sick—that deep, dark metallic aesthetic with the striking purple accents looks exactly like a high-tech console you’d find inside the nemesis or deep within a decepticon base. It’s finally starting to feel like a fully functioning battlestation instead of just a static page. i’ve spent way too many unholy hours getting this dark, metallic decepticon-purple aesthetic right, and honestly, i’m so proud of how far it’s come. here is the breakdown of what is running on the mainframe right now: - the 3d video wallpapers are a whole cheat code. they are fully changeable with this slick floating control panel. you can legit change your wallpaper animations to go from miku just going through your screen to a mythical ahh dragon. - draggability actually works!! you can grab any of the app windows—like the gorgeous translucent glass panel calculator—and drag them all over the desktop without the window manager having a mental breakdown. the snapping is incredibly satisfying, and the z-indexing behaves itself when stacking windows. - I added an active search bar on the desktop that will take you to google or any youtube video because sometimes you need to query the actual internet. You can type right into the google search input, hit enter and it does exactly what you expect. Useful for when you're trying to figure out how to do your math equations at 3 AM. - let's talk about the pixel cat. i like cats so now there is a literal cyber-cat sitting on the desktop that trails your cursor. it has a slight elastic delay so it smoothly glides behind the mouse like a tiny holographic familiar following you through the mainframe. and yes, you can actually click to pet it and it fires off a literal heart-burst animation! ❤️🐾 - the music player actually has some of the finest work of music by the japanes pop, it has got the best japanese songs you will ever need to hear. HTML5 audio handles the entire play/pause/progress tracking natively under the hood. - a simulated files app that lets you navigate through directory nodes directly on the desktop to organize your decepticon battle plans and yeah this still needs an upgrade i guess. -Of course how can i forget the doomscrolling shorts app. yes, i actually did it. i built a dedicated video player with a scrollable feed of vertical reels. It starts with the audio ON, supports real-time pausing when you unfocus the window (so it doesn't keep playing in the background like an annoying browser tab), and lets you cycle through random clips of transformers edits and other random aesthetic shorts whenever your brain needs a cheap dopamine hit. -The whole look is incredibly polished. we've got custom SVG icons sitting inside the dock instead of cheap-looking emojis, a glassmorphic top-bar system showing the time and battery life, and desaturated purple accents that hold the entire sci-fi interface together."}]...
|
Title: Cybertron-S0 by @deepm33 | Stardance
Devlo Title: Cybertron-S0 by @deepm33 | Stardance
Devlogs:
So i have made the cybertron os and i just took a look at the desktop screen, and honestly, the vibe is unmatched. the whole interface looks sick—that deep, dark metallic aesthetic with the striking purple accents looks exactly like a high-tech console you’d find inside the nemesis or deep within a decepticon base. It’s finally starting to feel like a fully functioning battlestation instead of just a static page. i’ve spent way too many unholy hours getting this dark, metallic decepticon-purple aesthetic right, and honestly, i’m so proud of how far it’s come. here is the breakdown of what is running on the mainframe right now: - the 3d video wallpapers are a whole cheat code. they are fully changeable with this slick floating control panel. you can legit change your wallpaper animations to go from miku just going through your screen to a mythical ahh dragon. - draggability actually works!! you can grab any of the app windows—like the gorgeous translucent glass panel calculator—and drag them all over the desktop without the window manager having a mental breakdown. the snapping is incredibly satisfying, and the z-indexing behaves itself when stacking windows. - I added an active search bar on the desktop that will take you to google or any youtube video because sometimes you need to query the actual internet. You can type right into the google search input, hit enter and it does exactly what you expect. Useful for when you're trying to figure out how to do your math equations at 3 AM. - let's talk about the pixel cat. i like cats so now there is a literal cyber-cat sitting on the desktop that trails your cursor. it has a slight elastic delay so it smoothly glides behind the mouse like a tiny holographic familiar following you through the mainframe. and yes, you can actually click to pet it and it fires off a literal heart-burst animation! ❤️🐾 - the music player actually has some of the finest work of music by the japanes pop, it has got the best japanese songs you will ever need to hear. HTML5 audio handles the entire play/pause/progress tracking natively under the hood. - a simulated files app that lets you navigate through directory nodes directly on the desktop to organize your decepticon battle plans and yeah this still needs an upgrade i guess. -Of course how can i forget the doomscrolling shorts app. yes, i actually did it. i built a dedicated video player with a scrollable feed of vertical reels. It starts with the audio ON, supports real-time pausing when you unfocus the window (so it doesn't keep playing in the background like an annoying browser tab), and lets you cycle through random clips of transformers edits and other random aesthetic shorts whenever your brain needs a cheap dopamine hit. -The whole look is incredibly polished. we've got custom SVG icons sitting inside the dock instead of cheap-looking emojis, a glassmorphic top-bar system showing the time and battery life, and desaturated purple accents that hold the entire sci-fi interface together.
Finalyyy i added the optimus prime wallpaper in the Cybertron os which now makes it look like a real tranaformer fan made webos. I really want that this cybertron os look as much as futuristic as well as classical as it can. i made many changes then before and also i redesigned the app icons for the cybertron os so that they look classic and technical not just plain app icon. There were few things which were needed to be fixed like there was no option to stop a short video in the shorts section and also no option for mute and unmute like it got so annoying when i wanted to stop the video or mute when i was testing the webos. So I Added those features and now the short section runs smooth videos like i expect it to. Even the theme changing option was broken like clicking on “Autobot” (red theme) did nothing, it was suppost to make everything go like legit RED but lmao no. The accent color stayed purple and i Spentway too long on this than i should have originally. The old wallpaper app was just a header + a 2-column grid of cards and looked like a prototype. No visual hierarchy, no preview of the current wallpaper, no hover feedback. To fix this i rebuilt renderWallpaperApp() and the entire .wp-app CSS section: added a hero section at the top (180px) that shows either the current video wallpaper playing on loop, or a gradient placeholder for the default. this gives instant visual feedback on what’s active. added an overlay on the hero with the current wallpaper name and “Wallpaper Studio” title and made the transition smoother. Also in the settings, it had 4 nav items: Faction Theme, Display, Wallpapers, About. The Display section had brightness slider, font size, and a widget toggle. the brightness and font controls didn’t actually do anything (they set inline styles that got overwritten on re-render). dead features. So i removed the display option which didn’t changed anything and merged the working features in the faction. I also redeigned the energon radio which is the songs section in the cybertron os in that the big album cover art (240px tall) that takes up the top portion. There’s a gradient fade at the bottom so it blends into the dark background. The cover image is blurred behind the main art, giving it a premium vibe. Controls — three buttons in a row: previous, play/pause (big white circle), next. Buttons scale up slightly on hover. Few more changes and we are good to go.
Bruhhh finally i can say that i have completed my cybertron-os. I think i have done most of the think i can come up with and have added all the necessary things that are found in a webos. The pixel cat that follows your cursor around the screen i have added some features in it too and now its a whole interactive pet: Single click → pin/unpin the cat in place Double-click → pet the cat (triggers meow + purr + floating hearts animation) The cat flips direction based on mouse movement It has a smooth follow-with-lag animation So here’s the thing. Previously I didn’t had a single audio file. No .mp3s. No .wavs. Nothing. So there were no sound feature in the webos which made it kinda plain so i thought i should add some’. There’s this thing called the Web Audio API built into every browser. It lets you create sounds using something called oscillators — basically digital instruments that generate tones. You tell it a pitch, a wave shape, and how long to play, and it just… makes the sound.The reason the sounds don’t just sound like boring beeps is because of something called exponentialRampToValueAtTime. Yeah I know, sounds like a villain’s weapon. But what it does is slide the pitch from one frequency to another over time. So instead of just “BEEP” you get “bewwwoop” — the sound goes UP or DOWN smoothly. That’s what gives it that swooshy, futuristic feel. I looked at all the color comnbinations with the wallpaper and i saw that the miku wallpaper looks very futuristic and classical just as i want with purple colour. So i set them as the default and if you want you can change the wallpaper and the theme colour as your preferences. The holo archieve which is the gallery of my cybertron-os was legit empty. I thought and thought and then i added some pictures of transformers movies and our fav bumble bee.. In the cybertron store we were not able to download any apps and it was just and empty ahh store, so yeahh i added some apps that can actually be installed and used in the webos and then i added some good looking app icons for them too cause i didn’t wanted them to look too plain.
So basically someone told me to upgrade my cybertron -os in a more cyber and futuristic vibe so that it matches the style, so i made it a little transformer and cyber ahh feeling webos. I redesigned all the app icons which took a lot of my time a cause i didn’t knew what and how should i re-design them, so i thought for too long and came up with these icons. These icons look way more futuristic and holographic than before and i guess much better too. Also i changed the cyber-cat into a robot so that the vibes would match the cyber effect and not like the previous one 🥀🥀. That 0.06 lag factor means the robot only moves 6% of the remaining distance toward your cursor each frame. So it never quite catches up — it smoothly glides and drifts. When you stop moving, it slowly settles into place near your cursor. When you move fast, it trails behind like it’s trying to keep up. Added a SVG analog clock with smooth second hand using requestAnimationFrame for millisecond precision, digital display, timezone info, plus tabs for a stopwatch and countdown timer. This clock and the calender has made the UI a lot better than before.Also made a search bar, this one sits right at the top of the desktop. It’s a slim, always-visible search field with a magnifying glass icon. You just click on it and start typing to filter your apps. It’s the quick, “I know what I want” kind of search. No shortcuts needed — just eyes on it and type. So when you set a static image as the wallpaper, Cybertron OS doesn’t just slap it on the background — it gives it a subtle parallax effect that makes it feel alive. The wallpaper image is loaded into a #desktop-bg div and scaled up to 1.1x (110% size), so it’s slightly bigger than the screen. That extra 10% is the buffer that allows it to move without showing edges. Then, every time you move your mouse, the wallpaper shifts in the opposite direction of your cursor by up to 20 pixels on each axis. So if you move your mouse right, the wallpaper slides left — like you’re looking through a window and the background is further away. This creates a layered depth effect: the orbs feel closer to you, the wallpaper feels farther away, and your cursor is in the middle. The whole thing has a transition: transform 0.3s ease-out so it doesn’t feel jerky — it smoothly glides to its new position. When you switch to a video wallpaper, the parallax turns off because a video is already moving on its own. It’s a small touch, but it makes the desktop feel way more premium than a static background image ever would. So about the taskbar in Cybertron OS is inspired by Windows but with its own flavor. It sits at the bottom of the screen and it is fixed there, 48 pixels tall, with a heavy blur behind it (backdrop-filter: blur(50px)) so it looks like frosted glass over whatever’s behind it. There’s a subtle white gradient line along the top edge and a faint amber glow along the bottom — it gives it that premium “this bar is floating” feel. After making all these changes the cybertron-os has became a different OS, i hope yall like this!!!!
Ships:
Made a webos based on the concept transformers and futuristic way of an webos. Added a pixel cat which follows the cursor in the whole webos, it has an energon radio so that people can listen to the best japanese songs. It also has a feature to change between many live wallpaper which makes the webos experience muchh better. checkk out other features too, ya can doomscrool in the webos too😁...
|
1792882064.565094
|
1793746064.565094
|
|
12508
|
WisprFlow SDK by @shash | Stardance
|
shash
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-09T15:11:36Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I’m just going to ramble on and I’m going to describe my whole project. So basically, I needed a way to transcribe my audio. My eventual goal is to make a home assistant-type of Jarvis, but I really needed to pick up my voice really well. I like to speak in Hindi and English at the same time, multiple, lots of times. I have lots of filler words, I mumble a lot. Obviously, you would expect it to catch your voice really well. There are models such as OpenAI Whisper. Those are models, but they are not that good for this use case. But then I found that Wispr Flow is a model that is absolutely exceptional at picking up the little nuances of language when I speak in multiple languages at the same time. But there was no programmatical way to really interact with the API, so I texted one of the owners on LinkedIn, and they gave me permission to reverse engineer it, as they said that maintaining an API is a huge overhead for them, and they are just a start-up, so they really would not mind me reverse engineering it and building it myself if I really wanted that desperately, but they have no plans of making an API. And because I have the Pro plan, I can use it a lot without running out of words So I took it upon myself as a challenge, and I built the Python SDK that also works with the command line, where you just give it an audio file and it gives you the final transcribed version.", "repo": "https://github.com/ThisisShashwat/wisprflow-sdk", "demo": "https://github.com/ThisisShashwat/wisprflow-sdk/blob/main/demo/demo.md"}]...
|
[{"post_id": 5652, "ts": "2026 [{"post_id": 5652, "ts": "2026-06-09T15:05:48Z", "hours": 3.9378, "text": "https://github.com/ThisisShashwat/wisprflow-sdk/blob/main/demo/demo.md Hey guys, I’m so excited to announce that I’ve completed everything! The SDK is done, the Path Script is done, and now I can 100% make it work. It’s been coding for over 4 hours now, after the last dev log. I’m really frustrated that this took an insane amount of time because my experience with JavaScript isn’t that much, but it was enough for me to know what Electron was and how Node works. And even the code was highly minified (it was Electron code), I was able to figure it out. I learned a lot while making this. I learned how to reverse engineer Electron apps, and I learned how to use partial scripts to make reverse engineering ways. Here, obviously I took aid from ChatGPT and Claude to help me out with the reverse engineering because I didn’t know a lot, and they’re amazing tools when it comes to learning. So I finally managed to make it; everything is done, and now I’ll be finally pushing it out!"}, {"post_id": 4946, "ts": "2026-06-08T16:03:17Z", "hours": 0.3322, "text": "Well before I tell you the goal of this project, let me describe why I’m making it and what my project is trying to do. For that I’ll need to share some context. First of all hi, I am Shashwat and it’s really nice that I’ve been given an opportunity to participate in Stardance Hack Club. I did not know how devlogs work so my first devlog was just a dummy devlog. This is the actual devlog. I did not know that I am supposed to install a hack a time to track my code timing because it’s really frustrating that it barely tracked one hour where I’ve been working on it for over 20 hours now, split across days. Anyways that does not matter. Coming back Wispr Flow is basically a commercial paid app made by some entity which is voice transcriptions. The way it’s different from Siri detections is that Siri does not know context and Siri does not know your names. It does not have a dictionary of you and the moment you start switching between languages if you’re bilingual and if you like to talk in a bilingual tone then it’s really difficult. It completely butchers everything and all the filler words, unnecessary stuff, etc. Every single thing is excluded, removed by Wispr Flow so you have a very professional text. In the long term that I would want to make a Jarvis-like home assistant for myself. I already have the whole home assistant running on my Raspberry Pi and I would want it to be automated by my voice. I haven’t really found any model that can do what Wispr Flow can. As the name suggests if you literally whisper to your microphone it can catch that even if you’re far away, even if you’re mumbling half asleep, you can still catch that. I don’t know how they’ve accomplished it but they’ve accomplished it really well. Again this is not an advertisement so I have purchased the pro tier and have paid for it but they don’t have an API. Basically they have an API but they have sunsetted the API where they don’t give it anymore because I spoke to their owners and the owner was like it was very complicated and it was not really worth the investment so that’s why they stopped the API. If I can reverse engineer it, I have full permission to do it for my personal projects and I can use it. For the past few days, combined time over 25 hours to 30 hours, I’ve spent on reverse engineering the Wispr Flow app. Based on that the progress I have made till now is that I have figured out how their model works and what’s the structure of their queries and calls and how I structure it now. The part that’s left is to wrap it into a Python SDK because I want to programmatically be able to send that specific 10 seconds of my voice recording and just get the text back programmatically in my own Python application. That is the long-term goal. I’ll talk to you next time or also this entire thing was dictated by Wispr Flow and I’m literally not going to correct anything because I’m pretty sure it caught everything and I’m just going to hit post. In case you find any mistakes just excuse me because I was using voice dictation."}, {"post_id": 4912, "ts": "2026-06-08T14:29:00Z", "hours": 0.8433, "text": "The end goal: Reverse-engineers the Wispr Flow desktop client and exposes its transcription and command APIs through a clean Python interface. Send audio files directly from Python, stream live audio, customize transcription behavior, and receive structured results — no UI interaction required."}]...
|
Title: WisprFlow SDK by @shash | Stardance
Devlog Title: WisprFlow SDK by @shash | Stardance
Devlogs:
The end goal: Reverse-engineers the Wispr Flow desktop client and exposes its transcription and command APIs through a clean Python interface. Send audio files directly from Python, stream live audio, customize transcription behavior, and receive structured results — no UI interaction required.
Well before I tell you the goal of this project, let me describe why I’m making it and what my project is trying to do. For that I’ll need to share some context. First of all hi, I am Shashwat and it’s really nice that I’ve been given an opportunity to participate in Stardance Hack Club. I did not know how devlogs work so my first devlog was just a dummy devlog. This is the actual devlog. I did not know that I am supposed to install a hack a time to track my code timing because it’s really frustrating that it barely tracked one hour where I’ve been working on it for over 20 hours now, split across days. Anyways that does not matter. Coming back Wispr Flow is basically a commercial paid app made by some entity which is voice transcriptions. The way it’s different from Siri detections is that Siri does not know context and Siri does not know your names. It does not have a dictionary of you and the moment you start switching between languages if you’re bilingual and if you like to talk in a bilingual tone then it’s really difficult. It completely butchers everything and all the filler words, unnecessary stuff, etc. Every single thing is excluded, removed by Wispr Flow so you have a very professional text. In the long term that I would want to make a Jarvis-like home assistant for myself. I already have the whole home assistant running on my Raspberry Pi and I would want it to be automated by my voice. I haven’t really found any model that can do what Wispr Flow can. As the name suggests if you literally whisper to your microphone it can catch that even if you’re far away, even if you’re mumbling half asleep, you can still catch that. I don’t know how they’ve accomplished it but they’ve accomplished it really well. Again this is not an advertisement so I have purchased the pro tier and have paid for it but they don’t have an API. Basically they have an API but they have sunsetted the API where they don’t give it anymore because I spoke to their owners and the owner was like it was very complicated and it was not really worth the investment so that’s why they stopped the API. If I can reverse engineer it, I have full permission to do it for my personal projects and I can use it. For the past few days, combined time over 25 hours to 30 hours, I’ve spent on reverse engineering the Wispr Flow app. Based on that the progress I have made till now is that I have figured out how their model works and what’s the structure of their queries and calls and how I structure it now. The part that’s left is to wrap it into a Python SDK because I want to programmatically be able to send that specific 10 seconds of my voice recording and just get the text back programmatically in my own Python application. That is the long-term goal. I’ll talk to you next time or also this entire thing was dictated by Wispr Flow and I’m literally not going to correct anything because I’m pretty sure it caught everything and I’m just going to hit post. In case you find any mistakes just excuse me because I was using voice dictation.
https://github.com/ThisisShashwat/wisprflow-sdk/blob/main/demo/demo.md Hey guys, I’m so excited to announce that I’ve completed everything! The SDK is done, the Path Script is done, and now I can 100% make it work. It’s been coding for over 4 hours now, after the last dev log. I’m really frustrated that this took an insane amount of time because my experience with JavaScript isn’t that much, but it was enough for me to know what Electron was and how Node works. And even the code was highly minified (it was Electron code), I was able to figure it out. I learned a lot while making this. I learned how to reverse engineer Electron apps, and I learned how to use partial scripts to make reverse engineering ways. Here, obviously I took aid from ChatGPT and Claude to help me out with the reverse engineering because I didn’t know a lot, and they’re amazing tools when it comes to learning. So I finally managed to make it; everything is done, and now I’ll be finally pushing it out!
Ships:
I’m just going to ramble on and I’m going to describe my whole project. So basically, I needed a way to transcribe my audio. My eventual goal is to make a home assistant-type of Jarvis, but I really needed to pick up my voice really well. I like to speak in Hindi and English at the same time, multiple, lots of times. I have lots of filler words, I mumble a lot. Obviously, you would expect it to catch your voice really well. There are models such as OpenAI Whisper. Those are models, but they are not that good for this use case. But then I found that Wispr Flow is a model that is absolutely exceptional at picking up the little nuances of language when I speak in multiple languages at the same time. But there was no programmatical way to really interact with the API, so I texted one of the owners on LinkedIn, and they gave me permission to reverse engineer it, as they said that maintaining an API is a huge overhead for them, and they are just a start-up, so they really would not mind me reverse engineering it and building it myself if I really wanted that desperately, but they have no plans of making an API. And because I have the Pro plan, I can use it a lot without running out of words So I took it upon myself as a challenge, and I built the Python SDK that also works with the command line, where you just give it an audio file and it gives you the final transcribed version....
|
1793245962.6632898
|
1793332362.6632898
|
|
12525
|
CLI System Health Monitor Dashboard by @Greg_ios | CLI System Health Monitor Dashboard by @Greg_ios | Stardance...
|
Greg_ios
|
1
|
2.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T12:20:49Z", "hours": 2.0, "multiplier": 2.15, "payout": 3, "blessing": "neutral", "text": "A real-time terminal dashboard built with Python that monitors your system’s vital statistics live. More info: https://github.com/travletothefurureprogramming/System-Health-Monitor-Dashboard/blob/main/README.md", "repo": "https://github.com/travletothefurureprogramming/System-Health-Monitor-Dashboard/", "demo": "https://github.com/travletothefurureprogramming/System-Health-Monitor-Dashboard/releases/tag/Release"}]...
|
[{"post_id": 4823, "ts": "2026 [{"post_id": 4823, "ts": "2026-06-08T10:29:50Z", "hours": 0.4033, "text": "Add up time montitor and finalize some things also make a clean README and github release!!!"}, {"post_id": 4815, "ts": "2026-06-08T10:03:41Z", "hours": 0.2786, "text": "Add CPU temperature monitoring and improve network speed formatting"}, {"post_id": 4805, "ts": "2026-06-08T09:37:01Z", "hours": 0.4897, "text": "Refactor system health monitoring functions and enhance network speed calculations. Also make a clean dashboard using rich"}, {"post_id": 4794, "ts": "2026-06-08T09:04:41Z", "hours": 0.3881, "text": "Set up the project structure and implemented basic system metrics reading with psutil. Collects CPU %, RAM %, disk usage, and uptime — prints cleanly to terminal. Took ~15 min, simple but solid foundation for the dashboard."}]...
|
Title: CLI System Health Monitor Dashboard by @Gre Title: CLI System Health Monitor Dashboard by @Greg_ios | Stardance
Devlogs:
Set up the project structure and implemented basic system metrics reading with psutil. Collects CPU %, RAM %, disk usage, and uptime — prints cleanly to terminal. Took ~15 min, simple but solid foundation for the dashboard.
Refactor system health monitoring functions and enhance network speed calculations. Also make a clean dashboard using rich
Add CPU temperature monitoring and improve network speed formatting
Add up time montitor and finalize some things also make a clean README and github release!!!
Ships:
A real-time terminal dashboard built with Python that monitors your system’s vital statistics live. More info: https://github.com/travletothefurureprogramming/System-Health-Monitor-Dashboard/blob/main/README.md...
|
1793263810.9744256
|
1793350210.9744256
|
|
12541
|
Space Platformer! by @mikhailnotfish | Stardance
|
mikhailnotfish
|
1
|
8.0
|
34
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T22:31:11Z", "hours": 8.0, "multiplier": 4.1, "payout": 34, "blessing": "neutral", "text": "i have finished space platformer! i made it to fit the spacey theme of stardance. please actually try it, its very fun!", "repo": "https://github.com/mikhailnotfish/space-platformer-release", "demo": "https://mikhailnotfish.github.io/space-platformer-release/"}]...
|
[{"post_id": 7358, "ts": "2026 [{"post_id": 7358, "ts": "2026-06-12T08:20:12Z", "hours": 2.2206, "text": "ladies and gentlemen,say hello to space platformer! it is out now for you to try on git pages! i am proud to say that after 8 hours, it is finished!"}, {"post_id": 6659, "ts": "2026-06-11T05:06:46Z", "hours": 0.4, "text": "“sweet mother of pearl” 😭✌️🥀"}, {"post_id": 6480, "ts": "2026-06-10T21:56:47Z", "hours": 5.0031, "text": "guys… i have bad news. i worked for 2 hours yesterday, to get the game more close to finish, and when i went outside for a 20 minute break, my computer had an update! and almost 2 hours of work was lost! unity didnt save anything! i have to start again, so there will be a slight delay for my release. im really sorry :["}, {"post_id": 4795, "ts": "2026-06-08T09:12:18Z", "hours": 0.6386, "text": "here is an early sneek peak :]"}]...
|
Title: Space Platformer! by @mikhailnotfish | Star Title: Space Platformer! by @mikhailnotfish | Stardance
Devlogs:
here is an early sneek peak :]
guys… i have bad news. i worked for 2 hours yesterday, to get the game more close to finish, and when i went outside for a 20 minute break, my computer had an update! and almost 2 hours of work was lost! unity didnt save anything! i have to start again, so there will be a slight delay for my release. im really sorry :[
“sweet mother of pearl” 😭✌️🥀
ladies and gentlemen,say hello to space platformer! it is out now for you to try on git pages! i am proud to say that after 8 hours, it is finished!
Ships:
i have finished space platformer! i made it to fit the spacey theme of stardance. please actually try it, its very fun!...
|
1793116357.8928077
|
1793202757.8928077
|
|
12556
|
VOIDBOT by @otzpt | Stardance
|
otzpt
|
1
|
2.49
|
6
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-14T20:54:57Z", "hours": 2.0, "multiplier": 2.98, "payout": 6, "blessing": "neutral", "text": "VOIDBOT is a Slack bot created with Python and uses Socket Mode, so it doesn’t require a public URL to receive events from Slack. It runs 24/7 on Hugging Face Spaces and operates independently of my own machine. It supports three slash commands: /vt-ping (health check), /vt-about (info about the bot), and /vt-voidtune (links to my VOIDTUNE project). The biggest challenge was getting Socket Mode to work reliably on Hugging Face. Their platform expects a web server with an open port, but Socket Mode doesn’t connect to one. I fixed this by running a lightweight health-check HTTP thread alongside the bot’s main connection. This keeps Hugging Face’s supervisor satisfied while the actual bot logic operates over the WebSocket connection to Slack.", "repo": "https://github.com/otzpt/VOIDBOT", "demo": "https://hackclub.enterprise.slack.com/archives/C0BCLB8NS12"}]...
|
[{"post_id": 14245, "ts": "202 [{"post_id": 14245, "ts": "2026-06-23T08:17:13Z", "hours": 0.4947, "text": "VOIDBOT — Devlog #1 Migrating to Hack Club Nest VOIDBOT started as a Python Slack bot hosted on Hugging Face Spaces. It uses Socket Mode, meaning it doesn’t need a public URL — it connects directly to Slack via a persistent WebSocket. To keep Hugging Face’s supervisor happy, I ran a lightweight HTTP health-check thread alongside the bot, tricking the platform into thinking a web server was running. During re-certification for Stardance, my reviewer flagged that Hugging Face Spaces doesn’t run indefinitely and isn’t an approved hosting platform. The fix: migrate to Hack Club Nest, a free Linux container provided by Hack Club. I applied for a Nest container, generated an SSH key pair with ssh-keygen, and submitted the public key during the application. Once approved, I SSHed into the container, installed git and Python dependencies, cloned the VOIDBOT repo, configured the Slack tokens via a .env file, and verified the bot connected successfully. To keep it running 24/7 after closing the SSH session, I installed tmux and detached the bot process inside a named session. VOIDBOT is now live on Nest, accessible in the public #voidbot-demo channel on the Hack Club Slack. Try it: join #voidbot-demo and run /vt-ping, /vt-about, or /vt-voidtune."}, {"post_id": 6220, "ts": "2026-06-10T13:40:17Z", "hours": 0.3156, "text": "Devlog, Defeating Cloud Runtime Errors, Bypassing Local Constraints, and Achieving 100% Production Status This is the latest version of VOIDBOT. It began as a local Python script and has now been successfully transformed into a fully operational cloud-based service. Here’s how we overcame the final deployment issues today: The Local Environment Shift: I encountered a conflict when moving my work to my main Windows workstation. Virtual environments (.venv) cannot be transferred across different systems due to OS-specific binaries. I erased the old directory and set up a clean Windows environment, reinstalling ‘slack-bolt’, ‘python-dotenv’, and ‘websocket-client’. Namespace Protection and Anti-Collision: To ensure smooth operation within Hack Club’s large workspace, I changed all listener annotations to use a unique prefix ( /vt- ). Commands like /vt-ping , /vt-about , and /vt-voidtune are now linked to my bot layer without clashing with other active services. Strengthening Repository Security: I created a specific .gitignore file to keep the physical .env variables on my local disk, completely removing any risk of exposing cloud credentials on my GitHub repository. Fixing the Hugging Face ‘Runtime Error’ and Network Proxies: When moving to Hugging Face Spaces (using a custom Dockerfile), the instance crashed due to failing the cloud infrastructure’s automatic network health checks. Since Socket Mode requires a constant outgoing WebSocket connection, it does not allow an open HTTP port. To fix this: I modified main.py to create a secondary asynchronous thread ( threading.Thread ). I built a simple internal health checking system using Python’s native HTTPServer on port 7860. This kept the cloud supervisor satisfied while allowing the main Bolt engine to communicate smoothly with Slack in the background. Managing Dynamic Configurations: I updated config.py with a check to see if the required variables are already in the cloud system’s environment memory. If they are found, it skips the .env parsing and continues the system execution. Result: The space is now stable and in a permanent green “Running” state. The bot handles live channel interactions, processes async commands, logs activity timestamps, and operates 24/7 without needing my home PC online. VOIDBOT is ready. Next stop: WebOS!"}, {"post_id": 6206, "ts": "2026-06-10T12:49:55Z", "hours": 0.6883, "text": "Implementing Socket Mode, Git Protections, and 24/7 Cloud Deployment Today I made a massive leap forward and fully finalized the infrastructure requirements for VOIDBOT, transitioning it into a professional, production-ready environment. Here is the breakdown of this coding session: Environment Synchronization & Testing: Moved the project over to my main Windows machine. Experienced the non-portability of virtual environments firsthand, which pushed me to wipe the Linux-based .venv and re-architect a native Windows virtual environment from scratch. Local GUI Experiments: Successfully verified Python script execution and keyboard interactivity on my main OS by writing a quick standalone test interface ( test_gui.py ) using Tkinter. Code Refactoring & Pre-Collision Guard: Refactored the core commands inside main.py to use a custom prefix ( /vt- ), ensuring my bot runs independently on the Hack Club workspace without command collisions. Added missing callback acknowledgments ( ack() ) to optimize the runtime. Security Best Practices: Implemented a robust .gitignore file to permanently isolate my .env configuration file locally on my hardware, blocking accidental leaks of sensitive API credentials. 24/7 Cloud Deployment: Generated a modular requirements.txt list and successfully committed the source code repository to GitHub. Configured a continuous deployment pipeline using a free Background Worker on Render. Injected the secure Slack variables ( SLACK_BOT_TOKEN , SLACK_SIGNING_SECRET , SLACK_APP_TOKEN ) natively into Render’s memory space, keeping the application live 24/7 even when my main rig is powered off. With all 4 strict submission requirements met, the pipeline is green and I’m ready to ship the project to the peer review stage!"}, {"post_id": 4968, "ts": "2026-06-08T16:51:46Z", "hours": 1.0342, "text": "Building a Solid Architecture & Custom Logger for VOIDBOT Today I spent a solid hour setting up the foundations for VOIDBOT. Since I have no prior experience building Slack bots, I wanted to make sure the project structure was robust right from the start instead of just packing everything into a single file. Here is what I achieved during this coding session: Setup and modularity: Created a dedicated config.py file to handle environment variables automatically. If the .env file is missing, the script generates a template setup by itself to prevent crashes. Main Engine: Configured main.py using the Slack Bolt framework in Python. Tied it directly with the configuration module to keep the tokens clean and secure. Custom Utility: Coded a custom logging module ( logger.py ) from scratch. It captures accurate timestamps using Python’s datetime library and appends command usage and user IDs into a local activity.log file whenever a command is triggered. Core Requirements: Fully structured the 3 mandatory slash commands (/ping, /about, and /voidtune) with strict adherence to Slack’s 3-second acknowledgement rule. Everything is pushed to my GitHub repository, and my Hackatime is running smoothly. Ready to tackle the Slack API portal and credentials next!"}]...
|
Title: VOIDBOT by @otzpt | Stardance
Devlogs:
Bui Title: VOIDBOT by @otzpt | Stardance
Devlogs:
Building a Solid Architecture & Custom Logger for VOIDBOT Today I spent a solid hour setting up the foundations for VOIDBOT. Since I have no prior experience building Slack bots, I wanted to make sure the project structure was robust right from the start instead of just packing everything into a single file. Here is what I achieved during this coding session: Setup and modularity: Created a dedicated config.py file to handle environment variables automatically. If the .env file is missing, the script generates a template setup by itself to prevent crashes. Main Engine: Configured main.py using the Slack Bolt framework in Python. Tied it directly with the configuration module to keep the tokens clean and secure. Custom Utility: Coded a custom logging module ( logger.py ) from scratch. It captures accurate timestamps using Python’s datetime library and appends command usage and user IDs into a local activity.log file whenever a command is triggered. Core Requirements: Fully structured the 3 mandatory slash commands (/ping, /about, and /voidtune) with strict adherence to Slack’s 3-second acknowledgement rule. Everything is pushed to my GitHub repository, and my Hackatime is running smoothly. Ready to tackle the Slack API portal and credentials next!
Implementing Socket Mode, Git Protections, and 24/7 Cloud Deployment Today I made a massive leap forward and fully finalized the infrastructure requirements for VOIDBOT, transitioning it into a professional, production-ready environment. Here is the breakdown of this coding session: Environment Synchronization & Testing: Moved the project over to my main Windows machine. Experienced the non-portability of virtual environments firsthand, which pushed me to wipe the Linux-based .venv and re-architect a native Windows virtual environment from scratch. Local GUI Experiments: Successfully verified Python script execution and keyboard interactivity on my main OS by writing a quick standalone test interface ( test_gui.py ) using Tkinter. Code Refactoring & Pre-Collision Guard: Refactored the core commands inside main.py to use a custom prefix ( /vt- ), ensuring my bot runs independently on the Hack Club workspace without command collisions. Added missing callback acknowledgments ( ack() ) to optimize the runtime. Security Best Practices: Implemented a robust .gitignore file to permanently isolate my .env configuration file locally on my hardware, blocking accidental leaks of sensitive API credentials. 24/7 Cloud Deployment: Generated a modular requirements.txt list and successfully committed the source code repository to GitHub. Configured a continuous deployment pipeline using a free Background Worker on Render. Injected the secure Slack variables ( SLACK_BOT_TOKEN , SLACK_SIGNING_SECRET , SLACK_APP_TOKEN ) natively into Render’s memory space, keeping the application live 24/7 even when my main rig is powered off. With all 4 strict submission requirements met, the pipeline is green and I’m ready to ship the project to the peer review stage!
Devlog, Defeating Cloud Runtime Errors, Bypassing Local Constraints, and Achieving 100% Production Status This is the latest version of VOIDBOT. It began as a local Python script and has now been successfully transformed into a fully operational cloud-based service. Here’s how we overcame the final deployment issues today: The Local Environment Shift: I encountered a conflict when moving my work to my main Windows workstation. Virtual environments (.venv) cannot be transferred across different systems due to OS-specific binaries. I erased the old directory and set up a clean Windows environment, reinstalling ‘slack-bolt’, ‘python-dotenv’, and ‘websocket-client’. Namespace Protection and Anti-Collision: To ensure smooth operation within Hack Club’s large workspace, I changed all listener annotations to use a unique prefix ( /vt- ). Commands like /vt-ping , /vt-about , and /vt-voidtune are now linked to my bot layer without clashing with other active services. Strengthening Repository Security: I created a specific .gitignore file to keep the physical .env variables on my local disk, completely removing any risk of exposing cloud credentials on my GitHub repository. Fixing the Hugging Face ‘Runtime Error’ and Network Proxies: When moving to Hugging Face Spaces (using a custom Dockerfile), the instance crashed due to failing the cloud infrastructure’s automatic network health checks. Since Socket Mode requires a constant outgoing WebSocket connection, it does not allow an open HTTP port. To fix this: I modified main.py to create a secondary asynchronous thread ( threading.Thread ). I built a simple internal health checking system using Python’s native HTTPServer on port 7860. This kept the cloud supervisor satisfied while allowing the main Bolt engine to communicate smoothly with Slack in the background. Managing Dynamic Configurations: I updated config.py with a check to see if the required variables are already in the cloud system’s environment memory. If they are found, it skips the .env parsing and continues the system execution. Result: The space is now stable and in a permanent green “Running” state. The bot handles live channel interactions, processes async commands, logs activity timestamps, and operates 24/7 without needing my home PC online. VOIDBOT is ready. Next stop: WebOS!
VOIDBOT — Devlog #1 Migrating to Hack Club Nest VOIDBOT started as a Python Slack bot hosted on Hugging Face Spaces. It uses Socket Mode, meaning it doesn’t need a public URL — it connects directly to Slack via a persistent WebSocket. To keep Hugging Face’s supervisor happy, I ran a lightweight HTTP health-check thread alongside the bot, tricking the platform into thinking a web server was running. During re-certification for Stardance, my reviewer flagged that Hugging Face Spaces doesn’t run indefinitely and isn’t an approved hosting platform. The fix: migrate to Hack Club Nest, a free Linux container provided by Hack Club. I applied for a Nest container, generated an SSH key pair with ssh-keygen, and submitted the public key during the application. Once approved, I SSHed into the container, installed git and Python dependencies, cloned the VOIDBOT repo, configured the Slack tokens via a .env file, and verified the bot connected successfully. To keep it running 24/7 after closing the SSH session, I installed tmux and detached the bot process inside a named session. VOIDBOT is now live on Nest, accessible in the public #voidbot-demo channel on the Hack Club Slack. Try it: join #voidbot-demo and run /vt-ping, /vt-about, or /vt-voidtune.
Ships:
VOIDBOT is a Slack bot created with Python and uses Socket Mode, so it doesn’t require a public URL to receive events from Slack. It runs 24/7 on Hugging Face Spaces and operates independently of my own machine. It supports three slash commands: /vt-ping (health check), /vt-about (info about the bot), and /vt-voidtune (links to my VOIDTUNE project). The biggest challenge was getting Socket Mode to work reliably on Hugging Face. Their platform expects a web server with an open port, but Socket Mode doesn’t connect to one. I fixed this by running a lightweight health-check HTTP thread alongside the bot’s main connection. This keeps Hugging Face’s supervisor satisfied while the actual bot logic operates over the WebSocket connection to Slack....
|
1793202608.1333787
|
1793289008.1333787
|
|
12573
|
Neumorphism OS by @TanMingJing | Stardance
|
TanMingJing
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-07T13:03:59Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Working on Neumorphism OS rn. It’s basically a frontend-only web OS with draggable/resizable windows, a dock, launcher, settings, files, notes, terminal and some other apps. I finally got it deployed on Vercel and I’m working on making the apps interact with each other now.", "repo": "https://github.com/devtmj1123/neumorphism-os", "demo": "https://neumorphism-os.vercel.app/"}]...
|
[{"post_id": 42601, "ts": "202 [{"post_id": 42601, "ts": "2026-08-07T12:48:28Z", "hours": 1.9906, "text": "I’m building Neumorphism OS, a frontend-only Web OS that recreates the experience of using a desktop operating system entirely inside the browser.It has its own window manager, multitasking system, app launcher, dock, control center, notifications, persistent settings, and a collection of interconnected apps including Files, Notes, Calculator, Terminal, Browser, Photos, Calendar, and Settings.I’m also designing a custom modern neumorphic visual system around it. My goal is to make it feel like a coherent operating environment rather than just a website that looks like a desktop, while exploring how far a browser-only interface can be pushed without a backend."}]...
|
Title: Neumorphism OS by @TanMingJing | Stardance
Title: Neumorphism OS by @TanMingJing | Stardance
Devlogs:
I’m building Neumorphism OS, a frontend-only Web OS that recreates the experience of using a desktop operating system entirely inside the browser.It has its own window manager, multitasking system, app launcher, dock, control center, notifications, persistent settings, and a collection of interconnected apps including Files, Notes, Calculator, Terminal, Browser, Photos, Calendar, and Settings.I’m also designing a custom modern neumorphic visual system around it. My goal is to make it feel like a coherent operating environment rather than just a website that looks like a desktop, while exploring how far a browser-only interface can be pushed without a backend.
Ships:
Working on Neumorphism OS rn. It’s basically a frontend-only web OS with draggable/resizable windows, a dock, launcher, settings, files, notes, terminal and some other apps. I finally got it deployed on Vercel and I’m working on making the apps interact with each other now....
|
1793141706.2296572
|
1793228106.2296572
|
|
12577
|
Temperature Analysis GUI by @lcna013 | Stardance
|
lcna013
|
1
|
7.0
|
17
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T07:03:18Z", "hours": 7.0, "multiplier": 2.32, "payout": 17, "blessing": "neutral", "text": "My project is a graphical user interface (GUI) that allows users to input the min and max temps for the past 2 weeks, then outputs the highest and lowest min and max values. Being a woman in tech I wanted the UI to be feminine and fun to inspire other women that just because tech is a male dominated field does not mean it can’t be a creative expression. Adding a UI appreciated by women does not diminish its functionality but rather enhances it. I am so very proud of how this project has turned out!!", "repo": "https://github.com/lcna013-hue/Temp-GUI", "demo": "https://onecompiler.com/tkinter/44u728p4z"}]...
|
[{"post_id": 21930, "ts": "202 [{"post_id": 21930, "ts": "2026-07-04T03:55:10Z", "hours": 2.5572, "text": "It now looks pretty!! It still functions in the same way, but I decided that I wanted to fix up the UI a bit. I love how it looks now and the colours make it clearer which entry box it the min and which is the max. It took forever to position the title because of the frames, but I got there eventually. I hope you enjoy it!!! :)"}, {"post_id": 19787, "ts": "2026-07-01T05:23:23Z", "hours": 4.7644, "text": "Temperature Analysis GUI! This project allows users to enter the temps of the past 2 weeks, and it saves that data, validates it to check that it is in a correct range of expected values but also that the entry has been filled in, and stores these values into a text tile, then from the text file it performs calculations."}]...
|
Title: Temperature Analysis GUI by @lcna013 | Star Title: Temperature Analysis GUI by @lcna013 | Stardance
Devlogs:
Temperature Analysis GUI! This project allows users to enter the temps of the past 2 weeks, and it saves that data, validates it to check that it is in a correct range of expected values but also that the entry has been filled in, and stores these values into a text tile, then from the text file it performs calculations.
It now looks pretty!! It still functions in the same way, but I decided that I wanted to fix up the UI a bit. I love how it looks now and the colours make it clearer which entry box it the min and which is the max. It took forever to position the title because of the frames, but I got there eventually. I hope you enjoy it!!! :)
Ships:
My project is a graphical user interface (GUI) that allows users to input the min and max temps for the past 2 weeks, then outputs the highest and lowest min and max values. Being a woman in tech I wanted the UI to be feminine and fun to inspire other women that just because tech is a male dominated field does not mean it can’t be a creative expression. Adding a UI appreciated by women does not diminish its functionality but rather enhances it. I am so very proud of how this project has turned out!!...
|
1793108976.9578495
|
1793195376.9578495
|
|
12610
|
Oceantype by @teakzc | Stardance
|
teakzc
|
1
|
3.0
|
56
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T15:26:47Z", "hours": 3.0, "multiplier": 16.59, "payout": 56, "blessing": "neutral", "text": "I made a website where anyone can express any thoughts and leave it in the ocean for anyone to see. Messages are circulated (when no new messages are sent) frequently just like objects floating around in the ocean current. The challenge of this is to learn supabase and nextjs. I already have experience with react, so just some guidance from ai taught me how it works. For example ‘use client’ on files to mark a clientsided component. It taught me how to communicate from server to public I am proud as alot of messages have been left already, and the fact that a real website I made is actually running and working properly. You can go to https://oceantype.vercel.app for testing. Mobile is supported too", "repo": "https://github.com/Hyperworks-Studio/oceantype", "demo": "https://oceantype.vercel.app/"}]...
|
[{"post_id": 7489, "ts": "2026 [{"post_id": 7489, "ts": "2026-06-12T14:30:02Z", "hours": 1.055, "text": "Bugs fixed I have fixed the counter bar. Previously, It would just accept a initial message count from the server and increment every new message. This is prone is some issues and does not hydrate properly I have now fixed this by just listening to postgresql changes and applying state immediantly on client. Features added Mobile is now more optimized, as it changed the interval to “roll” for recycled messages from 250ms to 1000ms on mobile. Same with the message spawning height, on mobile it would spawn on the visible page which is not very convincing as a effect. I used a new package: react-device-detect to check for mobile. Below is the code for counter, I fetch the initial counter in a promise, and apply. Then we also listen for changes and apply"}, {"post_id": 6236, "ts": "2026-06-10T14:15:06Z", "hours": 1.8453, "text": "New features and fixes: I have added transitions between the main page and the info page, which is needed because it was very awkward without it I also fixed the scrollbar in the text area so that it has no background when hovered. Here is a demonstration video where I test out the websites (message filtering, rate limiting) The messages here are left by real people who I have shared the website with! But, there still is a problem with the counter, as it has stale data that is not hydrated from the database. Thus next devlog I will be fixing that. If you want to drop by and say something: https://oceantype.vercel.app/"}, {"post_id": 5352, "ts": "2026-06-09T02:51:09Z", "hours": 0.5286, "text": "Oceantype, A website where you can leave a message into the ocean where anyone can read it. Old messages are recycled when no one is typing anything. This is a project I made to learn more about web dev, before I discovered the stardance challenge. I have now added text moderation (before this it wasn’t), by using the package obscenity found on npm. Before this, I tried using openai’s moderation which they said was free, but it didn’t work for me. (Error, too many requests when i only sent one message) Now if the message contains any profanities it will be filtered out! Also this is a project I have started before stardance challenge. What I used to make this website: nextjs supabase tailwind css"}]...
|
Title: Oceantype by @teakzc | Stardance
Devlogs:
Title: Oceantype by @teakzc | Stardance
Devlogs:
Oceantype, A website where you can leave a message into the ocean where anyone can read it. Old messages are recycled when no one is typing anything. This is a project I made to learn more about web dev, before I discovered the stardance challenge. I have now added text moderation (before this it wasn’t), by using the package obscenity found on npm. Before this, I tried using openai’s moderation which they said was free, but it didn’t work for me. (Error, too many requests when i only sent one message) Now if the message contains any profanities it will be filtered out! Also this is a project I have started before stardance challenge. What I used to make this website: nextjs supabase tailwind css
New features and fixes: I have added transitions between the main page and the info page, which is needed because it was very awkward without it I also fixed the scrollbar in the text area so that it has no background when hovered. Here is a demonstration video where I test out the websites (message filtering, rate limiting) The messages here are left by real people who I have shared the website with! But, there still is a problem with the counter, as it has stale data that is not hydrated from the database. Thus next devlog I will be fixing that. If you want to drop by and say something: https://oceantype.vercel.app/
Bugs fixed I have fixed the counter bar. Previously, It would just accept a initial message count from the server and increment every new message. This is prone is some issues and does not hydrate properly I have now fixed this by just listening to postgresql changes and applying state immediantly on client. Features added Mobile is now more optimized, as it changed the interval to “roll” for recycled messages from 250ms to 1000ms on mobile. Same with the message spawning height, on mobile it would spawn on the visible page which is not very convincing as a effect. I used a new package: react-device-detect to check for mobile. Below is the code for counter, I fetch the initial counter in a promise, and apply. Then we also listen for changes and apply
Ships:
I made a website where anyone can express any thoughts and leave it in the ocean for anyone to see. Messages are circulated (when no new messages are sent) frequently just like objects floating around in the ocean current. The challenge of this is to learn supabase and nextjs. I already have experience with react, so just some guidance from ai taught me how it works. For example ‘use client’ on files to mark a clientsided component. It taught me how to communicate from server to public I am proud as alot of messages have been left already, and the fact that a real website I made is actually running and working properly. You can go to https://oceantype.vercel.app for testing. Mobile is supported too...
|
1793238564.2868392
|
1793324964.2868392
|
|
12614
|
My first slack bot! by @Nebula | Stardance
|
Nebula
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-11T17:31:50Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple bot for sending your messages as a proxy. I learnt how to use slack API and the hardest thing was to figure out how to send in channel messages after changing the username for a message.", "repo": "https://github.com/NebulaDev09/Plurabot", "demo": "https://hackclub.enterprise.slack.com/archives/C0B9HF17A95"}]...
|
[{"post_id": 6937, "ts": "2026 [{"post_id": 6937, "ts": "2026-06-11T17:02:24Z", "hours": 4.255, "text": "Completed my first slack bot. Basically a utility for people with plurality. You can create proxies and use them to message. Some commands are, /plb-ping - to check status and latency /plb-help - to check all commands and usage /plb-member add <member_name> /plb-member remove <member_name> /plb-member list /plb-proxy <member_name> |"}]...
|
Title: My first slack bot! by @Nebula | Stardance
Title: My first slack bot! by @Nebula | Stardance
Devlogs:
Completed my first slack bot. Basically a utility for people with plurality. You can create proxies and use them to message. Some commands are, /plb-ping - to check status and latency /plb-help - to check all commands and usage /plb-member add <member_name> /plb-member remove <member_name> /plb-member list /plb-proxy <member_name> |
Ships:
I made a simple bot for sending your messages as a proxy. I learnt how to use slack API and the hardest thing was to figure out how to send in channel messages after changing the username for a message....
|
1793224431.7504733
|
1793310831.7504733
|
|
12619
|
G-Lens by @urged-st | Stardance
|
urged-st
|
1
|
13.0
|
166
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-27T12:09:23Z", "hours": 13.0, "multiplier": 13.25, "payout": 166, "blessing": "neutral", "text": "I have developed a functioning gravitational lensing simulator, where you can drag a massive object across a real deep field image and watch it warp the light from background galaxies in real time. You can adjust the mass of the lens and switch between presets simulating different object types: a simple lens, black hole, neutron star, and galaxy cluster, each with a distinct visual appearance. The most technically challenging part was the rendering architecture. Rather than handling everything in p5.js, I wrote a custom GLSL fragment shader running in WebGL to perform the actual light deflection, with p5.js running as a separate overlay layer for the UI and lens visuals. This was my first time writing a shader, and getting the aspect ratio correction and UV space deflection maths to work correctly took a long time. I also had to carefully calibrate the p5 lens visual to match the shader’s distortion radius, since they compute size differently. The landing overlay and info cards took a significant amount of time across many iterations because I wanted the design to feel polished and intentional rather than throwaway, and I’m especially happy with how the article view and card animations turned out. If the colour scheme and UI style look familiar, that’s intentional cause I’ve developed a consistent design language across my simulators, using the same typefaces and colour palette to give them a coherent identity. One of the main limitations is having to model everything as a perfect circle as I have never made a shader before this, but too complex and users won’t really enjoy it. Thanks for reading, hope you find this interesting.", "repo": "https://github.com/urged-st/gravi-lens-sim", "demo": "https://g-lens-sim.vercel.app"}]...
|
[{"post_id": 16860, "ts": "202 [{"post_id": 16860, "ts": "2026-06-27T11:21:32Z", "hours": 3.6564, "text": "Massive G-Lens update: Shipping NOW! Ok so I have been polishing this up now, making it look complete and just using trial and error to adjust the values for distortion cause there were quite a few annoying issues with that. Now, I present the finished G-Lens simulator. So, what have I done since my last devlog? I’ll split it into sections for you. UI: Added a dedicated side panel for stats, where there is a low opacity rectangle to create separation from the background image as it was hard to read the stats before. Added labels to everything where needed Changed the style of the “simple” preset from a solid blue circle to a circle with a blue glow, it’s nothing necessary but just looks better than a solid circle. Functionality: Added bg switcher Added auto scaling to each bg - this was necessary as different images had galaxies of different sizes, so the same massive black hole would look disproportionate if you used the same default scaling. So, I changed the scaling based on which image it is (no auto detect or anything but you see the point lol) Added a show/hide button for the lensing - previously this would prevent lens movement but there wasn’t really a reason to restrict this so I reverted it. Of course, we needed a reset button lol. Had to change distortion scaling with trial and error (this was the majority of 2hrs) and also modelling and remodelling the distort to match the scaling of the size of the lens. ^ the above changes aren’t chronological btw, but if you need it like that, my video devlogs on instagram are there. also I added the two new backgrounds as the famous Hubble Ultra Deep Fields from 2004 and 2014"}, {"post_id": 10179, "ts": "2026-06-16T19:51:25Z", "hours": 1.4928, "text": "PRESETS PRESETS PRESETS If you have seen my other sim, you’ll know I wasted no time on adding presets. Well I now have presets for this sim too to replicate lensing from different celestial bodies Also, the distortion was kinda eliptical, so I had to fix this as it would change due to different aspect ratios (now its circular). Added a mass slider, this had some layering issues before but thats not a problem now. I had to fix a bug where the field size and lens size increased at different rates (my stupid ahh used two different equations) so I just rewrote the equations I used for both. Overall a pretty productive 1hr 30mins, will probably add MORE UI features to make it feel more polished, change the bg image etc. Also probably a toggle lensing button. See you in the next one! all video devlogs are at https://instagram.com/urged.st"}, {"post_id": 8175, "ts": "2026-06-13T16:56:27Z", "hours": 4.1161, "text": "I FORGOT TO MAKE A LOG Okay so for the last 4 hours i’ve been fighting with my shader code as it didnt work for a long time, but it finally works. What was the issue? when using shaders on pngs, sometimes the edges and transparent areas render weird I thought my code was wrong, but in reality I just had to switch the image type. issue #2 was that the blue circle, which is the lens (had to make it obvious for debugging) was firstly having inverted movement to the actual distortion field, and secondly sometimes just not showing up. to fix the inverted movement, I just mapped the actual circle’s position to the field’s coords. (btw, the inversion was caused by webgl canvas and p5.js canvas having different coordinate systems) to fix it not showing up, that was just a layering issue. Overall, that 4 hour period was a rollercoaster and i’m glad its over. If you want to see how it broke (I didnt devlog this cause I was too preoccupied) there’s a video devlog on my instagram: https://www.instagram.com/urged.st/"}, {"post_id": 6855, "ts": "2026-06-11T14:42:13Z", "hours": 1.8492, "text": "Been toying around with distortion lately, I’m still torn between making a full on shader or just having distortion to look like lensing. Most of my time spent has been trial and error with different ways of distorting, from basic inward radial distortion to a more complex particle tracing distortion. I am gonna try and perfect this before moving on I think, because if I can’t get this right then in my opinion I have a long way to go before making a shader. added mass slider, larger masses = more gravity, so more lensing/distortion! made the source draggable, but I don’t know how useful this really is lol (maybe easier to centre, to see einstein rings?)"}, {"post_id": 5916, "ts": "2026-06-09T21:52:58Z", "hours": 1.4789, "text": "G-Lens Begins! This is, to say the least, gonna be hard. I have a rough idea of what I’m gonna do, but really i have never made a shader before or used GLSL. Luckily I decided not to do this today as I was already tired and decided to make a prototype which rather than solving the lens equation, simply uses a radial distort to… well distort the space around it. I did initially try distort a point mass (yeah my bad) so obviously had to switch it to a bunch of particles densely packed. This actually shows a distort, even if its not accurate to astrophysics (this isn’t the goal for today) Next steps? think about how i will integrate actual physics into this, and read MORE research papers."}]...
|
Title: G-Lens by @urged-st | Stardance
Devlogs:
G Title: G-Lens by @urged-st | Stardance
Devlogs:
G-Lens Begins! This is, to say the least, gonna be hard. I have a rough idea of what I’m gonna do, but really i have never made a shader before or used GLSL. Luckily I decided not to do this today as I was already tired and decided to make a prototype which rather than solving the lens equation, simply uses a radial distort to… well distort the space around it. I did initially try distort a point mass (yeah my bad) so obviously had to switch it to a bunch of particles densely packed. This actually shows a distort, even if its not accurate to astrophysics (this isn’t the goal for today) Next steps? think about how i will integrate actual physics into this, and read MORE research papers.
Been toying around with distortion lately, I’m still torn between making a full on shader or just having distortion to look like lensing. Most of my time spent has been trial and error with different ways of distorting, from basic inward radial distortion to a more complex particle tracing distortion. I am gonna try and perfect this before moving on I think, because if I can’t get this right then in my opinion I have a long way to go before making a shader. added mass slider, larger masses = more gravity, so more lensing/distortion! made the source draggable, but I don’t know how useful this really is lol (maybe easier to centre, to see einstein rings?)
I FORGOT TO MAKE A LOG Okay so for the last 4 hours i’ve been fighting with my shader code as it didnt work for a long time, but it finally works. What was the issue? when using shaders on pngs, sometimes the edges and transparent areas render weird I thought my code was wrong, but in reality I just had to switch the image type. issue #2 was that the blue circle, which is the lens (had to make it obvious for debugging) was firstly having inverted movement to the actual distortion field, and secondly sometimes just not showing up. to fix the inverted movement, I just mapped the actual circle’s position to the field’s coords. (btw, the inversion was caused by webgl canvas and p5.js canvas having different coordinate systems) to fix it not showing up, that was just a layering issue. Overall, that 4 hour period was a rollercoaster and i’m glad its over. If you want to see how it broke (I didnt devlog this cause I was too preoccupied) there’s a video devlog on my instagram: https://www.instagram.com/urged.st/
PRESETS PRESETS PRESETS If you have seen my other sim, you’ll know I wasted no time on adding presets. Well I now have presets for this sim too to replicate lensing from different celestial bodies Also, the distortion was kinda eliptical, so I had to fix this as it would change due to different aspect ratios (now its circular). Added a mass slider, this had some layering issues before but thats not a problem now. I had to fix a bug where the field size and lens size increased at different rates (my stupid ahh used two different equations) so I just rewrote the equations I used for both. Overall a pretty productive 1hr 30mins, will probably add MORE UI features to make it feel more polished, change the bg image etc. Also probably a toggle lensing button. See you in the next one! all video devlogs are at https://instagram.com/urged.st
Massive G-Lens update: Shipping NOW! Ok so I have been polishing this up now, making it look complete and just using trial and error to adjust the values for distortion cause there were quite a few annoying issues with that. Now, I present the finished G-Lens simulator. So, what have I done since my last devlog? I’ll split it into sections for you. UI: Added a dedicated side panel for stats, where there is a low opacity rectangle to create separation from the background image as it was hard to read the stats before. Added labels to everything where needed Changed the style of the “simple” preset from a solid blue circle to a circle with a blue glow, it’s nothing necessary but just looks better than a solid circle. Functionality: Added bg switcher Added auto scaling to each bg - this was necessary as different images had galaxies of different sizes, so the same massive black hole would look disproportionate if you used the same default scaling. So, I changed the scaling based on which image it is (no auto detect or anything but you see the point lol) Added a show/hide button for the lensing - previously this would prevent lens movement but there wasn’t really a reason to restrict this so I reverted it. Of course, we needed a reset button lol. Had to change distortion scaling with trial and error (this was the majority of 2hrs) and also modelling and remodelling the distort to match the scaling of the size of the lens. ^ the above changes aren’t chronological btw, but if you need it like that, my video devlogs on instagram are there. also I added the two new backgrounds as the famous Hubble Ultra Deep Fields from 2004 and 2014
Ships:
I have developed a functioning gravitational lensing simulator, where you can drag a massive object across a real deep field image and watch it warp the light from background galaxies in real time. You can adjust the mass of the lens and switch between presets simulating different object types: a simple lens, black hole, neutron star, and galaxy cluster, each with a distinct visual appearance. The most technically challenging part was the rendering architecture. Rather than handling everything in p5.js, I wrote a custom GLSL fragment shader running in WebGL to perform the actual light deflection, with p5.js running as a separate overlay layer for the UI and lens visuals. This was my first time writing a shader, and getting the aspect ratio correction and UV space deflection maths to work correctly took a long time. I also had to carefully calibrate the p5 lens visual to match the shader’s distortion radius, since they compute size differently. The landing overlay and info cards took a significant amount of time across many iterations because I wanted the design to feel polished and intentional rather than throwaway, and I’m especially happy with how the article view and card animations turned out. If the colour scheme and UI style look familiar, that’s intentional cause I’ve developed a consistent design language across my simulators, using the same typefaces and colour palette to give them a coherent identity. One of the main limitations is having to model everything as a perfect circle as I have never made a shader before this, but too complex and users won’t really enjoy it. Thanks for reading, hope you find this interesting....
|
1792878741.7895591
|
1793742741.7895591
|
|
12622
|
FGC WeekLog by @Osmosis | Stardance
|
Osmosis
|
1
|
10.34
|
96
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T02:53:01Z", "hours": 5.0, "multiplier": 18.19, "payout": 96, "blessing": "neutral", "text": "What did you make? WeekLog, a meeting compliance tracker for my FIRST Global Challenge robotics team (Team Qatar, ~21 people). Instead of being a file dump like a shared Drive folder, the spine is a calendar that creates obligations: I mark meeting days, each day gets a checklist of required materials, and the whole thing rolls up into a red/amber/green dashboard that tells you at a glance if a meeting is missing something or a deadline is coming up. It also tracks standalone deadlines like our social media challenges, which actually score competition points. What was challenging? Three honest ones. I designed the requirements system assuming every meeting needs the same checklist, then realized a CAD session and a strategy meeting have totally different needs, so I had to add per-meeting editable requirements without breaking the dashboard logic. There was a magic-link auth bug where logins kept bouncing to localhost (turned out to be a stale Supabase config). And building a public demo of an app that needs a backend meant faking the entire backend in the browser. What are you proud of? The architecture, specifically the boring parts that don’t show. Every network call funnels through one tiny choke point, and all the data logic sits in a pure layer the UI can’t touch. That one decision is why a full visual redesign dropped in without touching the math, and why I could replace the whole backend with a browser-based fake for the demo without rewriting a single feature screen. Invisible structure is the kind that saves you later. What should people know to test it? Use the demo link. It’s loaded with realistic sample data, dates are relative to today so you’ll see a mix of healthy and flagged days. Everyone who signs in is an admin, so poke at everything: mark meeting days, edit requirements, set deadlines, watch the dashboard go red/amber/green. There’s a “DEMO · Reset” pill in the corner to wipe it back to clean. Two known shortcuts: uploaded images show a placeholder after refresh (blobs are in-memory), and ZIP export downloads a manifest instead of a real zip.", "repo": "https://github.com/Osmiosis/FGC-2026-WeekLog", "demo": "https://fgc-weeklog-demo.pages.dev/"}]...
|
[{"post_id": 20689, "ts": "202 [{"post_id": 20689, "ts": "2026-07-02T10:56:52Z", "hours": 5.3364, "text": "Devlog 4 - button that did nothing, and a notebook helper Two things this session. One was a bug that taught me the difference between “out of memory” and “out of time,” and a whole new feature for my robotics team. WeekLog has a “Download all media” button that zips up every photo the team’s uploaded. It just… didn’t work. No error, no download, nothing. The worst kind of bug because I had no idea where the problem lied First real clue came from the browser network tab: the request was coming back 503, and the error page was Cloudflare’s, not my app’s. It meant my code wasn’t throwing an error, the platform was killing my worker before it could respond. So the frontend was hiding a failure it should have shown, first I made it actually show me the error instead of just letting it fail Then the real chase. My worker was loading every file fully into memory and building the zip all at once, so I assumed it was running out of memory. I rewrote it to stream the zip instead, pulling one file at a time. Felt good. Still broke. So I tailed the live worker logs and got the actual smoking gun: “outcome”: “exceededCpu”. It wasn’t memory at all. The media set is about 404 MB, and just computing the checksums to zip that much data is more compute than a free-tier worker gets per request. Streaming fixed the memory ceiling and I still hit a completely separate CPU ceiling behind it. You genuinely cannot zip 404 MB inside one free worker call. The fix was to stop trying. Instead of the worker building the zip, it now sends a tiny manifest (just a file list, no actual bytes, comes back in ~2.4 seconds) and the browser pulls each file and builds the zip locally. Worker work stays tiny, it scales to any size, and it stays free. The lesson I’m keeping: don’t assume the first plausible cause is the only cause. “Streaming fixed it” was true and the thing still broke. The Notebook Prep pipeline. The bigger build. FGC has an engineering-documentation award judged on the journey a team took building their robot, and WeekLog already has our whole logged season sitting in it. So I built a pipeline that mines that logged data into notebook-prep material: per-subsystem timelines, a gap analysis that flags where our documentation is weak against what judges actually look for, a decision-log extractor, and a draft scaffold. The rule I built the whole thing around: it is a super-helper, never a ghost-writer. Every output is deliberately un-submittable, it hands you your own logged words as raw material plus [NEEDS: …] prompts where a human has to add the reasoning and the numbers. It never writes notebook prose and never invents a fact. A notebook that reads like an AI wrote it loses that award, because the whole point is proving the humans did the thinking. So the tool audits and prompts, it doesn’t author. The part I’m proud of architecturally: there’s no AI running in the app at all, and no ongoing cost. The deterministic stuff (timelines, coverage counts) is plain worker compute, and the actual reasoning is done by me in Claude Code following a runbook, then published into the app through a secret-gated write-back route. The app just renders whatever got published as red/amber/green cards and checklists. It doesn’t know or care that AI produced a report. Zero runtime AI cost, and the reasoning is grounded in a reference brief on what FGC judges reward so it’s not just generic advice. Shipped and live: the ZIP button works via the browser now, and Notebook Prep has all four tabs (Timeline, Gaps, Decisions, Scaffold) carrying real published content. 41 commits this session. More to come: judge-question rehearsal generated from our actual logged work, tracking notebook health over the season, and tagging photos to subsystems at upload so the timelines get richer."}, {"post_id": 9677, "ts": "2026-06-16T02:47:42Z", "hours": 0.6258, "text": "Devlog 3 A public demo, backend and all, with no backend The problem with showing WeekLog to anyone outside my team: it needs a Cloudflare Worker, a D1 database, and R2 storage to do anything. You can’t just hand someone a link and let them click around. So for a Stardance demo I needed a version that runs entirely in the browser, with realistic data, that nobody can break. Here’s the thing that made it almost free to build: every single data call in the app already went through just four functions in one file (api.ts). I set it up that way months ago so the UI never talks to the network directly. So to fake the entire backend, I didn’t touch a single feature screen. I swapped those four functions to delegate to an in-browser mock instead of fetch, ported the red/amber/green compliance logic verbatim out of the Worker, and seeded sample data into localStorage with dates relative to today so the demo always shows a realistic spread of healthy and flagged days. A little “DEMO · Reset” pill in the corner lets anyone wipe it back to clean. The lesson worth stealing: if every network call in your app funnels through one tiny choke point, you can replace your whole backend with a fake one without rewriting the app. This is the second time that one boring decision has paid off (the first was dropping in a full redesign without touching the logic). It’s honest about its own shortcuts, documented in a DEMO.md: uploaded image blobs live in memory so they show a placeholder after a refresh, and the ZIP export downloads a manifest instead of real zipping. Real Supabase magic-link auth is kept so the sign-in flow is genuine; everyone who logs in is just made an admin over the sample data. 40/40 tests pass, clean production build, tsc clean. Live as a static site on Cloudflare Pages, no Worker behind it. More to come: wiring the real Google Drive connector, a proper compliance summary view, and per-file delete. Next up: wiring the real Google Drive sync, a team-wide compliance summary view, and per-file delete."}, {"post_id": 6349, "ts": "2026-06-10T18:05:56Z", "hours": 1.6925, "text": "Quick one today. I needed multi-file uploads on meeting days, you should be able to attach several photos to a single meeting requirement, not just one. Turns out I’d already solved this exact problem for deadline proof files a while back. So instead of reinventing it, I basically reused the pattern I’d already built: same upload handling, same storage path, same way of listing and attaching multiple files to one thing. Honestly the satisfying part is that this was easy because of how I set things up earlier. Past me put the upload wiring in one shared place instead of copy-pasting it per feature, so extending it from “deadlines can have many files” to “meetings can too” was a small change, not a rewrite. It’s a nice reminder that the boring structural decisions pay off later. The work you do once to make the next change cheap is invisible until the moment it saves you. Onto the next thing. Still want to wire up the real Google Drive connector (the stub’s already in place for when our mentors share a folder), add a proper compliance summary view, and let people delete individual files."}, {"post_id": 5887, "ts": "2026-06-09T21:00:10Z", "hours": 3.0047, "text": "Devlog Went from empty repo to a deployed, working app this session. Here’s what’s actually in it. The core is a calendar. I mark which days are meeting days (with a bulk option so I can set “every Tuesday and Thursday” in one go instead of clicking 40 times). The second I mark a day, it snapshots the current requirement checklist onto that day, things like attendance, robot accomplishments, build needs, performance goals, photos of sketches. I built it as a snapshot on purpose so that editing the requirements later doesn’t reach back and rewrite old meetings. On each meeting day you can take attendance against the full 21-person roster, log accomplishments and build needs and failures (each tagged to a subsystem like drivetrain/shooter/climber), and upload photos and docs. Files go to Cloudflare R2. Then the part that makes it more than a folder: a compliance engine that derives a red/amber/green status for every day and every deadline. Green if all the compulsory stuff is in, amber if it’s recent and still in progress, red if a past meeting is missing something required. All of that rolls up into a dashboard that opens with one big team status plus a “needs attention” list of everything currently red, so you can see in two seconds where the team is behind. It also tracks standalone deadlines separate from meetings (our social media challenges have their own due dates and actually score competition points), and those go red when overdue. There’s a search/browse view across everything logged, an admin area for managing the roster and editing what counts as compulsory, and ZIP export of any day’s media plus a summary. Stack is all Cloudflare free tier: React + Vite frontend on Pages, a TypeScript Hono API on Workers, D1 (SQLite) for data, R2 for files, Supabase magic-link for login. 71 tests on the worker covering the compliance logic. Two things I’m glad I built in. A hard free-tier guard: files cap at 10MB and the worker refuses any upload that’d push total storage past 8GB, so a school project can never surprise me with a bill. And a clean separation between the UI and all the network/auth wiring, which let me drop in the full Team Qatar redesign without touching how anything works. This is v1, there’s a Google Drive connector already stubbed in for when our mentors share a folder, and a lot more I want to add. More to come."}]...
|
Title: FGC WeekLog by @Osmosis | Stardance
Devlog Title: FGC WeekLog by @Osmosis | Stardance
Devlogs:
Devlog Went from empty repo to a deployed, working app this session. Here’s what’s actually in it. The core is a calendar. I mark which days are meeting days (with a bulk option so I can set “every Tuesday and Thursday” in one go instead of clicking 40 times). The second I mark a day, it snapshots the current requirement checklist onto that day, things like attendance, robot accomplishments, build needs, performance goals, photos of sketches. I built it as a snapshot on purpose so that editing the requirements later doesn’t reach back and rewrite old meetings. On each meeting day you can take attendance against the full 21-person roster, log accomplishments and build needs and failures (each tagged to a subsystem like drivetrain/shooter/climber), and upload photos and docs. Files go to Cloudflare R2. Then the part that makes it more than a folder: a compliance engine that derives a red/amber/green status for every day and every deadline. Green if all the compulsory stuff is in, amber if it’s recent and still in progress, red if a past meeting is missing something required. All of that rolls up into a dashboard that opens with one big team status plus a “needs attention” list of everything currently red, so you can see in two seconds where the team is behind. It also tracks standalone deadlines separate from meetings (our social media challenges have their own due dates and actually score competition points), and those go red when overdue. There’s a search/browse view across everything logged, an admin area for managing the roster and editing what counts as compulsory, and ZIP export of any day’s media plus a summary. Stack is all Cloudflare free tier: React + Vite frontend on Pages, a TypeScript Hono API on Workers, D1 (SQLite) for data, R2 for files, Supabase magic-link for login. 71 tests on the worker covering the compliance logic. Two things I’m glad I built in. A hard free-tier guard: files cap at 10MB and the worker refuses any upload that’d push total storage past 8GB, so a school project can never surprise me with a bill. And a clean separation between the UI and all the network/auth wiring, which let me drop in the full Team Qatar redesign without touching how anything works. This is v1, there’s a Google Drive connector already stubbed in for when our mentors share a folder, and a lot more I want to add. More to come.
Quick one today. I needed multi-file uploads on meeting days, you should be able to attach several photos to a single meeting requirement, not just one. Turns out I’d already solved this exact problem for deadline proof files a while back. So instead of reinventing it, I basically reused the pattern I’d already built: same upload handling, same storage path, same way of listing and attaching multiple files to one thing. Honestly the satisfying part is that this was easy because of how I set things up earlier. Past me put the upload wiring in one shared place instead of copy-pasting it per feature, so extending it from “deadlines can have many files” to “meetings can too” was a small change, not a rewrite. It’s a nice reminder that the boring structural decisions pay off later. The work you do once to make the next change cheap is invisible until the moment it saves you. Onto the next thing. Still want to wire up the real Google Drive connector (the stub’s already in place for when our mentors share a folder), add a proper compliance summary view, and let people delete individual files.
Devlog 3 A public demo, backend and all, with no backend The problem with showing WeekLog to anyone outside my team: it needs a Cloudflare Worker, a D1 database, and R2 storage to do anything. You can’t just hand someone a link and let them click around. So for a Stardance demo I needed a version that runs entirely in the browser, with realistic data, that nobody can break. Here’s the thing that made it almost free to build: every single data call in the app already went through just four functions in one file (api.ts). I set it up that way months ago so the UI never talks to the network directly. So to fake the entire backend, I didn’t touch a single feature screen. I swapped those four functions to delegate to an in-browser mock instead of fetch, ported the red/amber/green compliance logic verbatim out of the Worker, and seeded sample data into localStorage with dates relative to today so the demo always shows a realistic spread of healthy and flagged days. A little “DEMO · Reset” pill in the corner lets anyone wipe it back to clean. The lesson worth stealing: if every network call in your app funnels through one tiny choke point, you can replace your whole backend with a fake one without rewriting the app. This is the second time that one boring decision has paid off (the first was dropping in a full redesign without touching the logic). It’s honest about its own shortcuts, documented in a DEMO.md: uploaded image blobs live in memory so they show a placeholder after a refresh, and the ZIP export downloads a manifest instead of real zipping. Real Supabase magic-link auth is kept so the sign-in flow is genuine; everyone who logs in is just made an admin over the sample data. 40/40 tests pass, clean production build, tsc clean. Live as a static site on Cloudflare Pages, no Worker behind it. More to come: wiring the real Google Drive connector, a proper compliance summary view, and per-file delete. Next up: wiring the real Google Drive sync, a team-wide compliance summary view, and per-file delete.
Devlog 4 - button that did nothing, and a notebook helper Two things this session. One was a bug that taught me the difference between “out of memory” and “out of time,” and a whole new feature for my robotics team. WeekLog has a “Download all media” button that zips up every photo the team’s uploaded. It just… didn’t work. No error, no download, nothing. The worst kind of bug because I had no idea where the problem lied First real clue came from the browser network tab: the request was coming back 503, and the error page was Cloudflare’s, not my app’s. It meant my code wasn’t throwing an error, the platform was killing my worker before it could respond. So the frontend was hiding a failure it should have shown, first I made it actually show me the error instead of just letting it fail Then the real chase. My worker was loading every file fully into memory and building the zip all at once, so I assumed it was running out of memory. I rewrote it to stream the zip instead, pulling one file at a time. Felt good. Still broke. So I tailed the live worker logs and got the actual smoking gun: “outcome”: “exceededCpu”. It wasn’t memory at all. The media set is about 404 MB, and just computing the checksums to zip that much data is more compute than a free-tier worker gets per request. Streaming fixed the memory ceiling and I still hit a completely separate CPU ceiling behind it. You genuinely cannot zip 404 MB inside one free worker call. The fix was to stop trying. Instead of the worker building the zip, it now sends a tiny manifest (just a file list, no actual bytes, comes back in ~2.4 seconds) and the browser pulls each file and builds the zip locally. Worker work stays tiny, it scales to any size, and it stays free. The lesson I’m keeping: don’t assume the first plausible cause is the only cause. “Streaming fixed it” was true and the thing still broke. The Notebook Prep pipeline. The bigger build. FGC has an engineering-documentation award judged on the journey a team took building their robot, and WeekLog already has our whole logged season sitting in it. So I built a pipeline that mines that logged data into notebook-prep material: per-subsystem timelines, a gap analysis that flags where our documentation is weak against what judges actually look for, a decision-log extractor, and a draft scaffold. The rule I built the whole thing around: it is a super-helper, never a ghost-writer. Every output is deliberately un-submittable, it hands you your own logged words as raw material plus [NEEDS: …] prompts where a human has to add the reasoning and the numbers. It never writes notebook prose and never invents a fact. A notebook that reads like an AI wrote it loses that award, because the whole point is proving the humans did the thinking. So the tool audits and prompts, it doesn’t author. The part I’m proud of architecturally: there’s no AI running in the app at all, and no ongoing cost. The deterministic stuff (timelines, coverage counts) is plain worker compute, and the actual reasoning is done by me in Claude Code following a runbook, then published into the app through a secret-gated write-back route. The app just renders whatever got published as red/amber/green cards and checklists. It doesn’t know or care that AI produced a report. Zero runtime AI cost, and the reasoning is grounded in a reference brief on what FGC judges reward so it’s not just generic advice. Shipped and live: the ZIP button works via the browser now, and Notebook Prep has all four tabs (Timeline, Gaps, Decisions, Scaffold) carrying real published content. 41 commits this session. More to come: judge-question rehearsal generated from our actual logged work, tracking notebook health over the season, and tagging photos to subsystems at upload so the timelines get richer.
Ships:
What did you make? WeekLog, a meeting compliance tracker for my FIRST Global Challenge robotics team (Team Qatar, ~21 people). Instead of being a file dump like a shared Drive folder, the spine is a calendar that creates obligations: I mark meeting days, each day gets a checklist of required materials, and the whole thing rolls up into a red/amber/green dashboard that tells you at a glance if a meeting is missing something or a deadline is coming up. It also tracks standalone deadlines like our social media challenges, which actually score competition points. What was challenging? Three honest ones. I designed the requirements system assuming every meeting needs the same checklist, then realized a CAD session and a strategy meeting have totally different needs, so I had to add per-meeting editable requirements without breaking the dashboard logic. There was a magic-link auth bug where logins kept bouncing to localhost (turned out to be a stale Supabase config). And building a public demo of an app that needs a backend meant faking the entire backend in the browser. What are you proud of? The architecture, specifically the boring parts that don’t show. Every network call funnels through one tiny choke point, and all the data logic sits in a pure layer the UI can’t touch. That one decision is why a full visual redesign dropped in without touching the math, and why I could replace the whole backend with a browser-based fake for the demo without rewriting a single feature screen. Invisible structure is the kind that saves you later. What should people know to test it? Use the demo link. It’s loaded with realistic sample data, dates are relative to today so you’ll see a mix of healthy and flagged days. Everyone who signs in is an admin, so poke at everything: mark meeting days, edit requirements, set deadlines, watch the dashboard go red/amber/green. There’s a “DEMO · Reset” pill in the corner to wipe it back to clean. Two known shortcuts: uploaded images show a placeholder after refresh (blobs are in-memory), and ZIP export downloads a manifest instead of a real zip....
|
1793109189.3918498
|
1793195589.3918498
|
|
12747
|
Hack-A-Gent by @to_aarav_g | Stardance
|
to_aarav_g
|
1
|
177.01
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T13:09:15Z", "hours": 141.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? Hack-A-Gent — an AI coding agent that can plan, write, test and fix code for a hackathon project. What was challenging? Getting the agent to fix its own mistakes without breaking existing code. Cross-file dependencies and keeping shared code safe were probably the hardest parts. What are you proud of? I got it to go beyond just generating code and actually test and repair what it creates. How do I run it? Clone the repo, run npm install , create a .env with your Gemini API key, then run npm run dev . Start with a small coding task and let the agent work through it.", "repo": "https://github.com/Theuser1211/Hack-A-Gent", "demo": "https://github.com/Theuser1211/Hack-A-Gent/releases/"}]...
|
[{"post_id": 77987, "ts": "202 [{"post_id": 77987, "ts": "2026-10-09T03:55:17Z", "hours": 3.6219, "text": "Greeting! I have made 1 bid decision and ported the whole hag to python scipt using external libraries instead of building every agent myself. But for this we need gemini-cli configured with a paid account(which I dont have!). Sad, but I am happy rest all of hag works without any issues"}, {"post_id": 76687, "ts": "2026-10-04T10:37:59Z", "hours": 3.055, "text": "Got 208/208 tests to pass. Also I have implemented the providor for LLM as Gemini(Primary) -> Openrouter -> NVIDIA. So that maximum success rates can be achived. Also for anyone to test out HAG, just use README.md from github to install HAG, then setup up your API keys in the .env (don’t worry it’s all local), and you are ready to go."}, {"post_id": 76124, "ts": "2026-10-02T12:50:50Z", "hours": 3.5364, "text": "Heyyy, I have updated my README.md and also fixed my failing tests by now. I guess I am ready to ship Hack-A-Gent for Ship#1"}, {"post_id": 75504, "ts": "2026-09-30T09:17:25Z", "hours": 25.7925, "text": "I have realised that using NVIDIA NIMS is the issue, my app is almost working. , but the providors is failing at this point. I will try using gemini and openrouter to chek if it will work or not. I guess I will not be able to. And I also need to update my README.md for some reason it looks like AI written, I will write it in a funny way now."}, {"post_id": 72689, "ts": "2026-09-23T14:43:47Z", "hours": 20.6364, "text": "Fixed a pretty annoying bug today. HAG can now actually reach Nemotron during auto-repair after NVIDIA 503s. One step closer to a full successful run."}, {"post_id": 42039, "ts": "2026-08-06T16:28:40Z", "hours": 8.8503, "text": "Major progress today! I completed the Phase 1 stabilization of Hack-A-Gent by resolving all remaining test and build issues (1721/1721 tests passing, clean TypeScript build). I also performed a deep forensic investigation into the AI generation pipeline and discovered a critical issue where the router was rejecting recoverable LLM responses before they reached the JSON extraction layer. With the core architecture now stable, the focus shifts to eliminating unnecessary template fallbacks and improving the quality of AI-generated hackathon projects."}, {"post_id": 41361, "ts": "2026-08-05T15:03:39Z", "hours": 13.7719, "text": "Today’s work focused on stabilizing Hack-A-Gent for a production-ready release. I fixed the Improvement Pass so it now completes the full critique -> patch -> build -> judge cycle with measurable score improvements, strengthened template fallback generation with complete project scaffolding and improved styling, added automatic generation of deployment assets like LICENSE and vercel.json, and implemented comprehensive child-process lifecycle management to ensure the CLI exits cleanly after execution. I also streamlined the interview flow by removing unnecessary prompts, improved validation, and verified the project with a clean TypeScript build and extensive unit and feature test coverage."}, {"post_id": 39997, "ts": "2026-08-03T10:51:49Z", "hours": 8.8792, "text": "This is session I added a better parser so I get almost 99% accuracy and also made many improvements in the code generation. Almost done and drained out from all this"}, {"post_id": 39011, "ts": "2026-08-01T17:39:57Z", "hours": 14.4528, "text": "Spent this session improving Hack-A-Gent’s reliability and generation pipeline. Fixed a major architectural issue where generated apps were being overwritten by fallback templates, allowing AI-generated pages to be preserved correctly. Also resolved several runtime and build issues, improved validation, and verified the full pipeline by generating, building, and running a real hackathon project successfully. The next focus is improving project quality so the generated apps are more original, context-aware, and competitive in real hackathons."}, {"post_id": 35101, "ts": "2026-07-26T09:58:01Z", "hours": 11.1589, "text": "Today was mostly about making Hack-A-Gent more reliable instead of adding new features. I finally tracked down a long-standing parser issue that turned out to be an architectural problem: the CLI and the analysis pipeline were using two completely different parsers. I merged everything into a single parser, updated the production build to include it, and verified that all parser regression tests and the full test suite still pass. After that, I confirmed the CLI now extracts real judging criteria like Impact and Innovation instead of mistakenly treating navigation links as judging criteria. With parsing in a much better place, I shifted focus toward hardening the overall pipeline by planning phased reliability work around generation, auto-repair, validation, and recovery so the goal is no longer just generating code, but consistently producing projects that typecheck, build, run, and are ready for submission."}, {"post_id": 33322, "ts": "2026-07-23T04:04:01Z", "hours": 8.9597, "text": "This week I focused on making Hack-A-Gent stable and release-ready instead of adding new features. I cleaned up dead code, removed unused files, improved CLI logging and error messages, and verified the project with a full build and test pass. The CLI now parses real hackathon pages, plans projects, and gracefully falls back when AI providers are unavailable. I also ran end-to-end tests on real hackathon URLs to identify the final issues before release. The remaining work is improving template fallback and validation so every generated project is immediately usable, bringing Hack-A-Gent closer to its first stable release."}, {"post_id": 27158, "ts": "2026-07-12T13:41:30Z", "hours": 6.4664, "text": "Might be on final stages, making sure the agent doesn’t blows up in users hands. Taking time but needs to be done, Hope I can ship it by this week"}, {"post_id": 26029, "ts": "2026-07-10T16:39:54Z", "hours": 22.7653, "text": "Spent today improving Hack-A-Gent’s long-term direction instead of just fixing bugs. I mapped out a roadmap to turn it into a real Devpost hackathon agent, including a hackathon qualification engine, real Devpost benchmark suite, autonomous repair loop, browser validation, and organizational learning. Also audited the current architecture to identify what already exists, what needs refactoring, and what should be built next before writing more code."}, {"post_id": 21958, "ts": "2026-07-04T05:04:47Z", "hours": 25.1944, "text": "Hack-A-Gent I built Hack-A-Gent , a CLI-based AI agent that helps developers turn a Devpost hackathon challenge into a working project in minutes. Simply paste a Devpost competition URL into the terminal, and Hack-A-Gent analyzes the challenge, extracts the judging criteria and submission requirements, plans an appropriate architecture, and generates a production-ready project scaffold. You bring your own LLM API key (Anthropic, OpenAI, Google Gemini, NVIDIA NIMs, Ollama, and more), and Hack-A-Gent orchestrates the rest—from understanding the hackathon prompt to generating code, documentation, and a submission-ready starting point. The goal isn’t to replace developers, but to eliminate the repetitive setup work so builders can spend more time refining their ideas, polishing their projects, and creating a great demo."}]...
|
Title: Hack-A-Gent by @to_aarav_g | Stardance
Dev Title: Hack-A-Gent by @to_aarav_g | Stardance
Devlogs:
Hack-A-Gent I built Hack-A-Gent , a CLI-based AI agent that helps developers turn a Devpost hackathon challenge into a working project in minutes. Simply paste a Devpost competition URL into the terminal, and Hack-A-Gent analyzes the challenge, extracts the judging criteria and submission requirements, plans an appropriate architecture, and generates a production-ready project scaffold. You bring your own LLM API key (Anthropic, OpenAI, Google Gemini, NVIDIA NIMs, Ollama, and more), and Hack-A-Gent orchestrates the rest—from understanding the hackathon prompt to generating code, documentation, and a submission-ready starting point. The goal isn’t to replace developers, but to eliminate the repetitive setup work so builders can spend more time refining their ideas, polishing their projects, and creating a great demo.
Spent today improving Hack-A-Gent’s long-term direction instead of just fixing bugs. I mapped out a roadmap to turn it into a real Devpost hackathon agent, including a hackathon qualification engine, real Devpost benchmark suite, autonomous repair loop, browser validation, and organizational learning. Also audited the current architecture to identify what already exists, what needs refactoring, and what should be built next before writing more code.
Might be on final stages, making sure the agent doesn’t blows up in users hands. Taking time but needs to be done, Hope I can ship it by this week
This week I focused on making Hack-A-Gent stable and release-ready instead of adding new features. I cleaned up dead code, removed unused files, improved CLI logging and error messages, and verified the project with a full build and test pass. The CLI now parses real hackathon pages, plans projects, and gracefully falls back when AI providers are unavailable. I also ran end-to-end tests on real hackathon URLs to identify the final issues before release. The remaining work is improving template fallback and validation so every generated project is immediately usable, bringing Hack-A-Gent closer to its first stable release.
Today was mostly about making Hack-A-Gent more reliable instead of adding new features. I finally tracked down a long-standing parser issue that turned out to be an architectural problem: the CLI and the analysis pipeline were using two completely different parsers. I merged everything into a single parser, updated the production build to include it, and verified that all parser regression tests and the full test suite still pass. After that, I confirmed the CLI now extracts real judging criteria like Impact and Innovation instead of mistakenly treating navigation links as judging criteria. With parsing in a much better place, I shifted focus toward hardening the overall pipeline by planning phased reliability work around generation, auto-repair, validation, and recovery so the goal is no longer just generating code, but consistently producing projects that typecheck, build, run, and are ready for submission.
Spent this session improving Hack-A-Gent’s reliability and generation pipeline. Fixed a major architectural issue where generated apps were being overwritten by fallback templates, allowing AI-generated pages to be preserved correctly. Also resolved several runtime and build issues, improved validation, and verified the full pipeline by generating, building, and running a real hackathon project successfully. The next focus is improving project quality so the generated apps are more original, context-aware, and competitive in real hackathons.
This is session I added a better parser so I get almost 99% accuracy and also made many improvements in the code generation. Almost done and drained out from all this
Today’s work focused on stabilizing Hack-A-Gent for a production-ready release. I fixed the Improvement Pass so it now completes the full critique -> patch -> build -> judge cycle with measurable score improvements, strengthened template fallback generation with complete project scaffolding and improved styling, added automatic generation of deployment assets like LICENSE and vercel.json, and implemented comprehensive child-process lifecycle management to ensure the CLI exits cleanly after execution. I also streamlined the interview flow by removing unnecessary prompts, improved validation, and verified the project with a clean TypeScript build and extensive unit and feature test coverage.
Major progress today! I completed the Phase 1 stabilization of Hack-A-Gent by resolving all remaining test and build issues (1721/1721 tests passing, clean TypeScript build). I also performed a deep forensic investigation into the AI generation pipeline and discovered a critical issue where the router was rejecting recoverable LLM responses before they reached the JSON extraction layer. With the core architecture now stable, the focus shifts to eliminating unnecessary template fallbacks and improving the quality of AI-generated hackathon projects.
Fixed a pretty annoying bug today. HAG can now actually reach Nemotron during auto-repair after NVIDIA 503s. One step closer to a full successful run.
I have realised that using NVIDIA NIMS is the issue, my app is almost working. , but the providors is failing at this point. I will try using gemini and openrouter to chek if it will work or not. I guess I will not be able to. And I also need to update my README.md for some reason it looks like AI written, I will write it in a funny way now.
Heyyy, I have updated my README.md and also fixed my failing tests by now. I guess I am ready to ship Hack-A-Gent for Ship#1
Got 208/208 tests to pass. Also I have implemented the providor for LLM as Gemini(Primary) -> Openrouter -> NVIDIA. So that maximum success rates can be achived. Also for anyone to test out HAG, just use README.md from github to install HAG, then setup up your API keys in the .env (don’t worry it’s all local), and you are ready to go.
Greeting! I have made 1 bid decision and ported the whole hag to python scipt using external libraries instead of building every agent myself. But for this we need gemini-cli configured with a paid account(which I dont have!). Sad, but I am happy rest all of hag works without any issues
Ships:
What did you make? Hack-A-Gent — an AI coding agent that can plan, write, test and fix code for a hackathon project. What was challenging? Getting the agent to fix its own mistakes without breaking existing code. Cross-file dependencies and keeping shared code safe were probably the hardest parts. What are you proud of? I got it to go beyond just generating code and actually test and repair what it creates. How do I run it? Clone the repo, run npm install , create a .env with your Gemini API key, then run npm run dev . Start with a small coding task and let the agent work through it....
|
1793152411.310006
|
1793238811.310006
|
|
12928
|
Nitrogen by @lu2000luk | Stardance
|
lu2000luk
|
1
|
7.45
|
65
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-10T18:57:54Z", "hours": 7.0, "multiplier": 9.67, "payout": 65, "blessing": "neutral", "text": "Go try it: https://nitrogen-pi.vercel.app/ YT dosent work since the server has been flagged as a bot. Other platforms work tho.", "repo": "https://git.lu2000luk.com/lu2000luk/nitrogen", "demo": "https://nitrogen-pi.vercel.app/"}]...
|
[{"post_id": 8600, "ts": "2026 [{"post_id": 8600, "ts": "2026-06-14T09:30:21Z", "hours": 0.4539, "text": "Possibly fixed deployment. Changes will take into effect at 8 PM EST."}, {"post_id": 6380, "ts": "2026-06-10T18:56:51Z", "hours": 0.3869, "text": "Fixed deployment stuff"}, {"post_id": 6118, "ts": "2026-06-10T09:04:11Z", "hours": 1.3897, "text": "Web UI (the web ui is called Hydrogen but still displays the backend name Nitrogen cuz its cooler and its right next to Cobalt, thats the inspiration for the project)"}, {"post_id": 5776, "ts": "2026-06-09T18:01:47Z", "hours": 1.4194, "text": "download with yt-dlp (I fixed args!!!) cleanup file resolver server almost done i just need to fix some small bugs and add ratelimiting and some small features. Then its time to do frontend."}, {"post_id": 5676, "ts": "2026-06-09T15:36:06Z", "hours": 2.4881, "text": "Switched to Conan for package manager and added http streaming! (Debugged w/ AI since its one of my first times doing async in C++, its very wierd in my opinion)"}, {"post_id": 5487, "ts": "2026-06-09T09:17:12Z", "hours": 0.6144, "text": "FFMPEG auto download"}, {"post_id": 4963, "ts": "2026-06-08T16:31:09Z", "hours": 0.5319, "text": "yt-dlp general research yt-dlp argument formats string escape function"}]...
|
Title: Nitrogen by @lu2000luk | Stardance
Devlogs Title: Nitrogen by @lu2000luk | Stardance
Devlogs:
yt-dlp general research yt-dlp argument formats string escape function
FFMPEG auto download
Switched to Conan for package manager and added http streaming! (Debugged w/ AI since its one of my first times doing async in C++, its very wierd in my opinion)
download with yt-dlp (I fixed args!!!) cleanup file resolver server almost done i just need to fix some small bugs and add ratelimiting and some small features. Then its time to do frontend.
Web UI (the web ui is called Hydrogen but still displays the backend name Nitrogen cuz its cooler and its right next to Cobalt, thats the inspiration for the project)
Fixed deployment stuff
Possibly fixed deployment. Changes will take into effect at 8 PM EST.
Ships:
Go try it: https://nitrogen-pi.vercel.app/ YT dosent work since the server has been flagged as a bot. Other platforms work tho....
|
1793130925.502249
|
1793217325.502249
|
|
12931
|
Chess by @Robert09 | Stardance
|
Robert09
|
1
|
15.0
|
85
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-05T11:25:22Z", "hours": 15.0, "multiplier": 5.5, "payout": 85, "blessing": "neutral", "text": "I have developed a chess game that includes all standard pieces, special moves such as castling, and the game currently ends when the king is captured rather than detecting checkmate according to the official chess rules.", "repo": "https://github.com/rob456374/Chess", "demo": "https://github.com/rob456374/Chess/releases/tag/v1"}]...
|
[{"post_id": 22781, "ts": "202 [{"post_id": 22781, "ts": "2026-07-05T11:19:23Z", "hours": 0.5281, "text": "While playing the game, I noticed that the transformed pieces couldn’t capture the opponent’s pieces-they could only capture pieces from their own side. I had to track down the bug, fix it, and now it’s resolved."}, {"post_id": 22445, "ts": "2026-07-04T22:17:33Z", "hours": 1.38, "text": "I have added pawn promotion, so that when a pawn reaches the opposite side of the board, it can now be promoted to any piece of the player’s choice. With that, I have completed the project. It was a really enjoyable project, and I’m already looking forward to the next one. See you :)"}, {"post_id": 22172, "ts": "2026-07-04T14:35:12Z", "hours": 1.5094, "text": "I added the winning when you take the king."}, {"post_id": 22064, "ts": "2026-07-04T09:46:44Z", "hours": 0.5178, "text": "I’ve now added the capturing of pieces. All that’s left are the special moves for the pawn and king, and checkmate-then I’ll be finished."}, {"post_id": 21760, "ts": "2026-07-03T21:07:28Z", "hours": 1.9783, "text": "I added an eventListener so you can move the figures in the game. Next I’ll edit to take the pieces. So see you :)"}, {"post_id": 21084, "ts": "2026-07-02T21:27:01Z", "hours": 0.5222, "text": "I’m finished with all the movements. Now I’ll add an eventListener and then we’re nearly done"}, {"post_id": 20841, "ts": "2026-07-02T15:31:34Z", "hours": 1.9533, "text": "I finally made this stupid bishop movement. It took 2 hours, because I was just too dumb to do it right :("}, {"post_id": 19245, "ts": "2026-06-30T14:40:27Z", "hours": 1.9533, "text": "I made the Rock movement. I think the rest will go faster, but we’ll see"}, {"post_id": 14607, "ts": "2026-06-23T19:38:25Z", "hours": 5.1153, "text": "I just created the basic design. Now I’ll begin with the movement."}]...
|
Title: Chess by @Robert09 | Stardance
Devlogs:
I Title: Chess by @Robert09 | Stardance
Devlogs:
I just created the basic design. Now I’ll begin with the movement.
I made the Rock movement. I think the rest will go faster, but we’ll see
I finally made this stupid bishop movement. It took 2 hours, because I was just too dumb to do it right :(
I’m finished with all the movements. Now I’ll add an eventListener and then we’re nearly done
I added an eventListener so you can move the figures in the game. Next I’ll edit to take the pieces. So see you :)
I’ve now added the capturing of pieces. All that’s left are the special moves for the pawn and king, and checkmate-then I’ll be finished.
I added the winning when you take the king.
I have added pawn promotion, so that when a pawn reaches the opposite side of the board, it can now be promoted to any piece of the player’s choice. With that, I have completed the project. It was a really enjoyable project, and I’m already looking forward to the next one. See you :)
While playing the game, I noticed that the transformed pieces couldn’t capture the opponent’s pieces-they could only capture pieces from their own side. I had to track down the bug, fix it, and now it’s resolved.
Ships:
I have developed a chess game that includes all standard pieces, special moves such as castling, and the game currently ends when the king is captured rather than detecting checkmate according to the official chess rules....
|
1793126940.223639
|
1793213340.223639
|
|
12938
|
PetTrack by @szabence | Stardance
|
szabence
|
1
|
72.63
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T14:24:17Z", "hours": 71.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "PetTrack! A beautiful Pet Monitoring system that upcycles old smartphones into IP-cameras that you can use to see your small pet I made this project because I took in a Rabbit in May 2026 and I didn’t know what she was doing when i wasn’t home, so I decided to code this app that you can install on any Android 7+ / iPhone 6s or newer device, and use it to check on your pet, with a beautiful UI, Zone tracking, replays, medicine and vaccine tracking, and a lot more :) The hardest part was, getting used to writing Flutter. I have never used Flutter in the past, but I read about it and I liked the mentality and the mechanics of the code or how should I say, and I decided to give it a go. I love it. Simple but effective, and I can use this 1 codebase on the web, on my iPhone, on my Android and even on my WearOS smartwatch :) The project is working, and you can check it by the bottom below, select language, select Client and press Demo mode, it will show the UI. You can see it working in action on the screenshots. Check the README, and thank you for reading this!", "repo": "https://github.com/szbnce/PetTrack", "demo": "https://pettrackdemo.szabence.com"}]...
|
[{"post_id": 68851, "ts": "202 [{"post_id": 68851, "ts": "2026-09-15T21:18:20Z", "hours": 1.6314, "text": "PetTrack reship no.2 Hey guys, I have shipped the project last week, but I got rejected because I’ve used the project logo as banner and not a screenshot… Anyways, I fixed some bugs that Ive seen since shipping, which was the Notification, on both iOS and Android and Web, it wasn’t working correctly anywhere, but because of lack of time at the moment, I have removed the Notification option. on iOS it will never work self-hosted, because it requires apple dev account and the app to be on the app store or have a real backend behind it, or something like that I’ve read. I also removed the Sync with watch button from the iOS builds and Web builds, since there is only WearOS build. Google play! I have started the process to put the app on the Google Play. I was originally against this, as y’all have read in one of the first devlogs, but I thought, 25 bucks once isn’t that much, so PetTrack will be on the Play store soon, but by the looks of things, only after Stardance has already finished. WearOS I started school once again, and I couldn’t always get to my phone so I have made a minimalist app to use on the watch, it’s not that full, you can only see 1 frame / 5 seconds, and you can’t edit anything, only check the live feed, check the Monitors battery percentage and the last seen in X zone. I will ship my project once again, thank you for reading! EDIT: I did not know I just need recertification instead of a full reship lol"}, {"post_id": 62924, "ts": "2026-09-06T13:52:19Z", "hours": 5.8556, "text": "PetTrack has been released! Hello guys! I’m not going to mess around with Markdown for this last devlog, I have been testing the project for 2 weeks now, and it is working great. I fixed up minor bugs that I found, added 5 AI-translated languages for more multilang support, though Hungarian and English has been translated by me, so those are definetly correct :) I changed on the UI a bit, removed the last seen and most seen cards from the dashboard and changed it to a diagram about the Zone visits, and changed the Medical UI cards a bit. Also made the resolution in the app better, now you can make pictures from the app, and instantly share them, replays work now on both iOS and Android. The first release of PetTrack has been finally published on GitHub, so please go and check it out! https://github.com/szbnce/PetTrack/releases/tag/1.0.0 Thank you everybody who has been though this journey over 3 months with me. Thank you!"}, {"post_id": 53494, "ts": "2026-08-24T02:11:25Z", "hours": 5.7447, "text": "PetTrack Demo is finally here! I haven’t worked on PetTrack in the past 1,5 months, mostly because I just couldn’t bring myself to code, and I am going on vacation as I am writing this, and I figured, omg, if i come home, it will be already september, and besides school, i will definetly not finish this, and then, what was I working for for days on end? So, I got my sxit together, and started working on the project. Sadly, because of the time, I had to use AI so I will finish until I leave for vacation. I almost did not. It’s 3:45 AM, I left 2 hours ago, and I set up the server 15 whole minutes before leaving my house. So it was calculated, but I managed. Unified Flutter codebase: I merged the pettrack_client , pettrack_montior and pettrack_web , into one package, and is written in Flutter. The app is entirely in Flutter, I kept designs of the Client so it won’t look very different. Deployment & OS Support: The new one app method is Docker compatible, so the project will offer a Docker option, and a non-docker MacOS and Linux native installer, and a Windows installer aswell, without docker :) Branching: The one where I used AI has been moved to a new branch \"allFlutter\" . iOS Support: I initally did not want to make an iOS version because I don’t really agree with the yearly 100 usd developer program payment, and I don’t really agree with Google Play 25usd purchase aswell, but that’s very much more manageable than a yearly model, on a FOSS app. Anyways, I will publish the .ipa file, and do what you want with it :) If you have the courage and understanding, you can jailbreak and install it indefinetly, or you can sideload it, though you will have to renew it every week. If you don’t want to do that, you can of course use the Web version in a browser, it will work the exact same way, they are the same codebase under. Web support: This was my original plan to make PetTrack work on iOS devices, but then, I decided why not make it fully work on any browser? One codebase, the Webapp, the Android app and iOS app will work the EXACT SAME WAY! if you want to install a full app, you may, but if you don’t, you have all options. Medical panel: I think I have made a devlog about that, or mentioned that, but I will write it once again. We have a Medical tab now, where you will be able to track Medications and get notifications to give them to your pet, and the Vaccines tab, where you can track what the pet has gotten, when, and when its next Due. You can also set more colors. Replay: You can now replay movement. Currently for some reason, It does not work (I started implementing it at 0:30 AM, left at 1:30 so I could’ve expected that), or atleast it does not work from the browser. If i log into the server, and check it, the videos are there, and visible. It records a few seconds before and after the movement. Demo! Now you can check out PetTrack at: 👉 https://pettrackdemo.szabence.com How to access: Select language (colors are broken i know) Select Viewer For IP write asd or something, just dont leave it empty For password, write 8068 Press next, and you will see it asking if you want to go into Demo Press yes, and you are in! Its a quite basic demo, its the same codebase, just no server behind. You can add medications, test zones, etc. After you close the tab, everything will be deleted. I will test the project as I am going about my week, fix errors at night, and I will ship the project next week. Have a great week guys, and thank you for watching the project."}, {"post_id": 40217, "ts": "2026-08-03T16:58:52Z", "hours": 4.8564, "text": "Hey guys.. Its been 17 days since the last Devlog, I dont even know what I “upgraded” or didn’t. I wont’t try to make it a big devlog or anything, really i just want to get the hours logged so I can start fresh. I’ve decided to ditch all 3 (pettrack_monitor, pettrack_client and pettrack_web) codebases and rewrite everything as one flutter app. Making sure 4 sections of the app written in 3 different languages wasn’t easy on my level so I decided to ditch all and write one “pettrack_app” codebase. It will work on Android, iOS and Web, and for iOS users also PWA app, so you don’t have to install anything, and it will all work under one codebase, so everything will be the same across all devices. So. I don’t know when I will finish or anything, or write the next devlog, because I have so many things to do this month, soo…"}, {"post_id": 30037, "ts": "2026-07-17T09:22:29Z", "hours": 6.6725, "text": "The Flutter apps and the Server is 99% done until shipping! This is rather a bigger devlog, I didn’t make a more smaller ones, but let’s see what I’ve done: Easier pairing : Now instead of using a qr code (which in the Docker terminal is unreliable), you get a 4 number pairing code, which you can use to communicate the 64 char JWT token. It’s much easier, and much more reliable. Docker : I implemented Docker, but it seems like at the moment that it only really works on MacOS, i might phase Docker out and make setup commands for each, maybe a oneliner with curl, or something like that. Bugfixes : Lots of bugfixes in those 6,5 hours, I can’t even list all of them, connectivity issues, pairing issues, camera issues, UI Cleanup : I removed developer overlays from the web e.g Eruda mobile console overlay. I will be focusing a lot more on the Mock API for the demo site, and polishing for Shipping EXCEPT for one feature that I still want to add, and that would be insanely good. Bye guys!"}, {"post_id": 27994, "ts": "2026-07-13T23:20:55Z", "hours": 4.0786, "text": "🚀 WebClient is getting ready! I’ve done multiple things with the WebClient over the last 4 hours, and we are getting closer and closer to shipping! Here is a quick rundown of the progress: 🛠️ Key Features & Updates Unified Multi-Mode: You can now choose whether you want to use a device as a Client (Viewer) or a Monitor (Camera). Zone Management: Zone adding now works! (Showing current zones is still slightly broken, but we are getting there). Event Tracking: Zone enter/exit detection is fully functional. Dashboard Stats: Added panels to show “Last seen” and “Most seen” locations. Pet Profiles: You can now edit your pet’s profile directly from the Settings tab. Settings Reset: Added the ability to wipe all local settings if you want a fresh start. 🎨 UI & UX Polish Dark Mode: Synced theme with Client, dark and light mode aswell. Cleaned up the UI: Removed all unnecessary buttons. P.S. Berci got vaccinated today! 💉🐇 So now he’s immune to both physical viruses and mental breakdowns over JavaScript!"}, {"post_id": 27081, "ts": "2026-07-12T10:04:49Z", "hours": 5.1319, "text": "now i understand why web developers are all bald and angry… Okkkay so, little bit of a backgound here, I do not agree on the fact that I should pay for FOSS apps to be put on the play store and app store, that for one company i should pay 25 bucks once and then i can put my app on the app store and i have to pay 100 BUCKS YEARLY TO APPLE. So, instead of creating an app for iOS, since you can’t really sideload (there are ways for people in Europe and you can jailbreak bla bla bla…) and this app is made for ordinary people. Not developers. So, as a last resort, I am making a WebClient and WebMonitor, so the apps are able to run without even installing anything. Obviously the installed apps will run better and feel better, but then no iOS support, which I did not want. So, I started working with AI on a WebClient and WebMonitor and started learning JavaScript, but that…. Dart next to Javascript is a kids game honestly, very hard, I tried to make it easier for me by using TailwindCSS which I have some experience in, but it wasn’t that easy. To eliminate AI slop, I have a great Web developer friend (became bald at the bold age of 30), and he’ll monitor the code and check if it is alright for “prod”…"}, {"post_id": 25564, "ts": "2026-07-09T21:53:54Z", "hours": 4.0792, "text": "🛠️ BUGFIXES! BUGFIXES! I didn’t really add any new features this time, but rather focused on fixing and polishing already existing features. 🔒 Security and Stability Token Generation: I removed hardcoded “placeholder” tokens; the system now creates a new API token seamlessly. Storage Limits: Added a maximum 500 picture limit on the server, so it doesn’t fill up the storage if the cleanup task fails. Syntax Fixes: Fixed a broken dictionary on the server which threw garbage JSON. ✨ UI and Usability Notification Cooldown: Added a 1-minute cooldown between notifications to prevent spam. Better Statistics: Now the Activities tab shows 50 events instead of 5 for more accurate data. Dynamic Names: Removed fallback placeholder names (no more hardcoded fake names). 100% Localization: Removed all hardcoded UI strings and moved absolutely everything into l10n and .arb dictionaries. 🏗️ Architecture Hardware JPEG Streaming: Switched to native hardware JPEG streaming for faster picture taking, completely replacing the heavy RepaintBoundary method. 🚧 IN THE WORKS: WebSocket migration! I will tackle that tomorrow to achieve real-time streaming. Here is a picture showing git graph (lol) and Berci as I was fixing up issues. Bye guys!"}, {"post_id": 25297, "ts": "2026-07-09T14:26:21Z", "hours": 6.7308, "text": "More seamless Setup! I have edited the Setups, so now, it is more seamless: When you Install the server, it spits out a QR-code, which you have to scan while setting up the Client app, they connect, and you have to set up the profile of the pet, and a 4 digit pin code, which will be for the WebClient that I am planning to make. After that, the phone spits out another QR code, which you have to scan with the Monitor, and it will connect automatically, and only then will the app let you in. Also, I added E2EE to the server - client connection, to make it more secure, and I also did some bugfixes. I will start to Polish the apps, make it so easy to set up that even somebody who doesn’t use technology day-to-day would be able to set it up perfectly. Bye guys!"}, {"post_id": 24346, "ts": "2026-07-07T21:10:21Z", "hours": 4.4408, "text": "Monitor ready, server working, Client UI is mostly done, we are shipping soon! I made a few adjustments today: Monitor: Synced theme with Client Fixed alignment issues Added Auto reconnect and Auto capture Monitor is basically finished, I don’t think I will add anything to the monitor before shipping now. New README.md: I completly redesigned the README, now in my opinion its almost perfect. Tomorrow, I will start to make a webpage for the project, and I might make a WebUI before the project ships, and add some more tests, but I will sleep on that. Bye guys!"}, {"post_id": 22216, "ts": "2026-07-04T16:05:40Z", "hours": 3.8428, "text": "Frontend Changes to PetTrack! Today I worked a lot on PetTrack, and I made a few small but nice changes: Zone Notifications: You now get notified if a pet enters or exits a zone. Battery Alerts: Get notifications if the monitor’s battery is low (can be set between 5% and 50%). Camera Placeholder: Added a placeholder picture for when the camera is offline. Pet Types: You can now set the type of pet you have. I’ve added a few common ones, but I can add more if needed! Dynamic Live Badge: Fixed the hardcoded “Live” text on the dashboard. Now it shows exactly when the picture was taken (e.g., “30 seconds ago”), and if it’s under 10 seconds, it will say “Live”. “Continuous” Video: It’s still using pictures, but instead of updating every 30 seconds, it now updates roughly every 2 seconds. UI Cleanup: Removed the zoom buttons from the Zones screen since they were unnecessary. Custom Zones & Icons: When adding a new zone, you can now assign it a category (play area, toilet, food, water, bed) with matching icons. I’ll add a fully customizable option later! Bug Fixes: Fixed some minor layout issues. That’s all I think. Bye guys!"}, {"post_id": 21821, "ts": "2026-07-03T23:05:28Z", "hours": 3.5933, "text": "Miscellaneous Updates to PetTrack! Hey guys! I know I haven’t posted in almost 2 weeks at this point. I needed a break from coding and doing work at the PC/PetTrack. We have a few miscellaneous updates to share: Custom Monitor IDs : You can now set a custom Monitor ID, and it will show up properly in the PetTrack app as well, instead of just defaulting to “Main Monitor”. Battery Status : You can now see the battery percentage and whether it’s charging directly in the app! I plan to add a feature later that will send a notification to the PetTrack Client app when the monitor phone’s battery is running low. Backend Testing : Added testing to the PetTrack server for both the WebSocket and REST API, so you can easily check if the API and WS are working correctly. I will put more effort and hours into the project soon, but I have a lot of other things going on besides this project, and I don’t want to risk burning out. Bye! P.S: This is Berci from a few days ago and I pushed everything to GH!"}, {"post_id": 12162, "ts": "2026-06-19T21:23:36Z", "hours": 5.9286, "text": "Hey guys! I haven’t posted a devlog in a few days now, I have been working on some stuff here, and I have to say that I have some very good news! We finally have a Client app! It is a work in progress, but it is something! I don’t remember everything I have changed in the code, but: API adjusted, added a layer of security, because the API wasn’t secured. Added zones to pettrack_server, and added an API to edit it, Added Database (maybe mentioned in last devlog) Takes pictures every 2 seconds, only saves every 30 seconds for 12 hours (will add a replay mode or something like that) pettrack_monitor almost fully done, only need to add some stuff here and there. pettrack_server is in an MVP state now, it works beautifully but some features are still missing before shipping pettrack_client has been made (not pushed to GH yet), works well, though I am pretty fking shyt in UI design, so I made the UI with stitch.withgoogle.com and coded some of it with Gemini, though it still needs a lot of work. Live camera somewhat works (TODO: need to add when watching in the app to show the new pictures (that are taken every 2 seconds and not the 30 seconds saved)) Shows which zone was the most used- Shows last interaction (movement) Last 15 activities (entered zone, left zone, will add more later ? (NEED IDEAS!)) You can add zones (see the live camera and set it via adding points on the picture) You can set a picture and name for your pet in the client app- Always changing welcome greetings No logo / face for the program yet, and no website, will start working on that later The Client app seems very stable for now, no issues found, pettrack_monitor has issues with focusing, server seems stable aswell. I am soon looking for testers for the program, before shipping I want to make sure that this is functional and useful for small pet owners, and what might work for me in my use case, it might not for somebody else, and I want to make it as stable as I am able to. Everything is opensource, available on https://github.com/szbnce/PetTrack (will push everything to GH tomorrow!), DM me on Slack if interested, currently only available for Android. I will start working on the UI and fix the bugs, and get back to you guys soon! Here are some pictures of the UI!"}, {"post_id": 10248, "ts": "2026-06-16T21:39:22Z", "hours": 2.5683, "text": "Hey guys! It’s been a long day, once again, but I have some good news! I have started working on PetTrack Client, started writing the UI and the functions of the app, but that’s when I realised that I still have no way of storing the data, analyzing the data and I don’t have any API routes where I could check or see the NON EXISTENT DATA! so, I left pettrack_client and started working on the backend, it’s getting somewhere, but I have not pushed changes to GH yet, because I haven’t finished it yet and it would not run in this state. I will try to finish changes with the backend tomorrow so I can start working on the frontend / client with real, actual data. Until then, here is a picture of PetTrack Monitor running on a somewhat low end Android 8.0 device and my IDE :D"}, {"post_id": 8371, "ts": "2026-06-13T22:29:10Z", "hours": 2.42, "text": "Good day everybody! It’s been a long day. I have done a lot of things today, mainly with pettrack_monitor. Basically: Firstly, I did a git rebase and made my last few commits make a bit more sense. There were commits that weren’t that useful or had the wrong name; it’s always better to have a good commit history. Next, I finally installed the app on a real device, and let’s just say, there were some problems. The flashlight was on while taking pictures, which is what I fixed first. It was quite easy, just one line: await _controller.setFlashMode(FlashMode.off); Afterward, it dawned on me that most people (including me) will use this app in Landscape mode, not Portrait. I fixed that issue next, but that itself came with a batch of new problems. The layout broke, like, fully. I couldn’t use the app at all, so I had to rewrite the whole layout with flexes and SizedBoxes; it was a pain in the a**. After this issue, instead of showing the SetupScreen every time the app opens, I made it a one-time thing and added a Settings menu and an About page. There were some issues with overflowing, but I fixed that as well. Now the app is fully functional. However, there is an issue I haven’t gotten around to fixing yet: when I exit the SetupScreen and go into MonitorScreen, the Xiaomi Camera API kills itself for whatever reason. I tried fixing it, but to no avail. It’s currently 12:30 AM, and I am very tired now. Tomorrow, I hope I will fix all remaining issues with the Monitor app and move onto the Server-side logic, zones, database, etc. And while doing that, I will start working on the Client-side app (at least an MVP) so I can start testing the app and server together. Berci is also looking forward to testing the app! (And don’t ask why he is there he is there because he wants to I have no idea why that’s good for him) Peace out!"}, {"post_id": 7131, "ts": "2026-06-11T22:16:46Z", "hours": 1.8947, "text": "We finally have the server in Docker up and running! I haven’t had much time to work on the project yesterday and today, but I started working on the Docker and Dockerfile, and well this is still whichcraft for me :p But, we are developing and we are getting ahead, and I hope that after the MVP for the server is working, I can start working on the client side MVP of the app, and we can start implementing features from there. I am very tired, and I have a long day tomorrow. Until then, there is another picture of Berci! P.S: Tomorrow I hope I can show some of the actual project!"}, {"post_id": 5844, "ts": "2026-06-09T19:49:41Z", "hours": 3.1944, "text": "Hey! Welcome to my project, PetTrack, this is the first Devlog of the project. I just recently got a rabbit, and while in school, I don’t know what she’s doing. And I assume a lot of animal parents face the same issue, or not an issue but just an uncomfortable feeling, maybe she/he got out, maybe they are doing something wrong, maybe they are not doing well, etc. This is what PetTrack aims to solve, so this uncomfortable feeling goes away, and you can be sure that your pet is safe and sound, while you are away. It uses an old phone as a “Monitor”, which will be attached to for example the cage of a pet, and connected to external power. Originally I wanted to make it so that there is no “central” computing, but after thinking about this for some time, and figuring that most of the people who are going to use this are going to use a close to min requirement phone (assuming low range old phone, and not a new flagship/new anything basically) and the issues with if the monitor dies for some issue, I decided on using a “central server” and using FastAPI with WebSockets to make the usage more seamless. It will be a simple Docker image that you will need to compose and run on a RPI or your server. The Client will be the “main” app, the one you will use the most, the one you’ll use daily. This is my last priority at the moment, let’s get the data first (Monitor), analyze and make use of the data (Server/backend), and the last is to see the data (Client). I’m open to any and all feedback on the project, any tips, help with Py/Flutter, would appreciate! Thanks for reading! Pic Description: My rabbit, named Berci, and an MVP of the server and Monitor."}]...
|
Title: PetTrack by @szabence | Stardance
Devlogs: Title: PetTrack by @szabence | Stardance
Devlogs:
Hey! Welcome to my project, PetTrack, this is the first Devlog of the project. I just recently got a rabbit, and while in school, I don’t know what she’s doing. And I assume a lot of animal parents face the same issue, or not an issue but just an uncomfortable feeling, maybe she/he got out, maybe they are doing something wrong, maybe they are not doing well, etc. This is what PetTrack aims to solve, so this uncomfortable feeling goes away, and you can be sure that your pet is safe and sound, while you are away. It uses an old phone as a “Monitor”, which will be attached to for example the cage of a pet, and connected to external power. Originally I wanted to make it so that there is no “central” computing, but after thinking about this for some time, and figuring that most of the people who are going to use this are going to use a close to min requirement phone (assuming low range old phone, and not a new flagship/new anything basically) and the issues with if the monitor dies for some issue, I decided on using a “central server” and using FastAPI with WebSockets to make the usage more seamless. It will be a simple Docker image that you will need to compose and run on a RPI or your server. The Client will be the “main” app, the one you will use the most, the one you’ll use daily. This is my last priority at the moment, let’s get the data first (Monitor), analyze and make use of the data (Server/backend), and the last is to see the data (Client). I’m open to any and all feedback on the project, any tips, help with Py/Flutter, would appreciate! Thanks for reading! Pic Description: My rabbit, named Berci, and an MVP of the server and Monitor.
We finally have the server in Docker up and running! I haven’t had much time to work on the project yesterday and today, but I started working on the Docker and Dockerfile, and well this is still whichcraft for me :p But, we are developing and we are getting ahead, and I hope that after the MVP for the server is working, I can start working on the client side MVP of the app, and we can start implementing features from there. I am very tired, and I have a long day tomorrow. Until then, there is another picture of Berci! P.S: Tomorrow I hope I can show some of the actual project!
Good day everybody! It’s been a long day. I have done a lot of things today, mainly with pettrack_monitor. Basically: Firstly, I did a git rebase and made my last few commits make a bit more sense. There were commits that weren’t that useful or had the wrong name; it’s always better to have a good commit history. Next, I finally installed the app on a real device, and let’s just say, there were some problems. The flashlight was on while taking pictures, which is what I fixed first. It was quite easy, just one line: await _controller.setFlashMode(FlashMode.off); Afterward, it dawned on me that most people (including me) will use this app in Landscape mode, not Portrait. I fixed that issue next, but that itself came with a batch of new problems. The layout broke, like, fully. I couldn’t use the app at all, so I had to rewrite the whole layout with flexes and SizedBoxes; it was a pain in the a**. After this issue, instead of showing the SetupScreen every time the app opens, I made it a one-time thing and added a Settings menu and an About page. There were some issues with overflowing, but I fixed that as well. Now the app is fully functional. However, there is an issue I haven’t gotten around to fixing yet: when I exit the SetupScreen and go into MonitorScreen, the Xiaomi Camera API kills itself for whatever reason. I tried fixing it, but to no avail. It’s currently 12:30 AM, and I am very tired now. Tomorrow, I hope I will fix all remaining issues with the Monitor app and move onto the Server-side logic, zones, database, etc. And while doing that, I will start working on the Client-side app (at least an MVP) so I can start testing the app and server together. Berci is also looking forward to testing the app! (And don’t ask why he is there he is there because he wants to I have no idea why that’s good for him) Peace out!
Hey guys! It’s been a long day, once again, but I have some good news! I have started working on PetTrack Client, started writing the UI and the functions of the app, but that’s when I realised that I still have no way of storing the data, analyzing the data and I don’t have any API routes where I could check or see the NON EXISTENT DATA! so, I left pettrack_client and started working on the backend, it’s getting somewhere, but I have not pushed changes to GH yet, because I haven’t finished it yet and it would not run in this state. I will try to finish changes with the backend tomorrow so I can start working on the frontend / client with real, actual data. Until then, here is a picture of PetTrack Monitor running on a somewhat low end Android 8.0 device and my IDE :D
Hey guys! I haven’t posted a devlog in a few days now, I have been working on some stuff here, and I have to say that I have some very good news! We finally have a Client app! It is a work in progress, but it is something! I don’t remember everything I have changed in the code, but: API adjusted, added a layer of security, because the API wasn’t secured. Added zones to pettrack_server, and added an API to edit it, Added Database (maybe mentioned in last devlog) Takes pictures every 2 seconds, only saves every 30 seconds for 12 hours (will add a replay mode or something like that) pettrack_monitor almost fully done, only need to add some stuff here and there. pettrack_server is in an MVP state now, it works beautifully but some features are still missing before shipping pettrack_client has been made (not pushed to GH yet), works well, though I am pretty fking shyt in UI design, so I made the UI with stitch.withgoogle.com and coded some of it with Gemini, though it still needs a lot of work. Live camera somewhat works (TODO: need to add when watching in the app to show the new pictures (that are taken every 2 seconds and not the 30 seconds saved)) Shows which zone was the most used- Shows last interaction (movement) Last 15 activities (entered zone, left zone, will add more later ? (NEED IDEAS!)) You can add zones (see the live camera and set it via adding points on the picture) You can set a picture and name for your pet in the client app- Always changing welcome greetings No logo / face for the program yet, and no website, will start working on that later The Client app seems very stable for now, no issues found, pettrack_monitor has issues with focusing, server seems stable aswell. I am soon looking for testers for the program, before shipping I want to make sure that this is functional and useful for small pet owners, and what might work for me in my use case, it might not for somebody else, and I want to make it as stable as I am able to. Everything is opensource, available on https://github.com/szbnce/PetTrack (will push everything to GH tomorrow!), DM me on Slack if interested, currently only available for Android. I will start working on the UI and fix the bugs, and get back to you guys soon! Here are some pictures of the UI!
Miscellaneous Updates to PetTrack! Hey guys! I know I haven’t posted in almost 2 weeks at this point. I needed a break from coding and doing work at the PC/PetTrack. We have a few miscellaneous updates to share: Custom Monitor IDs : You can now set a custom Monitor ID, and it will show up properly in the PetTrack app as well, instead of just defaulting to “Main Monitor”. Battery Status : You can now see the battery percentage and whether it’s charging directly in the app! I plan to add a feature later that will send a notification to the PetTrack Client app when the monitor phone’s battery is running low. Backend Testing : Added testing to the PetTrack server for both the WebSocket and REST API, so you can easily check if the API and WS are working correctly. I will put more effort and hours into the project soon, but I have a lot of other things going on besides this project, and I don’t want to risk burning out. Bye! P.S: This is Berci from a few days ago and I pushed everything to GH!
Frontend Changes to PetTrack! Today I worked a lot on PetTrack, and I made a few small but nice changes: Zone Notifications: You now get notified if a pet enters or exits a zone. Battery Alerts: Get notifications if the monitor’s battery is low (can be set between 5% and 50%). Camera Placeholder: Added a placeholder picture for when the camera is offline. Pet Types: You can now set the type of pet you have. I’ve added a few common ones, but I can add more if needed! Dynamic Live Badge: Fixed the hardcoded “Live” text on the dashboard. Now it shows exactly when the picture was taken (e.g., “30 seconds ago”), and if it’s under 10 seconds, it will say “Live”. “Continuous” Video: It’s still using pictures, but instead of updating every 30 seconds, it now updates roughly every 2 seconds. UI Cleanup: Removed the zoom buttons from the Zones screen since they were unnecessary. Custom Zones & Icons: When adding a new zone, you can now assign it a category (play area, toilet, food, water, bed) with matching icons. I’ll add a fully customizable option later! Bug Fixes: Fixed some minor layout issues. That’s all I think. Bye guys!
Monitor ready, server working, Client UI is mostly done, we are shipping soon! I made a few adjustments today: Monitor: Synced theme with Client Fixed alignment issues Added Auto reconnect and Auto capture Monitor is basically finished, I don’t think I will add anything to the monitor before shipping now. New README.md: I completly redesigned the README, now in my opinion its almost perfect. Tomorrow, I will start to make a webpage for the project, and I might make a WebUI before the project ships, and add some more tests, but I will sleep on that. Bye guys!
More seamless Setup! I have edited the Setups, so now, it is more seamless: When you Install the server, it spits out a QR-code, which you have to scan while setting up the Client app, they connect, and you have to set up the profile of the pet, and a 4 digit pin code, which will be for the WebClient that I am planning to make. After that, the phone spits out another QR code, which you have to scan with the Monitor, and it will connect automatically, and only then will the app let you in. Also, I added E2EE to the server - client connection, to make it more secure, and I also did some bugfixes. I will start to Polish the apps, make it so easy to set up that even somebody who doesn’t use technology day-to-day would be able to set it up perfectly. Bye guys!
🛠️ BUGFIXES! BUGFIXES! I didn’t really add any new features this time, but rather focused on fixing and polishing already existing features. 🔒 Security and Stability Token Generation: I removed hardcoded “placeholder” tokens; the system now creates a new API token seamlessly. Storage Limits: Added a maximum 500 picture limit on the server, so it doesn’t fill up the storage if the cleanup task fails. Syntax Fixes: Fixed a broken dictionary on the server which threw garbage JSON. ✨ UI and Usability Notification Cooldown: Added a 1-minute cooldown between notifications to prevent spam. Better Statistics: Now the Activities tab shows 50 events instead of 5 for more accurate data. Dynamic Names: Removed fallback placeholder names (no more hardcoded fake names). 100% Localization: Removed all hardcoded UI strings and moved absolutely everything into l10n and .arb dictionaries. 🏗️ Architecture Hardware JPEG Streaming: Switched to native hardware JPEG streaming for faster picture taking, completely replacing the heavy RepaintBoundary method. 🚧 IN THE WORKS: WebSocket migration! I will tackle that tomorrow to achieve real-time streaming. Here is a picture showing git graph (lol) and Berci as I was fixing up issues. Bye guys!
now i understand why web developers are all bald and angry… Okkkay so, little bit of a backgound here, I do not agree on the fact that I should pay for FOSS apps to be put on the play store and app store, that for one company i should pay 25 bucks once and then i can put my app on the app store and i have to pay 100 BUCKS YEARLY TO APPLE. So, instead of creating an app for iOS, since you can’t really sideload (there are ways for people in Europe and you can jailbreak bla bla bla…) and this app is made for ordinary people. Not developers. So, as a last resort, I am making a WebClient and WebMonitor, so the apps are able to run without even installing anything. Obviously the installed apps will run better and feel better, but then no iOS support, which I did not want. So, I started working with AI on a WebClient and WebMonitor and started learning JavaScript, but that…. Dart next to Javascript is a kids game honestly, very hard, I tried to make it easier for me by using TailwindCSS which I have some experience in, but it wasn’t that easy. To eliminate AI slop, I have a great Web developer friend (became bald at the bold age of 30), and he’ll monitor the code and check if it is alright for “prod”…
🚀 WebClient is getting ready! I’ve done multiple things with the WebClient over the last 4 hours, and we are getting closer and closer to shipping! Here is a quick rundown of the progress: 🛠️ Key Features & Updates Unified Multi-Mode: You can now choose whether you want to use a device as a Client (Viewer) or a Monitor (Camera). Zone Management: Zone adding now works! (Showing current zones is still slightly broken, but we are getting there). Event Tracking: Zone enter/exit detection is fully functional. Dashboard Stats: Added panels to show “Last seen” and “Most seen” locations. Pet Profiles: You can now edit your pet’s profile directly from the Settings tab. Settings Reset: Added the ability to wipe all local settings if you want a fresh start. 🎨 UI & UX Polish Dark Mode: Synced theme with Client, dark and light mode aswell. Cleaned up the UI: Removed all unnecessary buttons. P.S. Berci got vaccinated today! 💉🐇 So now he’s immune to both physical viruses and mental breakdowns over JavaScript!
The Flutter apps and the Server is 99% done until shipping! This is rather a bigger devlog, I didn’t make a more smaller ones, but let’s see what I’ve done: Easier pairing : Now instead of using a qr code (which in the Docker terminal is unreliable), you get a 4 number pairing code, which you can use to communicate the 64 char JWT token. It’s much easier, and much more reliable. Docker : I implemented Docker, but it seems like at the moment that it only really works on MacOS, i might phase Docker out and make setup commands for each, maybe a oneliner with curl, or something like that. Bugfixes : Lots of bugfixes in those 6,5 hours, I can’t even list all of them, connectivity issues, pairing issues, camera issues, UI Cleanup : I removed developer overlays from the web e.g Eruda mobile console overlay. I will be focusing a lot more on the Mock API for the demo site, and polishing for Shipping EXCEPT for one feature that I still want to add, and that would be insanely good. Bye guys!
Hey guys.. Its been 17 days since the last Devlog, I dont even know what I “upgraded” or didn’t. I wont’t try to make it a big devlog or anything, really i just want to get the hours logged so I can start fresh. I’ve decided to ditch all 3 (pettrack_monitor, pettrack_client and pettrack_web) codebases and rewrite everything as one flutter app. Making sure 4 sections of the app written in 3 different languages wasn’t easy on my level so I decided to ditch all and write one “pettrack_app” codebase. It will work on Android, iOS and Web, and for iOS users also PWA app, so you don’t have to install anything, and it will all work under one codebase, so everything will be the same across all devices. So. I don’t know when I will finish or anything, or write the next devlog, because I have so many things to do this month, soo…
PetTrack Demo is finally here! I haven’t worked on PetTrack in the past 1,5 months, mostly because I just couldn’t bring myself to code, and I am going on vacation as I am writing this, and I figured, omg, if i come home, it will be already september, and besides school, i will definetly not finish this, and then, what was I working for for days on end? So, I got my sxit together, and started working on the project. Sadly, because of the time, I had to use AI so I will finish until I leave for vacation. I almost did not. It’s 3:45 AM, I left 2 hours ago, and I set up the server 15 whole minutes before leaving my house. So it was calculated, but I managed. Unified Flutter codebase: I merged the pettrack_client , pettrack_montior and pettrack_web , into one package, and is written in Flutter. The app is entirely in Flutter, I kept designs of the Client so it won’t look very different. Deployment & OS Support: The new one app method is Docker compatible, so the project will offer a Docker option, and a non-docker MacOS and Linux native installer, and a Windows installer aswell, without docker :) Branching: The one where I used AI has been moved to a new branch "allFlutter" . iOS Support: I initally did not want to make an iOS version because I don’t really agree with the yearly 100 usd developer program payment, and I don’t really agree with Google Play 25usd purchase aswell, but that’s very much more manageable than a yearly model, on a FOSS app. Anyways, I will publish the .ipa file, and do what you want with it :) If you have the courage and understanding, you can jailbreak and install it indefinetly, or you can sideload it, though you will have to renew it every week. If you don’t want to do that, you can of course use the Web version in a browser, it will work the exact same way, they are the same codebase under. Web support: This was my original plan to make PetTrack work on iOS devices, but then, I decided why not make it fully work on any browser? One codebase, the Webapp, the Android app and iOS app will work the EXACT SAME WAY! if you want to install a full app, you may, but if you don’t, you have all options. Medical panel: I think I have made a devlog about that, or mentioned that, but I will write it once again. We have a Medical tab now, where you will be able to track Medications and get notifications to give them to your pet, and the Vaccines tab, where you can track what the pet has gotten, when, and when its next Due. You can also set more colors. Replay: You can now replay movement. Currently for some reason, It does not work (I started implementing it at 0:30 AM, left at 1:30 so I could’ve expected that), or atleast it does not work from the browser. If i log into the server, and check it, the videos are there, and visible. It records a few seconds before and after the movement. Demo! Now you can check out PetTrack at: 👉 https://pettrackdemo.szabence.com How to access: Select language (colors are broken i know) Select Viewer For IP write asd or something, just dont leave it empty For password, write 8068 Press next, and you will see it asking if you want to go into Demo Press yes, and you are in! Its a quite basic demo, its the same codebase, just no server behind. You can add medications, test zones, etc. After you close the tab, everything will be deleted. I will test the project as I am going about my week, fix errors at night, and I will ship the project next week. Have a great week guys, and thank you for watching the project.
PetTrack has been released! Hello guys! I’m not going to mess around with Markdown for this last devlog, I have been testing the project for 2 weeks now, and it is working great. I fixed up minor bugs that I found, added 5 AI-translated languages for more multilang support, though Hungarian and English has been translated by me, so those are definetly correct :) I changed on the UI a bit, removed the last seen and most seen cards from the dashboard and changed it to a diagram about the Zone visits, and changed the Medical UI cards a bit. Also made the resolution in the app better, now you can make pictures from the app, and instantly share them, replays work now on both iOS and Android. The first release of PetTrack has been finally published on GitHub, so please go and check it out! https://github.com/szbnce/PetTrack/releases/tag/1.0.0 Thank you everybody who has been though this journey over 3 months with me. Thank you!
PetTrack reship no.2 Hey guys, I have shipped the project last week, but I got rejected because I’ve used the project logo as banner and not a screenshot… Anyways, I fixed some bugs that Ive seen since shipping, which was the Notification, on both iOS and Android and Web, it wasn’t working correctly anywhere, but because of lack of time at the moment, I have removed the Notification option. on iOS it will never work self-hosted, because it requires apple dev account and the app to be on the app store or have a real backend behind it, or something like that I’ve read. I also removed the Sync with watch button from the iOS builds and Web builds, since there is only WearOS build. Google play! I have started the process to put the app on the Google Play. I was originally against this, as y’all have read in one of the first devlogs, but I thought, 25 bucks once isn’t that much, so PetTrack will be on the Play store soon, but by the looks of things, only after Stardance has already finished. WearOS I started school once again, and I couldn’t always get to my phone so I have made a minimalist app to use on the watch, it’s not that full, you can only see 1 frame / 5 seconds, and you can’t edit anything, only check the live feed, check the Monitors battery percentage and the last seen in X zone. I will ship my project once again, thank you for reading! EDIT: I did not know I just need recertification instead of a full reship lol
Ships:
PetTrack! A beautiful Pet Monitoring system that upcycles old smartphones into IP-cameras that you can use to see your small pet I made this project because I took in a Rabbit in May 2026 and I didn’t know what she was doing when i wasn’t home, so I decided to code this app that you can install on any Android 7+ / iPhone 6s or newer device, and use it to check on your pet, with a beautiful UI, Zone tracking, replays, medicine and vaccine tracking, and a lot more :) The hardest part was, getting used to writing Flutter. I have never used Flutter in the past, but I read about it and I liked the mentality and the mechanics of the code or how should I say, and I decided to give it a go. I love it. Simple but effective, and I can use this 1 codebase on the web, on my iPhone, on my Android and even on my WearOS smartwatch :) The project is working, and you can check it by the bottom below, select language, select Client and press Demo mode, it will show the UI. You can see it working in action on the screenshots. Check the README, and thank you for reading this!...
|
1793145372.4601498
|
1793231772.4601498
|
|
12968
|
HackClub Happiness Meter by @javim-dev | Stardance
|
javim-dev
|
1
|
12.0
|
102
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T13:11:50Z", "hours": 12.0, "multiplier": 8.21, "payout": 102, "blessing": "neutral", "text": "HackClub Happiness Meter TRY IT HERE: https://happinessmeter-frontend.javim.dev/ Earlier this month, I created “HackClub Happiness Meter API” for the YSWS RaspAPI. The problem is that nobody used it. Probably because it’s an API, and most people don’t have an API client at arms reach. So I decided to create a frontend for it! Check my latest devlog for more info. Also check: Github: https://github.com/javiermm8/HackClub-Happiness-Meter-Frontend Want to learn more about this API? Here! API Github: https://github.com/javiermm8/HackClubHappinessMeterAPI API Docs: https://happinessmeter.javim.dev/docs", "repo": "https://github.com/javiermm8/HackClub-Happiness-Meter-Frontend", "demo": "https://happinessmeter-frontend.javim.dev/"}]...
|
[{"post_id": 15627, "ts": "202 [{"post_id": 15627, "ts": "2026-06-25T12:46:19Z", "hours": 1.2842, "text": "I’M SHIPPING IT First of all, I know that I haven’t been putting much effort into my devlogs recently. I prefer to work in silence and talk about my work once it’s finished. Some context Earlier this month, I created “HackClub Happiness Meter API” for the YSWS RaspAPI. The problem is that nobody used it. Probably because it’s an API, and most people don’t have an API client at arms reach. So I decided to create a frontend for it. Why react? Why not? I already knew a bit about React, and this was the perfect opportunity to learn a more. However, having now made the API (backend) in Go, I realized that I hate React(and for that matter web development in general) with all my heart. Backend development is much better. If I ever need to make a front end again, I’m absolutely vibecoding it. Storytelling There isn’t much to say here. The main difficulties I encountered while developing this app were:: The design(thanks Tormentika, you saved the aesthetics of this project). Not getting my IP blacklisted address by Cloudflare. For the sake of the story, I’m going to say a little more about the second one, adding a touch of ‘storytelling magic’ (just note that this happened at 11 pm Spanish time and I hadn’t slept enough): At the time, I was trying to implement the Status feature. What I didn’t realize is that if the function that fetches the state is inside of a React component, it will be called every time the component is re-rendered. If the status feature then changes something in that component (which it absolutely did), it creates a loop that constantly requests the status from my API. On top of that, when my API rate limits my IP (I’m very proud of that rate limiter I put there for the extra points in Raspapi), it sends back a 429 (as it should), and for reasons unknown, the Status feature fetches faster. I’m talking about dozens of requests per second. Thankfully, I was able to stop it and fix it before Cloudflare had to step in and block me. Extra help I’m terrible at design. You can see how bad the design was in the previous devlogs. So, thank Tormentika for telling me which colours to use where! Another day survived without having to learn colour theory! Enough talk. GO TRY IT NOW https://happinessmeter-frontend.javim.dev/"}, {"post_id": 15331, "ts": "2026-06-24T22:09:12Z", "hours": 0.9056, "text": "Better new entry + small changes."}, {"post_id": 15013, "ts": "2026-06-24T12:07:39Z", "hours": 1.8783, "text": "UPDATE: New Stats page, Happiness Friend now works, the layout adapts for mobile, status on the header(status and stats update every 30s). I still have to clean up everything and add error messages. But it looks great. While making writing the status feature I accidentally made a loop. At least I know that my rate limiter works :) If anybody has any suggestions please tell me, especially about the design(I’m bad with colors)."}, {"post_id": 14439, "ts": "2026-06-23T15:53:28Z", "hours": 1.6528, "text": "Great progress! Rewrote fetch related functions to be asyncronous. Implemented error message when the user inputs wrong auth credentials. Now there are three auth states: unauthed(not logged in), bad-authed(wrong credentials) and authed(all good) and profile, auth and entry display messages according to that state. Entry displays a message when an entry is submitted(and 200 is sent back from the user). Added more info in Intro. Reordered grid(I still have to fix that a bit). Getting closer to release!"}, {"post_id": 11421, "ts": "2026-06-18T18:02:11Z", "hours": 1.9583, "text": "Lots of progress!! I added images and links to the info components. Also, profile works better and newEntry works too!"}, {"post_id": 7097, "ts": "2026-06-11T21:29:31Z", "hours": 4.7294, "text": "Built the basic skeleton of the web page plus some basic fetch to the API using user provided credentials. The Auth logic works but still needs error messages, same for the profile area. Everything is still in a very early stage."}]...
|
Title: HackClub Happiness Meter by @javim-dev | St Title: HackClub Happiness Meter by @javim-dev | Stardance
Devlogs:
Built the basic skeleton of the web page plus some basic fetch to the API using user provided credentials. The Auth logic works but still needs error messages, same for the profile area. Everything is still in a very early stage.
Lots of progress!! I added images and links to the info components. Also, profile works better and newEntry works too!
Great progress! Rewrote fetch related functions to be asyncronous. Implemented error message when the user inputs wrong auth credentials. Now there are three auth states: unauthed(not logged in), bad-authed(wrong credentials) and authed(all good) and profile, auth and entry display messages according to that state. Entry displays a message when an entry is submitted(and 200 is sent back from the user). Added more info in Intro. Reordered grid(I still have to fix that a bit). Getting closer to release!
UPDATE: New Stats page, Happiness Friend now works, the layout adapts for mobile, status on the header(status and stats update every 30s). I still have to clean up everything and add error messages. But it looks great. While making writing the status feature I accidentally made a loop. At least I know that my rate limiter works :) If anybody has any suggestions please tell me, especially about the design(I’m bad with colors).
Better new entry + small changes.
I’M SHIPPING IT First of all, I know that I haven’t been putting much effort into my devlogs recently. I prefer to work in silence and talk about my work once it’s finished. Some context Earlier this month, I created “HackClub Happiness Meter API” for the YSWS RaspAPI. The problem is that nobody used it. Probably because it’s an API, and most people don’t have an API client at arms reach. So I decided to create a frontend for it. Why react? Why not? I already knew a bit about React, and this was the perfect opportunity to learn a more. However, having now made the API (backend) in Go, I realized that I hate React(and for that matter web development in general) with all my heart. Backend development is much better. If I ever need to make a front end again, I’m absolutely vibecoding it. Storytelling There isn’t much to say here. The main difficulties I encountered while developing this app were:: The design(thanks Tormentika, you saved the aesthetics of this project). Not getting my IP blacklisted address by Cloudflare. For the sake of the story, I’m going to say a little more about the second one, adding a touch of ‘storytelling magic’ (just note that this happened at 11 pm Spanish time and I hadn’t slept enough): At the time, I was trying to implement the Status feature. What I didn’t realize is that if the function that fetches the state is inside of a React component, it will be called every time the component is re-rendered. If the status feature then changes something in that component (which it absolutely did), it creates a loop that constantly requests the status from my API. On top of that, when my API rate limits my IP (I’m very proud of that rate limiter I put there for the extra points in Raspapi), it sends back a 429 (as it should), and for reasons unknown, the Status feature fetches faster. I’m talking about dozens of requests per second. Thankfully, I was able to stop it and fix it before Cloudflare had to step in and block me. Extra help I’m terrible at design. You can see how bad the design was in the previous devlogs. So, thank Tormentika for telling me which colours to use where! Another day survived without having to learn colour theory! Enough talk. GO TRY IT NOW https://happinessmeter-frontend.javim.dev/
Ships:
HackClub Happiness Meter TRY IT HERE: https://happinessmeter-frontend.javim.dev/ Earlier this month, I created “HackClub Happiness Meter API” for the YSWS RaspAPI. The problem is that nobody used it. Probably because it’s an API, and most people don’t have an API client at arms reach. So I decided to create a frontend for it! Check my latest devlog for more info. Also check: Github: https://github.com/javiermm8/HackClub-Happiness-Meter-Frontend Want to learn more about this API? Here! API Github: https://github.com/javiermm8/HackClubHappinessMeterAPI API Docs: https://happinessmeter.javim.dev/docs...
|
1793123260.9825547
|
1793209660.9825547
|
|
13008
|
PulseFlow AI by @Vedant_Daga | Stardance
|
Vedant_Daga
|
1
|
16.0
|
134
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T15:53:55Z", "hours": 6.0, "multiplier": 19.07, "payout": 134, "blessing": "blessed", "text": "# PulseFlow-AI — A Live Hospital Digital Twin + AI Ops Copilot ## What I Made Basically it's a live \"digital twin\" of a hospital. You watch patients move through the ER, labs, imaging, ICU and wards in real time, and it's all running on a simulation engine (FastAPI + WebSockets) that streams the state to the frontend constantly. On top of that I built an AI copilot that spots bottlenecks and actually recommends staffing changes using OR-Tools optimization + Holt-Winters forecasting. There's also a sandbox where you can throw crises at it (flu outbreak, CT scanner dying, mass casualty) and watch the hospital react. Plus it does shift handoff reports and tracks high-risk patients with AI care plans. The main thing I cared about was making it actually feel like real medical software, not a hackathon toy. So I built the whole UI around a design contract based on HIPAA, FDA Title 21 CFR Part 11 and WCAG 2.1. PHI is hidden by default, there's an auto-logout timer, status is never just a color, and I ripped out every glow/gradient/animation so it's calm to look at on a long shift. Full dark/light mode too. ## What Was Challenging The real-time stuff, honestly. Keeping the frontend in sync with a simulation that never stops updating, over WebSockets, without it lagging or flickering, was a pain. The AI optimization was also tough, getting OR-Tools to give recommendations that actually made sense and then explaining them in plain English. And the dark mode almost killed me lol. All my status cards were hardcoded to light colors so dark mode looked HORRIBLE, and I had to rebuild the entire color system on CSS variable tokens to fix it (213 replacements). ## What I'm Proud Of That it genuinely doesn't feel like a toy. It feels like something you could actually stick in a hospital ops room. Running the copilot, getting a real recommendation, hitting \"Implement\" and watching the metrics actually move is so satisfying. And the compliance stuff isn't just for looks, every choice actually ties back to a real medical standard. ## How To Test It Just open the link and you're in, no setup needed. If you'd rather run it yourself, download everything and follow the instructions in the README. Once you're in, easiest thing is to hit **\"Auto Demo\"** in the sidebar, it's a 1-click walkthrough of the whole thing. After that go trigger a crisis in the **Sandbox** and flip to the **Command Center** to watch it hit the floor plan, run the **AI Copilot** and click Implement to see the numbers move, and toggle dark/light mode in the top right.", "repo": "https://github.com/DagaVedant/PulseFlow-AI", "demo": "https://pulse-flow-mjilr4qso-dagavedants-projects.vercel.app/command-center"}]...
|
[{"post_id": 23508, "ts": "202 [{"post_id": 23508, "ts": "2026-07-06T15:05:31Z", "hours": 0.0, "text": "got everything read to be shipped added pictures updated README with new info cleaned up repo updated project description updated viewing link"}, {"post_id": 23254, "ts": "2026-07-06T03:08:57Z", "hours": 4.0, "text": "largest update yet what i built: removed the entire liquid-glass ui, glass, gradients, cursive headings, wallpaper animations- deleted all the older theme that was AI slop made a clean new navy theme that IIII coded myself- its a flat design, with a nice navy blue background,and some cool fonts like space grotesk and jetbrains mono removed the digital-twin page because it wasn’t even needed anymore fixed a nav bar bug and cleaned up the readme to match all the new changes wrote a run.py that boots backend and frontend together in one command instead of like 10000 commands deleted a bunch of unused old images and docs also removed all the old random things too what broke: basically two times the app wasnt loading at all…it ended up being some old runs that didnt leave the port how i fixed it just killed the programs and restarted everything"}, {"post_id": 22625, "ts": "2026-07-05T05:33:27Z", "hours": 0.0, "text": "big decision no more vibecoding so basically im creating a new basic design because i dont want to make everything look vibecoded its going to be very simple, minimalistic, and just really tabular im going to slowly make it look better as I get better at coding everything myself unlike the previous liquid glass design where I made the design and it was implemented using AI"}, {"post_id": 22318, "ts": "2026-07-04T18:40:50Z", "hours": 0.0, "text": "Quick Fixes revised README demo link and Stardance “Try It Link” rewrote all the devlogs to match my style (mods can you create a way for me to update my ship message from before to show all the new features I added)"}, {"post_id": 22265, "ts": "2026-07-04T17:21:57Z", "hours": 1.0, "text": "What I built: fully remade each page to match the design. Its like a really APPLEish looking liquid glass vibe, an animated background (kinda like the iMac, but a bit different), updated the frosted sidebar look, and made the cool glass cards everywhere command center, patient flow, staffing, clinical, ai insights, and labs were running on fake data before this, so now they run on the backend websocket operations, copilot, and sandbox got the same glass restyle as the others, but it was a lot more work to get the buttons and all the other functions to work properly and actually communicate with the backend changed the 9 sidebar icons from the design, to text tabs, and made the one ur on a greenish color and made them all black instead of gray animated the wallpaperrrrrrrrrrrrrrrr (definitely my favorite part) fully removed all the old files, and cleaned up dead weight and made everything cleaner fixed up the gitignore, ruff_cache was only ignored at the root before, now it’s ignored everywhere it shows up (backend, frontend, root). added coverage/, .turbo/, and *.tmp What broke: when i made the first animation, it was extremely slow and it was wayyy to subtle and i could barely tell if it was moving my second attempt made it look way to active and hectic third try was perfect How I fixed it: rewrote the keyframes with bigger swings and rotation on a ~2.5s loop for the dramatic version, then pulled it back about a third once it felt like too much."}, {"post_id": 21221, "ts": "2026-07-03T01:36:12Z", "hours": 2.0, "text": "what i built picked the new look for the entire website. MacOS Liquid Glass vibes instead of the old clinical AI generated design did it entirely in figma, no code yet, just comps- built out command center as the first full mockup: floating glass panels, frosted cards, gradient canvas behind everything instead of a flat background…LOOKS STRAIGHT OUT OF APPLE HQ trusttttt pulled in a cursive treatment for the wordmark and a tuffff color palette this page is kinda like a reference page yk. Basically imma use this page and then figure out how each of the next few pages are gonna look like## what broke nothing broke since there’s no implementation yet- the actual friction was getting figma to fake something it doesn’t really do natively. so basically Figma doesn’t have a liquid glass feeling or even a backdrop blur refraction type of thing, so to get the cards to look like the PERFECT APPLE FROSTED GLASS, instead of the boring looking like kinda transparent kinda not white box how i fixed it basically kinda faked the entire blur by creating a duplicate of the background behind each of the cards instead of just using the transparency feature. the blur by layering a blurred duplicate of the background behind each card. thats kinda how I got that frosted apple glass type instead of a weird semi-transparent glass look kept a saturated gradient underneath (THE STANDARD IMAC BACKGROUND) so the glass has something to actually pick up color from i basically spent like 30 mins slowly adjusting the opacity by eye until it looked like the goated apple liquid glass look next step is turning this into real webpage instead of just a figma mockup design stages 1. original ui (brown) the starting point. flat, clinical, warm-brown/cream tones with a green accent. it was functional but looked really AI and generic. It didn’t feel like me or anything that I would personally build. 2. first sketch (white) this one was mainly like a way for me to figure out how to lay all the elements out while still keeping that abstract vibe that I like. (HEAVILY BASING IT OFF OF APPLE) . I also cleaned some things up, made it more minimalistic, and made everything to a light/cream. basically, I wanted it to look more and more like an apple product so that it has the clean , sleek design that I love about MacOs. 3. final design (blue, liquid glass) this is my final design. I completely gave up on making it white/cream and decided to make it what I want (A LOT OF BLUE AND THE CLASSIC IMAC BACKGROUND). I made everything with that like liquid glass/frosted effect and basically just built off of the IMAC standard display, MacOS vibes and like the apple minimalism and basically took A LOTTTT OF INSPO from Apple"}, {"post_id": 20815, "ts": "2026-07-02T14:57:21Z", "hours": 3.0, "text": "What I built: gated every REST route under /api/v1 behind one shared bearer token, checked once at the router level so it covers simulation, hospital, and ai endpoints without repeating myself. /health stays open on purpose, load balancers need that. gated the websocket too. ?token= checked before the connection even gets accepted, so trigger_event, update_config, add_bottleneck, remove_bottleneck can’t touch live sim state from some random unauthenticated client anymore. SECRET_KEY finally does something. used to just sit there unreferenced, now it’s the actual credential, and it’s got the startup check it was missing, refuses to boot in production if it’s still the default. also went and built full JWT login with viewer/operator roles along the way, then looked at it and went nah, overkill for a demo hospital sim, and reverted back to the simple shared-secret version. kept the actual gate though, that’s the part that mattered. What broke: first version closed unauthenticated websocket connections with code 4401, except that happens before accept(), and turns out you can’t send a close frame on a connection that was never accepted. so it actually shows up as a plain HTTP 403 on the handshake, not 4401 like the docstring said. wire behavior just didn’t match what I wrote down. also, local dev was quietly broken and I didn’t notice for a bit: the backend’s real default SECRET_KEY didn’t match what .env.example said it was, so a fresh clone would 401 on literally everything out of the box. How I fixed it: checked the 403-vs-4401 thing wasn’t actually a bug, just how Starlette handles closing a connection pre-accept. confirmed it with a real client hitting it with no token, still blocks fine, just not with the close code I expected. left it as-is and fixed the docs instead of chasing a non-issue. for the env mismatch, just made .env.example, .env.local, and the actual python default all agree, then ran the whole thing end to end again, no token, wrong token, right token, until 401s and 200s landed exactly where they should."}, {"post_id": 20047, "ts": "2026-07-01T15:38:03Z", "hours": 2.0, "text": "made pulseflow actually look like medical software so basically before all of this, the entire app looked like a mess of dark neon video game stuff. basically it was a mess of glowing things, random gradients, and felt more like a game then a hospital platform. instead of just redesigning it, i made a design.md file first and actually looked into references like hipaa, fda title 21 cfr part 11, and wcag 2.1. pretty much every design choice came from those what actually changed got rid of all the glow, gradients, and unnecessary animations nurses are already tired during long shifts. they need to read information fast, not watch things moving around. everything respects prefers-reduced-motion now phi is masked by default patient names, dobs, mrns, and other sensitive info all go through a privacymask component and stay hidden until a clinician chooses to reveal them. keeps patient data safe added a visible auto-logout timer the session timeout is always shown in the top bar so clinicians know exactly how much time is left before they’re logged out automatically to protect patient data status is never just color anymore every status uses an icon, text label, and color together, so it’s still easy to understand redesigned critical alerts instead of giant glowing red warnings, they’re now banners that clearly explain what’s wrong without being distracting added dark mode everything works in both light and dark mode without changing how the interface feels. the annoying part dark mode looked terrible a lot of the status cards were hardcoded with light colors like bg-amber-50 , so they ended up looking like pale cream boxes sitting on dark background ended up reworking the entire color system instead of hardcoding colors, i moved every color to css variable tokens ( safe , flag , crit ) so each one automatically changes between light and dark mode. that ended up being 213 replacements across the whole project (it was a LOTTT of work) picked better colors. i went with warm off-white and warm charcoal instead of pure white and pure black so it doesn’t hurt your eyes"}, {"post_id": 5003, "ts": "2026-06-08T17:30:30Z", "hours": 3.0, "text": "PULSEFLOW AI IS FINALLY LIVE Just deployed the full stack today (backend is on Render and frontend is on Vercel). The backend was so easy to get running, only took 10ish mins. MIGHT have forgot that Optional wasn’t imported in the config.py. The frontend was SO MUCH HARDER OMG! first, Vercel blocked the deploy three times because of Next.js 15.0.3 had security vulnerabilities. i just updated to 15.3.3 (this didnt work because it had its own CVE). after that i tried using next@lastest, but then i needed ESLint 9, which broke the entire dependency tree. I used ^15 so npm resolves the latest patched 15.x without jumping major versions. Four deploys, two CVEs, one peer dependency conflict. ahhh this was painful BUT, IT FINALLY WORKS SO IT WAS WORTH IT!!!! (image shows it running on vercel)"}]...
|
Title: PulseFlow AI by @Vedant_Daga | Stardance
D Title: PulseFlow AI by @Vedant_Daga | Stardance
Devlogs:
PULSEFLOW AI IS FINALLY LIVE Just deployed the full stack today (backend is on Render and frontend is on Vercel). The backend was so easy to get running, only took 10ish mins. MIGHT have forgot that Optional wasn’t imported in the config.py. The frontend was SO MUCH HARDER OMG! first, Vercel blocked the deploy three times because of Next.js 15.0.3 had security vulnerabilities. i just updated to 15.3.3 (this didnt work because it had its own CVE). after that i tried using next@lastest, but then i needed ESLint 9, which broke the entire dependency tree. I used ^15 so npm resolves the latest patched 15.x without jumping major versions. Four deploys, two CVEs, one peer dependency conflict. ahhh this was painful BUT, IT FINALLY WORKS SO IT WAS WORTH IT!!!! (image shows it running on vercel)
made pulseflow actually look like medical software so basically before all of this, the entire app looked like a mess of dark neon video game stuff. basically it was a mess of glowing things, random gradients, and felt more like a game then a hospital platform. instead of just redesigning it, i made a design.md file first and actually looked into references like hipaa, fda title 21 cfr part 11, and wcag 2.1. pretty much every design choice came from those what actually changed got rid of all the glow, gradients, and unnecessary animations nurses are already tired during long shifts. they need to read information fast, not watch things moving around. everything respects prefers-reduced-motion now phi is masked by default patient names, dobs, mrns, and other sensitive info all go through a privacymask component and stay hidden until a clinician chooses to reveal them. keeps patient data safe added a visible auto-logout timer the session timeout is always shown in the top bar so clinicians know exactly how much time is left before they’re logged out automatically to protect patient data status is never just color anymore every status uses an icon, text label, and color together, so it’s still easy to understand redesigned critical alerts instead of giant glowing red warnings, they’re now banners that clearly explain what’s wrong without being distracting added dark mode everything works in both light and dark mode without changing how the interface feels. the annoying part dark mode looked terrible a lot of the status cards were hardcoded with light colors like bg-amber-50 , so they ended up looking like pale cream boxes sitting on dark background ended up reworking the entire color system instead of hardcoding colors, i moved every color to css variable tokens ( safe , flag , crit ) so each one automatically changes between light and dark mode. that ended up being 213 replacements across the whole project (it was a LOTTT of work) picked better colors. i went with warm off-white and warm charcoal instead of pure white and pure black so it doesn’t hurt your eyes
What I built: gated every REST route under /api/v1 behind one shared bearer token, checked once at the router level so it covers simulation, hospital, and ai endpoints without repeating myself. /health stays open on purpose, load balancers need that. gated the websocket too. ?token= checked before the connection even gets accepted, so trigger_event, update_config, add_bottleneck, remove_bottleneck can’t touch live sim state from some random unauthenticated client anymore. SECRET_KEY finally does something. used to just sit there unreferenced, now it’s the actual credential, and it’s got the startup check it was missing, refuses to boot in production if it’s still the default. also went and built full JWT login with viewer/operator roles along the way, then looked at it and went nah, overkill for a demo hospital sim, and reverted back to the simple shared-secret version. kept the actual gate though, that’s the part that mattered. What broke: first version closed unauthenticated websocket connections with code 4401, except that happens before accept(), and turns out you can’t send a close frame on a connection that was never accepted. so it actually shows up as a plain HTTP 403 on the handshake, not 4401 like the docstring said. wire behavior just didn’t match what I wrote down. also, local dev was quietly broken and I didn’t notice for a bit: the backend’s real default SECRET_KEY didn’t match what .env.example said it was, so a fresh clone would 401 on literally everything out of the box. How I fixed it: checked the 403-vs-4401 thing wasn’t actually a bug, just how Starlette handles closing a connection pre-accept. confirmed it with a real client hitting it with no token, still blocks fine, just not with the close code I expected. left it as-is and fixed the docs instead of chasing a non-issue. for the env mismatch, just made .env.example, .env.local, and the actual python default all agree, then ran the whole thing end to end again, no token, wrong token, right token, until 401s and 200s landed exactly where they should.
what i built picked the new look for the entire website. MacOS Liquid Glass vibes instead of the old clinical AI generated design did it entirely in figma, no code yet, just comps- built out command center as the first full mockup: floating glass panels, frosted cards, gradient canvas behind everything instead of a flat background…LOOKS STRAIGHT OUT OF APPLE HQ trusttttt pulled in a cursive treatment for the wordmark and a tuffff color palette this page is kinda like a reference page yk. Basically imma use this page and then figure out how each of the next few pages are gonna look like## what broke nothing broke since there’s no implementation yet- the actual friction was getting figma to fake something it doesn’t really do natively. so basically Figma doesn’t have a liquid glass feeling or even a backdrop blur refraction type of thing, so to get the cards to look like the PERFECT APPLE FROSTED GLASS, instead of the boring looking like kinda transparent kinda not white box how i fixed it basically kinda faked the entire blur by creating a duplicate of the background behind each of the cards instead of just using the transparency feature. the blur by layering a blurred duplicate of the background behind each card. thats kinda how I got that frosted apple glass type instead of a weird semi-transparent glass look kept a saturated gradient underneath (THE STANDARD IMAC BACKGROUND) so the glass has something to actually pick up color from i basically spent like 30 mins slowly adjusting the opacity by eye until it looked like the goated apple liquid glass look next step is turning this into real webpage instead of just a figma mockup design stages 1. original ui (brown) the starting point. flat, clinical, warm-brown/cream tones with a green accent. it was functional but looked really AI and generic. It didn’t feel like me or anything that I would personally build. 2. first sketch (white) this one was mainly like a way for me to figure out how to lay all the elements out while still keeping that abstract vibe that I like. (HEAVILY BASING IT OFF OF APPLE) . I also cleaned some things up, made it more minimalistic, and made everything to a light/cream. basically, I wanted it to look more and more like an apple product so that it has the clean , sleek design that I love about MacOs. 3. final design (blue, liquid glass) this is my final design. I completely gave up on making it white/cream and decided to make it what I want (A LOT OF BLUE AND THE CLASSIC IMAC BACKGROUND). I made everything with that like liquid glass/frosted effect and basically just built off of the IMAC standard display, MacOS vibes and like the apple minimalism and basically took A LOTTTT OF INSPO from Apple
What I built: fully remade each page to match the design. Its like a really APPLEish looking liquid glass vibe, an animated background (kinda like the iMac, but a bit different), updated the frosted sidebar look, and made the cool glass cards everywhere command center, patient flow, staffing, clinical, ai insights, and labs were running on fake data before this, so now they run on the backend websocket operations, copilot, and sandbox got the same glass restyle as the others, but it was a lot more work to get the buttons and all the other functions to work properly and actually communicate with the backend changed the 9 sidebar icons from the design, to text tabs, and made the one ur on a greenish color and made them all black instead of gray animated the wallpaperrrrrrrrrrrrrrrr (definitely my favorite part) fully removed all the old files, and cleaned up dead weight and made everything cleaner fixed up the gitignore, ruff_cache was only ignored at the root before, now it’s ignored everywhere it shows up (backend, frontend, root). added coverage/, .turbo/, and *.tmp What broke: when i made the first animation, it was extremely slow and it was wayyy to subtle and i could barely tell if it was moving my second attempt made it look way to active and hectic third try was perfect How I fixed it: rewrote the keyframes with bigger swings and rotation on a ~2.5s loop for the dramatic version, then pulled it back about a third once it felt like too much.
Quick Fixes revised README demo link and Stardance “Try It Link” rewrote all the devlogs to match my style (mods can you create a way for me to update my ship message from before to show all the new features I added)
big decision no more vibecoding so basically im creating a new basic design because i dont want to make everything look vibecoded its going to be very simple, minimalistic, and just really tabular im going to slowly make it look better as I get better at coding everything myself unlike the previous liquid glass design where I made the design and it was implemented using AI
largest update yet what i built: removed the entire liquid-glass ui, glass, gradients, cursive headings, wallpaper animations- deleted all the older theme that was AI slop made a clean new navy theme that IIII coded myself- its a flat design, with a nice navy blue background,and some cool fonts like space grotesk and jetbrains mono removed the digital-twin page because it wasn’t even needed anymore fixed a nav bar bug and cleaned up the readme to match all the new changes wrote a run.py that boots backend and frontend together in one command instead of like 10000 commands deleted a bunch of unused old images and docs also removed all the old random things too what broke: basically two times the app wasnt loading at all…it ended up being some old runs that didnt leave the port how i fixed it just killed the programs and restarted everything
got everything read to be shipped added pictures updated README with new info cleaned up repo updated project description updated viewing link
Ships:
# PulseFlow-AI — A Live Hospital Digital Twin + AI Ops Copilot ## What I Made Basically it's a live "digital twin" of a hospital. You watch patients move through the ER, labs, imaging, ICU and wards in real time, and it's all running on a simulation engine (FastAPI + WebSockets) that streams the state to the frontend constantly. On top of that I built an AI copilot that spots bottlenecks and actually recommends staffing changes using OR-Tools optimization + Holt-Winters forecasting. There's also a sandbox where you can throw crises at it (flu outbreak, CT scanner dying, mass casualty) and watch the hospital react. Plus it does shift handoff reports and tracks high-risk patients with AI care plans. The main thing I cared about was making it actually feel like real medical software, not a hackathon toy. So I built the whole UI around a design contract based on HIPAA, FDA Title 21 CFR Part 11 and WCAG 2.1. PHI is hidden by default, there's an auto-logout timer, status is never just a color, and I ripped out every glow/gradient/animation so it's calm to look at on a long shift. Full dark/light mode too. ## What Was Challenging The real-time stuff, honestly. Keeping the frontend in sync with a simulation that never stops updating, over WebSockets, without it lagging or flickering, was a pain. The AI optimization was also tough, getting OR-Tools to give recommendations that actually made sense and then explaining them in plain English. And the dark mode almost killed me lol. All my status cards were hardcoded to light colors so dark mode looked HORRIBLE, and I had to rebuild the entire color system on CSS variable tokens to fix it (213 replacements). ## What I'm Proud Of That it genuinely doesn't feel like a toy. It feels like something you could actually stick in a hospital ops room. Running the copilot, getting a real recommendation, hitting "Implement" and watching the metrics actually move is so satisfying. And the compliance stuff isn't just for looks, every choice actually ties back to a real medical standard. ## How To Test It Just open the link and you're in, no setup needed. If you'd rather run it yourself, download everything and follow the instructions in the README. Once you're in, easiest thing is to hit **"Auto Demo"** in the sidebar, it's a 1-click walkthrough of the whole thing. After that go trigger a crisis in the **Sandbox** and flip to the **Command Center** to watch it hit the floor plan, run the **AI Copilot** and click Implement to see the numbers move, and toggle dark/light mode in the top right....
|
1792882048.1551743
|
1793746048.1551743
|
|
13013
|
Goofy-Goober by @LPcomix123 | Stardance
|
LPcomix123
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-21T21:42:52Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Over the past few days, I have been making a slack bot along with the stardance guide. I have learned how to code basic slack bots in node.js, and how to securely store and use bot and app tokens and api keys in a .env. Some commands include (but not limited to): /goofy-goober-ranfact which gives you a random fact, and: /goofy-goober-wotd which gives you the word of the day.", "repo": "https://github.com/LPcomix123/Goofy-Goober", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354?skip_today=1"}]...
|
[{"post_id": 81647, "ts": "202 [{"post_id": 81647, "ts": "2026-10-21T21:28:23Z", "hours": 3.6494, "text": "Over the last few days, I have been developing a node.js slack bot by following the stardance mission and guide."}]...
|
Title: Goofy-Goober by @LPcomix123 | Stardance
De Title: Goofy-Goober by @LPcomix123 | Stardance
Devlogs:
Over the last few days, I have been developing a node.js slack bot by following the stardance mission and guide.
Ships:
Over the past few days, I have been making a slack bot along with the stardance guide. I have learned how to code basic slack bots in node.js, and how to securely store and use bot and app tokens and api keys in a .env. Some commands include (but not limited to): /goofy-goober-ranfact which gives you a random fact, and: /goofy-goober-wotd which gives you the word of the day....
|
1793206164.133457
|
1793292564.133457
|
|
13057
|
SlopOS by @hariharann | Stardance
|
hariharann
|
1
|
6.08
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T10:27:29Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "IT IS TIIIIIMMMMMMMEEEEE !!!!!! SLOP OS IS FINALLLLYYYYY HERERERERERER!!!! its a fake desktop os in ur browser windows vibes but everything is wrong on purpose u already know the dril i cant spoil everything in one post tbh do ur best to find all the hidden easter eggs hehe some stuff only shows up if u click enough times some stuff lies to u some stuff rickrolls u some stuff just crumbles and disappears no build step no install just open it and enjoyyyy go poke around break stuff leave feedback in the mouth ask clippy anything see what happens when u try to change the background or accept cookies or right click empty desktop or hit start enough times yeah thats slopos v0 peak slop achieved see ya", "repo": "https://github.com/nothariharan/SlopOS", "demo": "https://nothariharan.github.io/SlopOS/"}]...
|
[{"post_id": 29467, "ts": "202 [{"post_id": 29467, "ts": "2026-07-16T13:12:54Z", "hours": 2.0372, "text": "WE BACK AT IT FAMMM !! SLOP RETURNSSS last time we shipped games + paint + memes. this update we went full fake windows mode . like 95/98/xp but wrong on purpose. 1. command.com 💻 real terminal vibes in the browser. CRT screen + green text + beeps when u type too fast fake filesystem ( C:\\Desktop , Windows , System32 etc) commands like dir , cd , type , help , format (dont) also has a tiny text adventure hidden in Adventure.slop 2. BSOD + BIOS reboot ( random ) spam maximize enough times or hit Slop Updates and boom. classic blue screen → fake bios memory test → hard refresh. peak windows trauma. 3. My Computer + Explorer ( had to have it ) desktop finally feels like an actual pc. thing what it does how it lies My Computer floppy / C: / cd / control panel A: and D: are broken lol Explorer tree + files tree is decorative. double click to open 4. Notepad + Calculator ( does it work ?? ) the boring apps every windows install had. notepad → save fails half the time, text can scramble calc → 30% chance wrong answer. math is optional now 5. Recycle Bin ♻️ ( 3R’s kids ) delete icons → they go here now (after the spin wheel still cooks u). restore fails a lot. empty bin sometimes spawns something back. eco friendly? nah. 6. Run + Shut Down start menu got real windows chrome. Run… / Ctrl+R → try notepad , calc , cmd , winver , rickroll , format c: Shut Down… → standby / shut down / restart / log off (log off does nothing useful) also Programs ▸ submenu + Control Panel full of placebo settings. 7. desktop cleanup 🧹 feedback files were taking over the whole desktop so we nuked the pile. right click empty desktop → clear feedback files if it happens again. so far these are implemented might ship it coz idk honestly to do what more here so gimme ideas and recommendatiosn in comments see ya when the next patch drops 🫡 live at: https://nothariharan.github.io/SlopOS/"}, {"post_id": 16655, "ts": "2026-06-27T02:34:10Z", "hours": 2.0478, "text": "UPDATeeeeEEe!!!!!!! yo gng we back with another huge update because the slop never stops trust me bro 👀👀 we added a bunch of new stuff to make this desktop experience even more cursed better :))) 1. Slopsweeper.exe 💣( our first game yipee ) its minesweeper but everything is rigged lol. first click protection? psych, 10% chance a mine spawns right under your cursor as soon as you click (Schrödinger’s mine is real shi 🐈) drunk flagging: 20% chance the flag lands on a random adjacent cell instead of where you clicked. good luck. added a “?” button that explains the game in the most confusing way possible. 2. SlopPaint.exe 🎨 ( for my beloved artists ) paint like a pro, or dont. wet paint physics: your masterpiece literally melts and drips down the canvas 1px every 80ms. cursed eraser: erases in bright neon pink and randomly stamps “SLOP” in Comic Sans. clippy critiques: click save and clippy will roast your art skills. 3. Memes.dll 🐸 fully working custom meme creator (no rickrolls this time, pinky promise). fetches random templates from Imgflip. sliders for font size and vertical offset, plus text/stroke color pickers. download button actually renders and downloads the image (complete with a “made with slop” watermark). ANDDD A LOT MORE QOL UPDATES (degrading Quality as a matter of fact but who cares lmao ) yeah thats the new update, go break some windows and see ya !!!"}, {"post_id": 6154, "ts": "2026-06-10T10:57:07Z", "hours": 0.8544, "text": "updatee !!! ( shipping soon 👀👀) So yeah — added many new apps, few cool ones that I have added (yea no strings attached trust me bro). 1. Feedback!!! Feed it ur feedback which then it eats (it literally eats btw — it has an eating animation lol) After it eats, it gets added as a feedback into the desktop You can view your feedback by clicking on it and u can see it. Delete apps now — YEAHHHH!!! But umm… it’s a gamble. WHO DOESNT LOVE GAMBLING NOW !!!! Basically, each time u delete: 50% for it to duplicate 50% for it to delete (yeah it’s 50% not 0.5 trust gng 🥀🥀) Cookies Added cookies (always need few of em 😋) ANDDDDD FOR THE BEST FOR LAST WE ADDED CLIPPY (atleast a edgy version of him) He answers your question in kind manner 😍 And yeah that’s SlopOS v0 — hoping yall liked it, soon shipping, see ya !!!"}, {"post_id": 5564, "ts": "2026-06-09T12:02:47Z", "hours": 1.0456, "text": "Update #0.00000000000000067 ! So now we have a background — and ofc I had to go with the classic Windows one :) Onboarding (much more SEAMLESS) (souless) Want to type your name? — you have a slider bro gl with that slide to the correct letter ; oh lower case? — clicking on it leads u to numbers ; yea bro sorry we dont got lowercase here Background changer coz who loves to hv same one for long time — a twist hehe :) clicking on it does NOTHING after 5-6 clicks u get this error pop up — ok fine u want to close the pop up? yeah bro u cant it moves around detecting hover property of your cursor ur cooked — unless ur super fast What else should I add to this? give suggestions :)"}, {"post_id": 5408, "ts": "2026-06-09T04:58:56Z", "hours": 0.3658, "text": "we cookin absolute slop 🔥🔥🔥 CHECK OUT MY LATEST DEVLOGS YALL R GONNA LOVE IT jokes aside im tryna maybe rebuild a slop os ( windows ) more sloppier than windows ooooo lets wait and see it has lots of easter animations that i cant show via image but once i ship it will show it to yall :]"}]...
|
Title: SlopOS by @hariharann | Stardance
Devlogs: Title: SlopOS by @hariharann | Stardance
Devlogs:
we cookin absolute slop 🔥🔥🔥 CHECK OUT MY LATEST DEVLOGS YALL R GONNA LOVE IT jokes aside im tryna maybe rebuild a slop os ( windows ) more sloppier than windows ooooo lets wait and see it has lots of easter animations that i cant show via image but once i ship it will show it to yall :]
Update #0.00000000000000067 ! So now we have a background — and ofc I had to go with the classic Windows one :) Onboarding (much more SEAMLESS) (souless) Want to type your name? — you have a slider bro gl with that slide to the correct letter ; oh lower case? — clicking on it leads u to numbers ; yea bro sorry we dont got lowercase here Background changer coz who loves to hv same one for long time — a twist hehe :) clicking on it does NOTHING after 5-6 clicks u get this error pop up — ok fine u want to close the pop up? yeah bro u cant it moves around detecting hover property of your cursor ur cooked — unless ur super fast What else should I add to this? give suggestions :)
updatee !!! ( shipping soon 👀👀) So yeah — added many new apps, few cool ones that I have added (yea no strings attached trust me bro). 1. Feedback!!! Feed it ur feedback which then it eats (it literally eats btw — it has an eating animation lol) After it eats, it gets added as a feedback into the desktop You can view your feedback by clicking on it and u can see it. Delete apps now — YEAHHHH!!! But umm… it’s a gamble. WHO DOESNT LOVE GAMBLING NOW !!!! Basically, each time u delete: 50% for it to duplicate 50% for it to delete (yeah it’s 50% not 0.5 trust gng 🥀🥀) Cookies Added cookies (always need few of em 😋) ANDDDDD FOR THE BEST FOR LAST WE ADDED CLIPPY (atleast a edgy version of him) He answers your question in kind manner 😍 And yeah that’s SlopOS v0 — hoping yall liked it, soon shipping, see ya !!!
UPDATeeeeEEe!!!!!!! yo gng we back with another huge update because the slop never stops trust me bro 👀👀 we added a bunch of new stuff to make this desktop experience even more cursed better :))) 1. Slopsweeper.exe 💣( our first game yipee ) its minesweeper but everything is rigged lol. first click protection? psych, 10% chance a mine spawns right under your cursor as soon as you click (Schrödinger’s mine is real shi 🐈) drunk flagging: 20% chance the flag lands on a random adjacent cell instead of where you clicked. good luck. added a “?” button that explains the game in the most confusing way possible. 2. SlopPaint.exe 🎨 ( for my beloved artists ) paint like a pro, or dont. wet paint physics: your masterpiece literally melts and drips down the canvas 1px every 80ms. cursed eraser: erases in bright neon pink and randomly stamps “SLOP” in Comic Sans. clippy critiques: click save and clippy will roast your art skills. 3. Memes.dll 🐸 fully working custom meme creator (no rickrolls this time, pinky promise). fetches random templates from Imgflip. sliders for font size and vertical offset, plus text/stroke color pickers. download button actually renders and downloads the image (complete with a “made with slop” watermark). ANDDD A LOT MORE QOL UPDATES (degrading Quality as a matter of fact but who cares lmao ) yeah thats the new update, go break some windows and see ya !!!
WE BACK AT IT FAMMM !! SLOP RETURNSSS last time we shipped games + paint + memes. this update we went full fake windows mode . like 95/98/xp but wrong on purpose. 1. command.com 💻 real terminal vibes in the browser. CRT screen + green text + beeps when u type too fast fake filesystem ( C:\Desktop , Windows , System32 etc) commands like dir , cd , type , help , format (dont) also has a tiny text adventure hidden in Adventure.slop 2. BSOD + BIOS reboot ( random ) spam maximize enough times or hit Slop Updates and boom. classic blue screen → fake bios memory test → hard refresh. peak windows trauma. 3. My Computer + Explorer ( had to have it ) desktop finally feels like an actual pc. thing what it does how it lies My Computer floppy / C: / cd / control panel A: and D: are broken lol Explorer tree + files tree is decorative. double click to open 4. Notepad + Calculator ( does it work ?? ) the boring apps every windows install had. notepad → save fails half the time, text can scramble calc → 30% chance wrong answer. math is optional now 5. Recycle Bin ♻️ ( 3R’s kids ) delete icons → they go here now (after the spin wheel still cooks u). restore fails a lot. empty bin sometimes spawns something back. eco friendly? nah. 6. Run + Shut Down start menu got real windows chrome. Run… / Ctrl+R → try notepad , calc , cmd , winver , rickroll , format c: Shut Down… → standby / shut down / restart / log off (log off does nothing useful) also Programs ▸ submenu + Control Panel full of placebo settings. 7. desktop cleanup 🧹 feedback files were taking over the whole desktop so we nuked the pile. right click empty desktop → clear feedback files if it happens again. so far these are implemented might ship it coz idk honestly to do what more here so gimme ideas and recommendatiosn in comments see ya when the next patch drops 🫡 live at: https://nothariharan.github.io/SlopOS/
Ships:
IT IS TIIIIIMMMMMMMEEEEE !!!!!! SLOP OS IS FINALLLLYYYYY HERERERERERER!!!! its a fake desktop os in ur browser windows vibes but everything is wrong on purpose u already know the dril i cant spoil everything in one post tbh do ur best to find all the hidden easter eggs hehe some stuff only shows up if u click enough times some stuff lies to u some stuff rickrolls u some stuff just crumbles and disappears no build step no install just open it and enjoyyyy go poke around break stuff leave feedback in the mouth ask clippy anything see what happens when u try to change the background or accept cookies or right click empty desktop or hit start enough times yeah thats slopos v0 peak slop achieved see ya...
|
1793224536.8922246
|
1793310936.8922246
|
|
13059
|
ReadmeGen by @cravex1 | Stardance
|
cravex1
|
1
|
1.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-09T12:58:19Z", "hours": 1.0, "multiplier": 3.47, "payout": 4, "blessing": "neutral", "text": "I made an automatic README generator. It has 2 modes: with AI and without AI. To use AI you need to configure your own API key.", "repo": "https://github.com/Cravex1862/readmegen", "demo": "https://readmegen.ashwinchoudhury.me"}]...
|
[{"post_id": 5557, "ts": "2026 [{"post_id": 5557, "ts": "2026-06-09T11:48:19Z", "hours": 1.1681, "text": "Built a CLI tool that analyzes any local repo and generates a complete README.md"}]...
|
Title: ReadmeGen by @cravex1 | Stardance
Devlogs: Title: ReadmeGen by @cravex1 | Stardance
Devlogs:
Built a CLI tool that analyzes any local repo and generates a complete README.md
Ships:
I made an automatic README generator. It has 2 modes: with AI and without AI. To use AI you need to configure your own API key....
|
1793137851.0489612
|
1793224251.0489612
|
|
13061
|
GoDotWebs by @rickyred | Stardance
|
rickyred
|
1
|
41.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-18T11:52:05Z", "hours": 41.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "GoDotWebs auto-fills online applications and web forms using a saved profile, and provides outcome predictions and simulated reviewer feedback on the page you are applying to.", "repo": "https://github.com/RedTotally/godotwebs-closed-source", "demo": "https://godotwebs.com/"}]...
|
[{"post_id": 10494, "ts": "202 [{"post_id": 10494, "ts": "2026-06-17T07:31:23Z", "hours": 9.1172, "text": "Now, it’s just me waiting for Google to approve the latest version of GoDotWebs’ extension. https://youtu.be/mglfqEzU0cg?si=78BLqf_MO6WqXgow"}, {"post_id": 8029, "ts": "2026-06-13T12:03:26Z", "hours": 4.3044, "text": "Submitted the extension; hope for the best."}, {"post_id": 7508, "ts": "2026-06-12T15:15:01Z", "hours": 5.8794, "text": "Cooking up the home page."}, {"post_id": 7344, "ts": "2026-06-12T07:41:14Z", "hours": 3.1031, "text": "Added onboarding; now there should only be skeleton loading and responsiveness left for me to work on. Then I can finally move to designing the home page & other pages."}, {"post_id": 6833, "ts": "2026-06-11T13:46:08Z", "hours": 3.8719, "text": "Did some UI updates."}, {"post_id": 6724, "ts": "2026-06-11T08:16:43Z", "hours": 0.6756, "text": "Also added web browsing to the simulation models generation."}, {"post_id": 6705, "ts": "2026-06-11T07:27:37Z", "hours": 2.4819, "text": "Just finished the new file page, where you tell GoDotWebs who you are, and it will generate a full profile according to that. Then, you may use the extension to fill out your applications, and it will be based on the profile."}, {"post_id": 6639, "ts": "2026-06-11T03:59:20Z", "hours": 3.2383, "text": "Kind of designed the dashboard, still a long way to go. Hopefully, I can ship it very soon."}, {"post_id": 6095, "ts": "2026-06-10T07:42:54Z", "hours": 1.6053, "text": "Apart from filling out your forms, it also predicts the outcome of your application. You may also create models. They could be simulations of people who will comment on your application based on their trials. (UI’s still bad, I know, I will work on that later)"}, {"post_id": 6042, "ts": "2026-06-10T04:45:20Z", "hours": 6.5967, "text": "So, this is my first devlog. I am building an application filler. So when you are coding, your code editor will provide you with code completion. I took inspiration from it and thought I could make something like that, except for applications. Could be university, job, or event applications. UI is still scrappy, but I mainly focus on the UX first because to compete with similar products in the market, it is super essential."}]...
|
Title: GoDotWebs by @rickyred | Stardance
Devlogs Title: GoDotWebs by @rickyred | Stardance
Devlogs:
So, this is my first devlog. I am building an application filler. So when you are coding, your code editor will provide you with code completion. I took inspiration from it and thought I could make something like that, except for applications. Could be university, job, or event applications. UI is still scrappy, but I mainly focus on the UX first because to compete with similar products in the market, it is super essential.
Apart from filling out your forms, it also predicts the outcome of your application. You may also create models. They could be simulations of people who will comment on your application based on their trials. (UI’s still bad, I know, I will work on that later)
Kind of designed the dashboard, still a long way to go. Hopefully, I can ship it very soon.
Just finished the new file page, where you tell GoDotWebs who you are, and it will generate a full profile according to that. Then, you may use the extension to fill out your applications, and it will be based on the profile.
Also added web browsing to the simulation models generation.
Did some UI updates.
Added onboarding; now there should only be skeleton loading and responsiveness left for me to work on. Then I can finally move to designing the home page & other pages.
Cooking up the home page.
Submitted the extension; hope for the best.
Now, it’s just me waiting for Google to approve the latest version of GoDotWebs’ extension. https://youtu.be/mglfqEzU0cg?si=78BLqf_MO6WqXgow
Ships:
GoDotWebs auto-fills online applications and web forms using a saved profile, and provides outcome predictions and simulated reviewer feedback on the page you are applying to....
|
1793120117.8079193
|
1793206517.8079193
|
|
13095
|
Birthday Wishing Website by @dhritikohli | Stardan Birthday Wishing Website by @dhritikohli | Stardance...
|
dhritikohli
|
1
|
4.0
|
24
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-21T22:43:47Z", "hours": 4.0, "multiplier": 5.99, "payout": 24, "blessing": "neutral", "text": "My instagram is filled with reels about how people are creating a “Happy Birthday” website for their girlfriend or boyfriend. I don’t have a boyfriend (sadly TT) but I thought it would be cool to make one for my friends’ birthdays in a couple of weeks. This is a static website and ONLY WORKS ON COMPUTERS. You can open it on your phone but the designing is going to be all messed up. I am still figuring out how to fix this issue.", "repo": "https://github.com/DhritiKohli/Birthday-Wish", "demo": "https://dhritikohli.github.io/Birthday-Wish/"}]...
|
[{"post_id": 11828, "ts": "202 [{"post_id": 11828, "ts": "2026-06-19T08:25:11Z", "hours": 0.6569, "text": "Devlog 4 Did some more css styling where I added an animated effect to the buttons. I also changed the css properties such that when the letter is clicked now, a card is displayed with the letter message inside it. I was also able to remove the square dashed border that was being shown every time the video started from the beginning using a css attribute. Now, I plan on working on the ReadMe for the project and then ship it!!!"}, {"post_id": 11680, "ts": "2026-06-19T01:10:43Z", "hours": 0.7761, "text": "Devlog 3 I did some more styling of the page and succefully added the cake animation and “candle blowing” feature. Now, I plan on to work on the letter itself where a “card” pops up with the letter when the letter button is pressed"}, {"post_id": 11647, "ts": "2026-06-18T23:54:49Z", "hours": 1.4217, "text": "Devlog 2: Since the last time, I just created the background for the website using Canva and did some minimal styling. Then I also replaced the letter viewing button to the purple gift. Now, I plan on adding an animated cake underneath the confetting and do a lil more styling to make it look pretty :)"}, {"post_id": 10727, "ts": "2026-06-17T16:33:42Z", "hours": 1.1597, "text": "Devlog #1 The idea is to basically create a birthday website for my friends who live like across the world for me. I want to have an appreciation letter and an animated cake on the side. I just got the basic functionality of the letter done. Now I plan to add the cake and style the webpage to make it look pretty!"}]...
|
Title: Birthday Wishing Website by @dhritikohli | Title: Birthday Wishing Website by @dhritikohli | Stardance
Devlogs:
Devlog #1 The idea is to basically create a birthday website for my friends who live like across the world for me. I want to have an appreciation letter and an animated cake on the side. I just got the basic functionality of the letter done. Now I plan to add the cake and style the webpage to make it look pretty!
Devlog 2: Since the last time, I just created the background for the website using Canva and did some minimal styling. Then I also replaced the letter viewing button to the purple gift. Now, I plan on adding an animated cake underneath the confetting and do a lil more styling to make it look pretty :)
Devlog 3 I did some more styling of the page and succefully added the cake animation and “candle blowing” feature. Now, I plan on to work on the letter itself where a “card” pops up with the letter when the letter button is pressed
Devlog 4 Did some more css styling where I added an animated effect to the buttons. I also changed the css properties such that when the letter is clicked now, a card is displayed with the letter message inside it. I was also able to remove the square dashed border that was being shown every time the video started from the beginning using a css attribute. Now, I plan on working on the ReadMe for the project and then ship it!!!
Ships:
My instagram is filled with reels about how people are creating a “Happy Birthday” website for their girlfriend or boyfriend. I don’t have a boyfriend (sadly TT) but I thought it would be cool to make one for my friends’ birthdays in a couple of weeks. This is a static website and ONLY WORKS ON COMPUTERS. You can open it on your phone but the designing is going to be all messed up. I am still figuring out how to fix this issue....
|
1793141386.229151
|
1793227786.229151
|
|
13157
|
PhotoPad by @maxjprojects | Stardance
|
maxjprojects
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T10:26:48Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I designed my own version of the HackPad: “The PhotoPad”. It was a pretty fun project and I learned a lot of new stuff. I am also looking forward to the PhotoPad supporting myself when editing photos and videos.", "repo": "https://github.com/MaxJ-code/PhotoPad/", "demo": ""}]...
|
[{"post_id": 10120, "ts": "202 [{"post_id": 10120, "ts": "2026-06-16T18:40:52Z", "hours": 0.0, "text": "Demo video added and improved software"}, {"post_id": 7002, "ts": "2026-06-11T19:09:19Z", "hours": 0.0, "text": "PhotoPad I designed my version of the HackPad, which is focused to help photo-editing and all kind of regular computer based tasks. (HackATime didn’t work for me most of the time, therefore it only shows 24min. I already worked about 6 hours for this project.)"}]...
|
Title: PhotoPad by @maxjprojects | Stardance
Devl Title: PhotoPad by @maxjprojects | Stardance
Devlogs:
PhotoPad I designed my version of the HackPad, which is focused to help photo-editing and all kind of regular computer based tasks. (HackATime didn’t work for me most of the time, therefore it only shows 24min. I already worked about 6 hours for this project.)
Demo video added and improved software
Ships:
I designed my own version of the HackPad: “The PhotoPad”. It was a pretty fun project and I learned a lot of new stuff. I am also looking forward to the PhotoPad supporting myself when editing photos and videos....
|
1793202670.3732944
|
1793289070.3732944
|
|
13183
|
Rune - server-less function runner by @Pikacnu | S Rune - server-less function runner by @Pikacnu | Stardance...
|
Pikacnu
|
1
|
43.0
|
700
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-04T19:31:57Z", "hours": 43.0, "multiplier": 16.16, "payout": 700, "blessing": "neutral", "text": "I’m making an app that works like Cloudflare Workers, but with fewer features. My goal is to enable it to handle unlimited requests seamlessly. While it still has a long way to go compared to Cloudflare Workers—especially in areas like storage, AI utilities, npm package support, and project-based file uploads—I think it’s already good enough for basic use cases. If you’d like to test it out: Username: hackclub Password: hackclub If you want to test the domain utilities, you can check it out here: https://hello-world-rune.pazik.win/ (Note: Since I’m hosting the web server using Cloudflare Tunnels, I can’t use hello-world.rune.pazik.win directly due to missing SSL certificates. To work around this, I rewrite its Host header). One thing to keep in mind: The service has a rate limiter enabled, so you might get temporarily blocked while testing.", "repo": "https://github.com/Pikacnu/rune", "demo": "https://rune.pazik.win/"}]...
|
[{"post_id": 40928, "ts": "202 [{"post_id": 40928, "ts": "2026-08-04T19:24:35Z", "hours": 1.5258, "text": "Write readme (helped by ai) Fix bug when parsing hostname add ci to build docker image Finally I finish it weeee"}, {"post_id": 40563, "ts": "2026-08-04T06:13:23Z", "hours": 2.5181, "text": "make function execute by sub-domain (see image below) add kv store endpoint (and also dashboard) make you able to make function private (still can test) warp function kv_set/ delete/get into a object (kv.set / kv.delete / kv.get)"}, {"post_id": 39641, "ts": "2026-08-02T19:23:40Z", "hours": 7.8044, "text": "Finished the frontend (with help from AI) Bug fixing (a lot of bugs… one of them was a deadlock during environment injection) Passed requests to functions (it can now process requests) Added more information to execution details (debug info) Ahhh… The frontend is almost finished,with some examples and API documentation (all in the same docs). Built using Nuxt UI and Vue. The next devlog should be the last one before the first release. I’ll make it able to detect the hostname to handle function calls (similar to Cloudflare Workers). Screenshot is part of the website"}, {"post_id": 38493, "ts": "2026-07-31T22:03:08Z", "hours": 6.9844, "text": "Add a rate limiter to API endpoints (the rate limit for each function can be modified via API). Add key-value storage (accessible only in scripts). Add environment variable storage (can be updated via API). Change user-related APIs to admin-only access. The basic functionality I think is needed has been completed. Next step: build the frontend (admin panel and documentation)."}, {"post_id": 37333, "ts": "2026-07-29T23:51:09Z", "hours": 5.4314, "text": "Update schema (for user and auth.) Add User and sessions. Exec now can run with starlark. (image is ai generated test code)"}, {"post_id": 29660, "ts": "2026-07-16T18:41:31Z", "hours": 6.6811, "text": "Write a simple router using the built-in net/http. Design a basic database schema to store binaries and function information. Create a database wrapper. (which use Transaction as main exec method) Support two languages that can compile and execute from binaries. Ensure both languages can generate responses (JavaScript returns an object, Starlark returns a dict). Build a simple HTTP server to test functions (compile / execute / save to DB). TODO: Add support for Starlark. Implement authentication. Create a frontend / admin panel. It might take some time to work on next step. Not only because it have lots things to do, also due to I am trying to create something by 3D Printing. Spending too much time on it… If I can share those model. It will be nice."}, {"post_id": 16998, "ts": "2026-06-27T16:06:31Z", "hours": 2.08, "text": "Add full starlark request like fetch. also batch sync"}, {"post_id": 15157, "ts": "2026-06-24T16:58:19Z", "hours": 1.6972, "text": "Still didn’t know why it will be blockout when using async… So I make JS only can run sync and add fetchbatch to let mulitple fetch able to happen"}, {"post_id": 14473, "ts": "2026-06-23T16:35:53Z", "hours": 2.2233, "text": "Just add more function to fetch and response. and force js function return obj as response source. and maybe I will give up on settimeout (though I didn’t try.) maybe after finish main function. also I will make js function first. still didn’t know how to let starlark have async ability. Seems like js code didn’t work properly… fix it nextday!"}, {"post_id": 13223, "ts": "2026-06-21T17:34:56Z", "hours": 2.9219, "text": "change quickjs lib from modernc.org/quickjs to github.com/fastschema/qjs for better control add async sleep and simple fetch function for js (work as builtin function) add a simple http related file to do any http related things Next might be add fetch in starlark and try to make it have async and maybe make a settimeout? also needed to extend fetch function (currently only have basic function)"}, {"post_id": 12535, "ts": "2026-06-20T14:08:01Z", "hours": 3.4681, "text": "Complete sandbox Exec(both js and starlark) (currently scan dir and execut file inside) Implement sleep and print / console.log (warp as fmt.Printf) Plan to add http server and request related thing later"}]...
|
Title: Rune - server-less function runner by @Pika Title: Rune - server-less function runner by @Pikacnu | Stardance
Devlogs:
Complete sandbox Exec(both js and starlark) (currently scan dir and execut file inside) Implement sleep and print / console.log (warp as fmt.Printf) Plan to add http server and request related thing later
change quickjs lib from modernc.org/quickjs to github.com/fastschema/qjs for better control add async sleep and simple fetch function for js (work as builtin function) add a simple http related file to do any http related things Next might be add fetch in starlark and try to make it have async and maybe make a settimeout? also needed to extend fetch function (currently only have basic function)
Just add more function to fetch and response. and force js function return obj as response source. and maybe I will give up on settimeout (though I didn’t try.) maybe after finish main function. also I will make js function first. still didn’t know how to let starlark have async ability. Seems like js code didn’t work properly… fix it nextday!
Still didn’t know why it will be blockout when using async… So I make JS only can run sync and add fetchbatch to let mulitple fetch able to happen
Add full starlark request like fetch. also batch sync
Write a simple router using the built-in net/http. Design a basic database schema to store binaries and function information. Create a database wrapper. (which use Transaction as main exec method) Support two languages that can compile and execute from binaries. Ensure both languages can generate responses (JavaScript returns an object, Starlark returns a dict). Build a simple HTTP server to test functions (compile / execute / save to DB). TODO: Add support for Starlark. Implement authentication. Create a frontend / admin panel. It might take some time to work on next step. Not only because it have lots things to do, also due to I am trying to create something by 3D Printing. Spending too much time on it… If I can share those model. It will be nice.
Update schema (for user and auth.) Add User and sessions. Exec now can run with starlark. (image is ai generated test code)
Add a rate limiter to API endpoints (the rate limit for each function can be modified via API). Add key-value storage (accessible only in scripts). Add environment variable storage (can be updated via API). Change user-related APIs to admin-only access. The basic functionality I think is needed has been completed. Next step: build the frontend (admin panel and documentation).
Finished the frontend (with help from AI) Bug fixing (a lot of bugs… one of them was a deadlock during environment injection) Passed requests to functions (it can now process requests) Added more information to execution details (debug info) Ahhh… The frontend is almost finished,with some examples and API documentation (all in the same docs). Built using Nuxt UI and Vue. The next devlog should be the last one before the first release. I’ll make it able to detect the hostname to handle function calls (similar to Cloudflare Workers). Screenshot is part of the website
make function execute by sub-domain (see image below) add kv store endpoint (and also dashboard) make you able to make function private (still can test) warp function kv_set/ delete/get into a object (kv.set / kv.delete / kv.get)
Write readme (helped by ai) Fix bug when parsing hostname add ci to build docker image Finally I finish it weeee
Ships:
I’m making an app that works like Cloudflare Workers, but with fewer features. My goal is to enable it to handle unlimited requests seamlessly. While it still has a long way to go compared to Cloudflare Workers—especially in areas like storage, AI utilities, npm package support, and project-based file uploads—I think it’s already good enough for basic use cases. If you’d like to test it out: Username: hackclub Password: hackclub If you want to test the domain utilities, you can check it out here: https://hello-world-rune.pazik.win/ (Note: Since I’m hosting the web server using Cloudflare Tunnels, I can’t use hello-world.rune.pazik.win directly due to missing SSL certificates. To work around this, I rewrite its Host header). One thing to keep in mind: The service has a rate limiter enabled, so you might get temporarily blocked while testing....
|
1793130594.7476804
|
1793216994.7476804
|
|
13208
|
Birb OS by @robopugo | Stardance
|
robopugo
|
1
|
22.0
|
77
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T01:24:55Z", "hours": 22.0, "multiplier": 3.55, "payout": 77, "blessing": "neutral", "text": "I made a simple OS, around birds, mainly a cool BG thingy to mess around with. Has a text editor, code editor, basic browser, clock app, add app feature, so you can add your own apps, really custom. And settings. Along with a cool selection box. Might add more at some point, but i just felt like finally shipping some stuff.", "repo": "https://github.com/no10123/Web-OS", "demo": "https://no10123.github.io/Web-OS/?login=true"}]...
|
[{"post_id": 11323, "ts": "202 [{"post_id": 11323, "ts": "2026-06-18T15:05:22Z", "hours": 4.5539, "text": "added some more features like auto Fullscreen for some apps and better CSS management."}, {"post_id": 10292, "ts": "2026-06-16T22:40:21Z", "hours": 2.5317, "text": "Spent 3h making a cool timer. Yippee :)"}, {"post_id": 9957, "ts": "2026-06-16T14:19:23Z", "hours": 3.7256, "text": "Made it so you could add custom apps, with custom names and icons, it also does have functioning minimize, Fullscreen, and close buttons. Planning on adding a clock / timer app to the default apps next."}, {"post_id": 8968, "ts": "2026-06-14T22:39:09Z", "hours": 1.0103, "text": "updated my bookmark bar"}, {"post_id": 8939, "ts": "2026-06-14T21:11:00Z", "hours": 1.5164, "text": "added a bookmark bar, and some light bug-fixses"}, {"post_id": 8115, "ts": "2026-06-13T15:29:43Z", "hours": 2.3467, "text": "made the icons look better, added calculator, and basic iframe web browser. Along with some light bug-fixes."}, {"post_id": 7614, "ts": "2026-06-12T18:45:51Z", "hours": 3.285, "text": "Added bg selector, including the ability to favroite bgs, and upload your own. Also made the text editor functional."}, {"post_id": 5834, "ts": "2026-06-09T19:30:41Z", "hours": 0.4164, "text": "added settings"}, {"post_id": 5772, "ts": "2026-06-09T17:57:32Z", "hours": 1.7817, "text": "added a welcome msg"}, {"post_id": 5670, "ts": "2026-06-09T15:28:00Z", "hours": 0.4686, "text": "Made a login page, and moved bg over."}]...
|
Title: Birb OS by @robopugo | Stardance
Devlogs:
Title: Birb OS by @robopugo | Stardance
Devlogs:
Made a login page, and moved bg over.
added a welcome msg
added settings
Added bg selector, including the ability to favroite bgs, and upload your own. Also made the text editor functional.
made the icons look better, added calculator, and basic iframe web browser. Along with some light bug-fixes.
added a bookmark bar, and some light bug-fixses
updated my bookmark bar
Made it so you could add custom apps, with custom names and icons, it also does have functioning minimize, Fullscreen, and close buttons. Planning on adding a clock / timer app to the default apps next.
Spent 3h making a cool timer. Yippee :)
added some more features like auto Fullscreen for some apps and better CSS management.
Ships:
I made a simple OS, around birds, mainly a cool BG thingy to mess around with. Has a text editor, code editor, basic browser, clock app, add app feature, so you can add your own apps, really custom. And settings. Along with a cool selection box. Might add more at some point, but i just felt like finally shipping some stuff....
|
1793271241.6981435
|
1793357641.6981435
|
|
13246
|
RunPath by @catlover125r | Stardance
|
catlover125r
|
1
|
8.19
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-29T19:33:59Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A native iOS app that turns GPX activity files into cinematic 3D flyover videos. What it does Import a GPX file from COROS, Garmin, Strava, or any app that exports GPX. RunPath animates a 3D MapKit camera flying along your route and exports it as a polished MP4 video ready to share. Features Keyframe timeline editor: Seven animatable tracks, each with independent keyframes and smooth cubic interpolation between them: Speed 0.1× – 1.9× 1.0 is center of slider Smoothness 0 – 100% Camera Altitude 100 – 25 000 m Camera Tilt 0 – 85° Line Thickness 1 – 24 pt Line Color Stats overlay: Optional run stats burnt into the exported video. Portrait: distance (center, large) + time (left) + pace (right) above a bottom gradient. Landscape: stats stack vertically on the left side with a left-edge gradient. Export options Portrait (9:16) or Landscape (16:9) 1080p or 4K Standard or Satellite/Hybrid Flyover map style H.264, 30 fps, 8 Mbps Auto-saves to Photos library Route library — Swipe left to delete, three-dot menu to rename. Routes persist across launches.", "repo": "https://github.com/catlover125r/RunPath", "demo": "https://testflight.apple.com/join/KYzJZNKy"}]...
|
[{"post_id": 27490, "ts": "202 [{"post_id": 27490, "ts": "2026-07-13T02:58:59Z", "hours": 6.1892, "text": "YAY! I finally figured out how I can make the exporting take less time and I also posted my first ever IOS app on app store connect so I can get credit for It."}, {"post_id": 5029, "ts": "2026-06-08T18:03:15Z", "hours": 1.5378, "text": "This is the current state of the exported product from the app. I might work on the line not going behind the buildings next"}]...
|
Title: RunPath by @catlover125r | Stardance
Devlo Title: RunPath by @catlover125r | Stardance
Devlogs:
This is the current state of the exported product from the app. I might work on the line not going behind the buildings next
YAY! I finally figured out how I can make the exporting take less time and I also posted my first ever IOS app on app store connect so I can get credit for It.
Ships:
A native iOS app that turns GPX activity files into cinematic 3D flyover videos. What it does Import a GPX file from COROS, Garmin, Strava, or any app that exports GPX. RunPath animates a 3D MapKit camera flying along your route and exports it as a polished MP4 video ready to share. Features Keyframe timeline editor: Seven animatable tracks, each with independent keyframes and smooth cubic interpolation between them: Speed 0.1× – 1.9× 1.0 is center of slider Smoothness 0 – 100% Camera Altitude 100 – 25 000 m Camera Tilt 0 – 85° Line Thickness 1 – 24 pt Line Color Stats overlay: Optional run stats burnt into the exported video. Portrait: distance (center, large) + time (left) + pace (right) above a bottom gradient. Landscape: stats stack vertically on the left side with a left-edge gradient. Export options Portrait (9:16) or Landscape (16:9) 1080p or 4K Standard or Satellite/Hybrid Flyover map style H.264, 30 fps, 8 Mbps Auto-saves to Photos library Route library — Swipe left to delete, three-dot menu to rename. Routes persist across launches....
|
1793252865.9851556
|
1793339265.9851556
|
|
13263
|
FindingHerOS by @OrangeJuice | Stardance
|
OrangeJuice
|
1
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T01:45:31Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "FindingHerOS First Version of a detective game where you have to find Stacy This version doesn’t has the mystery aspect yet, but it does include the following: A diary app with an entry from Stacy A fully functional calculator app A paint app A fully pink color scheme with gingham background Go test it out!!", "repo": "https://github.com/Orangejuiceonntop/FindingHerOS", "demo": "https://orangejuiceonntop.github.io/FindingHerOS/"}]...
|
[{"post_id": 21870, "ts": "202 [{"post_id": 21870, "ts": "2026-07-04T01:17:05Z", "hours": 4.6714, "text": "FindingHerOS - Last devlog until ship “Find her” - Mystery detective game made for the WebOS mission Background info Hiiiiiii. Just as the title says, this is the last devlog (before I ship). After I ship it and move on to WebOS 2, the true mystery elements will be implemented :D! What’s New (Features) Diary app overhaul! - The diary app now actually has content in it - Currently only has 1 entry in it (more will be added in the future though!) Calculator app - a cute, pink calculator for any of your math endeavors Paint app - Small paint app. Complete with a color picker, brush size, clear canvas button, and fill canvas button What’s new (Visuals) Changed the window borders from black to a light brown/gray Fixed window sizes What’s next Update the Readme and ship! After ship Fight with js to create a system where I can easily add new entries into the diary Create a gallery app (and draw images for it) Until next time!!"}, {"post_id": 20331, "ts": "2026-07-01T22:08:55Z", "hours": 4.54, "text": "FindingHerOS “Find her” - Mystery detective game made for the WebOS mission Background info Hiii, it’s been a while. So I took a break from this project cause I didn’t really enjoy working on it. I ended up making a whole different project, (“Productive”, go check it out!) just to distance myself from this project. Anyways, I finally decided to finish this project 😛. New look! New background - It’ll probably change in the future, but I’m happy with it for right now (tho I’ll need to make it darker cause it’s too bright) New color scheme - Pink, and pink, and pink, and a dash of red New features + other new additions New app! - Stacy’s diary/notes - It’ll be finished by the next devlog! Organized my code/added comments + notes Appreciation section Soooo, the reason I stopped working on this project was because I could get the windows to come to the top when clicked. I didn’t really understand what the guide was explained so I was just stuck. A few days ago I stumbled upon @Mokila ‘s WebOS (which is super cool it’s called “EpochOS” if you wanna check it out!). I checked out their code and decided to try out their z-index code to see if it would work for me, and it did!!! Thank you Mokila for your awesome project, you’re goated. You’re literally the reason why I feel motivated to continue working on this project!!!! What’s next I want to ship this project so I can move onto WebOS 2 and begin writing and working on the actual mystery aspect. I’m going to make 2 apps and make some aesthetic/visual changes before shipping Calculator app Paint app Finish making the diary/notes app I’m so happy to be returning to this project"}, {"post_id": 7670, "ts": "2026-06-12T20:21:11Z", "hours": 3.68, "text": "FindingHerOS 1 . This devlog is moreso to document the before of the website before I add the wallpaper and include right colors scheme. My first app is going to be a notes app/diary app that includes all of Stacy’s thoughts/feelings and hints on how to complete the mystery. . What I’ve done so far: -Added a top bar with working timer -Added instructions pages (will be longer in the future) . Coding this has been a struggle, but I’m enjoying the process so far. Anyways, have a good day!"}, {"post_id": 6626, "ts": "2026-06-11T03:32:03Z", "hours": 1.4967, "text": "FindingHerOS 1 After a lot of struggling, I managed to make the instruction window draggable. After I make one or two apps, I’m going to focus on the aesthetics of the WebOs."}, {"post_id": 6515, "ts": "2026-06-10T23:13:02Z", "hours": 1.4069, "text": "Finding HerOS 1 FindingHerOS is about you, the player, going through your old classmate’s, Stacy’s, computer to uncover the secrets behind her disappearance. Backstory: I always found these type of puzzle/mystery games interesting (ex. Sarah is Missing, Simulacra, Scrutinized). So instead of making a portfolio style WebOs, I decided to make a mystery puzzle game! The OS only has the welcome screen, background, and time bar so far. It’s taking me a while since this is my first time coding, so I’m taking it step-by-step. Future apps/mechanics: A notes app- Full of Stacy’s ideas, feelings, etc. A working gmail app A social media app- similar to Insta A video app with (hopefully) working videos A files app And more!"}]...
|
Title: FindingHerOS by @OrangeJuice | Stardance
D Title: FindingHerOS by @OrangeJuice | Stardance
Devlogs:
Finding HerOS 1 FindingHerOS is about you, the player, going through your old classmate’s, Stacy’s, computer to uncover the secrets behind her disappearance. Backstory: I always found these type of puzzle/mystery games interesting (ex. Sarah is Missing, Simulacra, Scrutinized). So instead of making a portfolio style WebOs, I decided to make a mystery puzzle game! The OS only has the welcome screen, background, and time bar so far. It’s taking me a while since this is my first time coding, so I’m taking it step-by-step. Future apps/mechanics: A notes app- Full of Stacy’s ideas, feelings, etc. A working gmail app A social media app- similar to Insta A video app with (hopefully) working videos A files app And more!
FindingHerOS 1 After a lot of struggling, I managed to make the instruction window draggable. After I make one or two apps, I’m going to focus on the aesthetics of the WebOs.
FindingHerOS 1 . This devlog is moreso to document the before of the website before I add the wallpaper and include right colors scheme. My first app is going to be a notes app/diary app that includes all of Stacy’s thoughts/feelings and hints on how to complete the mystery. . What I’ve done so far: -Added a top bar with working timer -Added instructions pages (will be longer in the future) . Coding this has been a struggle, but I’m enjoying the process so far. Anyways, have a good day!
FindingHerOS “Find her” - Mystery detective game made for the WebOS mission Background info Hiii, it’s been a while. So I took a break from this project cause I didn’t really enjoy working on it. I ended up making a whole different project, (“Productive”, go check it out!) just to distance myself from this project. Anyways, I finally decided to finish this project 😛. New look! New background - It’ll probably change in the future, but I’m happy with it for right now (tho I’ll need to make it darker cause it’s too bright) New color scheme - Pink, and pink, and pink, and a dash of red New features + other new additions New app! - Stacy’s diary/notes - It’ll be finished by the next devlog! Organized my code/added comments + notes Appreciation section Soooo, the reason I stopped working on this project was because I could get the windows to come to the top when clicked. I didn’t really understand what the guide was explained so I was just stuck. A few days ago I stumbled upon @Mokila ‘s WebOS (which is super cool it’s called “EpochOS” if you wanna check it out!). I checked out their code and decided to try out their z-index code to see if it would work for me, and it did!!! Thank you Mokila for your awesome project, you’re goated. You’re literally the reason why I feel motivated to continue working on this project!!!! What’s next I want to ship this project so I can move onto WebOS 2 and begin writing and working on the actual mystery aspect. I’m going to make 2 apps and make some aesthetic/visual changes before shipping Calculator app Paint app Finish making the diary/notes app I’m so happy to be returning to this project
FindingHerOS - Last devlog until ship “Find her” - Mystery detective game made for the WebOS mission Background info Hiiiiiii. Just as the title says, this is the last devlog (before I ship). After I ship it and move on to WebOS 2, the true mystery elements will be implemented :D! What’s New (Features) Diary app overhaul! - The diary app now actually has content in it - Currently only has 1 entry in it (more will be added in the future though!) Calculator app - a cute, pink calculator for any of your math endeavors Paint app - Small paint app. Complete with a color picker, brush size, clear canvas button, and fill canvas button What’s new (Visuals) Changed the window borders from black to a light brown/gray Fixed window sizes What’s next Update the Readme and ship! After ship Fight with js to create a system where I can easily add new entries into the diary Create a gallery app (and draw images for it) Until next time!!
Ships:
FindingHerOS First Version of a detective game where you have to find Stacy This version doesn’t has the mystery aspect yet, but it does include the following: A diary app with an entry from Stacy A fully functional calculator app A paint app A fully pink color scheme with gingham background Go test it out!!...
|
1793224463.9727085
|
1793310863.9727085
|
|
13264
|
Analyser by @dsita3465 | Stardance
|
dsita3465
|
1
|
1.35
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T01:49:39Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "In today’s data-rich environment, the ability to rapidly convert raw information into strategic knowledge is paramount. This custom-built Python analyzer optimizes that entire pipeline by seamlessly bridging the gap between data processing and visual intelligence. Engineered with robust backend logic, the system effortlessly ingests complex, multi-layered datasets, executing rapid sorting and filtering functions to eliminate noise and isolate critical metrics. Beyond structured organization, the analyzer features a dynamic visualization engine that automatically translates sophisticated datasets into clear, presentation-ready graphs and charts. By integrating automated data structuring with instant trend analysis into a single, fluid workflow, this platform removes the friction of manual spreadsheet management, empowering teams to uncover hidden patterns and drive precise, data-driven decisions at a glance. The challenging part was to handle a large amount of data and the proud part was that we were able to do it.", "repo": "https://github.com/DSITAGMAILCOM/Hello_all_Coder", "demo": "https://helloallcoder-bmjbtdfcm9naqn9hvxqecb.streamlit.app/"}]...
|
[{"post_id": 11763, "ts": "202 [{"post_id": 11763, "ts": "2026-06-19T04:39:04Z", "hours": 0.3539, "text": "So As there were some problems in the given app, so we have fixed it out and now its ready to make your visualisation of any dataset or the excel into charts graph and even you can now do the sorting using the commands or manually in this app and it is made From streamlit a library and a cloud service community like netlify."}, {"post_id": 9023, "ts": "2026-06-15T01:41:01Z", "hours": 0.9439, "text": "🌍 From raw numbers to big-picture strategies. Data is only as powerful as the stories it tells. This Python-powered analyzer bridges the gap—effortlessly sorting through massive datasets, uncovering hidden patterns, and translating them into dynamic visual charts. It’s not just about handling data; it’s about driving smarter decisions. 📊🚀 🚀 Empowering Insights: The Ultimate Python Data Analyzer 🐍 Built Natively in Python: Leveraging the power and flexibility of Python’s robust ecosystem to deliver a fast, reliable, and scalable data solution. 🔄 Seamless Data Sorting & Structuring: Say goodbye to chaotic spreadsheets. The analyzer effortlessly processes complex, multi-row datasets and organizes them into clean, logical structures instantly. 📊 Dynamic Visualizations & Graphing: Automatically translates dry numbers and columns into beautiful, intuitive charts and graphs, making it easy to spot trends at a glance. 💡 Bridging the Gap from Raw Data to Action: It doesn’t just manage data—it reveals the story behind it, helping you move from raw information to smart, data-driven decisions. 🎨 Clean & Presentation-Ready: Designed to output clear visuals that are perfect for reports, team meetings, or academic presentations without requiring extra formatting. ⚙️ Optimized End-to-End Workflow: Combines the power of data processing and visualization into a single, cohesive pipeline, saving time and reducing manual errors."}]...
|
Title: Analyser by @dsita3465 | Stardance
Devlogs Title: Analyser by @dsita3465 | Stardance
Devlogs:
🌍 From raw numbers to big-picture strategies. Data is only as powerful as the stories it tells. This Python-powered analyzer bridges the gap—effortlessly sorting through massive datasets, uncovering hidden patterns, and translating them into dynamic visual charts. It’s not just about handling data; it’s about driving smarter decisions. 📊🚀 🚀 Empowering Insights: The Ultimate Python Data Analyzer 🐍 Built Natively in Python: Leveraging the power and flexibility of Python’s robust ecosystem to deliver a fast, reliable, and scalable data solution. 🔄 Seamless Data Sorting & Structuring: Say goodbye to chaotic spreadsheets. The analyzer effortlessly processes complex, multi-row datasets and organizes them into clean, logical structures instantly. 📊 Dynamic Visualizations & Graphing: Automatically translates dry numbers and columns into beautiful, intuitive charts and graphs, making it easy to spot trends at a glance. 💡 Bridging the Gap from Raw Data to Action: It doesn’t just manage data—it reveals the story behind it, helping you move from raw information to smart, data-driven decisions. 🎨 Clean & Presentation-Ready: Designed to output clear visuals that are perfect for reports, team meetings, or academic presentations without requiring extra formatting. ⚙️ Optimized End-to-End Workflow: Combines the power of data processing and visualization into a single, cohesive pipeline, saving time and reducing manual errors.
So As there were some problems in the given app, so we have fixed it out and now its ready to make your visualisation of any dataset or the excel into charts graph and even you can now do the sorting using the commands or manually in this app and it is made From streamlit a library and a cloud service community like netlify.
Ships:
In today’s data-rich environment, the ability to rapidly convert raw information into strategic knowledge is paramount. This custom-built Python analyzer optimizes that entire pipeline by seamlessly bridging the gap between data processing and visual intelligence. Engineered with robust backend logic, the system effortlessly ingests complex, multi-layered datasets, executing rapid sorting and filtering functions to eliminate noise and isolate critical metrics. Beyond structured organization, the analyzer features a dynamic visualization engine that automatically translates sophisticated datasets into clear, presentation-ready graphs and charts. By integrating automated data structuring with instant trend analysis into a single, fluid workflow, this platform removes the friction of manual spreadsheet management, empowering teams to uncover hidden patterns and drive precise, data-driven decisions at a glance. The challenging part was to handle a large amount of data and the proud part was that we were able to do it....
|
1793260147.4673965
|
1793346547.4673965
|
|
13266
|
WebOS by @lilly | Stardance
|
lilly
|
1
|
23.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-30T05:00:04Z", "hours": 23.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I make a working WebOS based of of the guide given to us. I had lots of fun branching out from the points that were given to us and experimenting with what html, js and css could do. The most challenging part was figuring out how to make my notes app add and remove notes, figuring out how to get my timer working and of course lots of bugs. If you try out my WebOS i hope you make sure to check out the notes app and app and remove notes. Or if you wanna look at my stopwatch see what happens when you reach an hour!", "repo": "https://github.com/laelHI/WebOS", "demo": "https://laelhi.github.io/WebOS/"}]...
|
[{"post_id": 18988, "ts": "202 [{"post_id": 18988, "ts": "2026-06-30T04:54:58Z", "hours": 10.4978, "text": "I finally finished all three of my apps! I decided to do the notes app an internet app with buttons and a timer. I think the timer and the notes apps took the longest but they were both fun to make so 😋 This is the last devlog before shipping as well so byee"}, {"post_id": 15997, "ts": "2026-06-25T23:45:07Z", "hours": 10.0297, "text": "Hello again :) So, in the second Devlog, I made some more changes…I probably spent way too much time doing this, but I’m really happy with how it’s turning out! When I started the next part of the project, for some reason, after I split up the CSS and JavaScript files, it wouldn’t let me drag the windows around. After spending forever trying to fix it, I finally resorted to asking Copilot 🥲. They said that I was supposed to be using GitHub Pages instead of the extension I found online to view HTML files. So yeah, that was an experience (very long one) but I was finally satisfied because I could move my windows around again! After that, I started making the notes app and kind of got sidetracked from the tutorial 🫠, but it was fun being creative and stuff. I’m not sure if this happens to icons in general when you hover over them, but I made it so when you hover over the apps, it shows a little highlight thing. The tutorial had you make the style for selected icons first, which I was doing, but then when it came to actually making it work (clickable and stuff)… I found another error 😭. At which point, I asked Copilot again for help. I’m actually not sure what I did wrong in the first place, but after moving the functions around, it worked so yay! (I think it was maybe some functions being inside other functions and not being accessible, along with straight-up not loading or something, idk.) Ok, that’s it. Bye, ig"}, {"post_id": 15171, "ts": "2026-06-24T17:24:55Z", "hours": 2.0669, "text": "Started the first part of the webOS and made the intro page. Spent a bunch of time fixing a mistake with the fonts since i forgot a colon and added an extra plus sign as one point… yeah I’m not that great at this. This isn’t the most recent photo i also started part 2 but i figured i should post a devlog."}]...
|
Title: WebOS by @lilly | Stardance
Devlogs:
Start Title: WebOS by @lilly | Stardance
Devlogs:
Started the first part of the webOS and made the intro page. Spent a bunch of time fixing a mistake with the fonts since i forgot a colon and added an extra plus sign as one point… yeah I’m not that great at this. This isn’t the most recent photo i also started part 2 but i figured i should post a devlog.
Hello again :) So, in the second Devlog, I made some more changes…I probably spent way too much time doing this, but I’m really happy with how it’s turning out! When I started the next part of the project, for some reason, after I split up the CSS and JavaScript files, it wouldn’t let me drag the windows around. After spending forever trying to fix it, I finally resorted to asking Copilot 🥲. They said that I was supposed to be using GitHub Pages instead of the extension I found online to view HTML files. So yeah, that was an experience (very long one) but I was finally satisfied because I could move my windows around again! After that, I started making the notes app and kind of got sidetracked from the tutorial 🫠, but it was fun being creative and stuff. I’m not sure if this happens to icons in general when you hover over them, but I made it so when you hover over the apps, it shows a little highlight thing. The tutorial had you make the style for selected icons first, which I was doing, but then when it came to actually making it work (clickable and stuff)… I found another error 😭. At which point, I asked Copilot again for help. I’m actually not sure what I did wrong in the first place, but after moving the functions around, it worked so yay! (I think it was maybe some functions being inside other functions and not being accessible, along with straight-up not loading or something, idk.) Ok, that’s it. Bye, ig
I finally finished all three of my apps! I decided to do the notes app an internet app with buttons and a timer. I think the timer and the notes apps took the longest but they were both fun to make so 😋 This is the last devlog before shipping as well so byee
Ships:
I make a working WebOS based of of the guide given to us. I had lots of fun branching out from the points that were given to us and experimenting with what html, js and css could do. The most challenging part was figuring out how to make my notes app add and remove notes, figuring out how to get my timer working and of course lots of bugs. If you try out my WebOS i hope you make sure to check out the notes app and app and remove notes. Or if you wanna look at my stopwatch see what happens when you reach an hour!...
|
1793249663.9866796
|
1793336063.9866796
|
|
13276
|
Creating Library for Family Photos by @catlover125 Creating Library for Family Photos by @catlover125r | Stardance...
|
catlover125r
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-27T21:26:18Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Scripts for organizing family photo collections into a clean, date-based directory structure. Scripts create_photo_dirs.sh Creates a Year/Month folder tree for a given date range. ./create_photo_dirs.sh [root_dir] [start_year] [end_year] Example: create folders from 2005 to 2024 under ~/Photos ./create_photo_dirs.sh ~/Photos 2005 2024 Output structure: ~/Photos/ 2005/ 01_January/ 02_February/ … 2006/ … rename_photos.py Renames photos in a folder to a consistent YYYY-MM-DD_HHMMSS_originalname.ext format. Uses EXIF DateTimeOriginal when available, falls back to file modification time. Preview changes without renaming python rename_photos.py ~/Photos/unsorted –dry-run Rename for real python rename_photos.py ~/Photos/unsorted sort_photos_into_dirs.py Moves (or copies) photos from a flat folder into a Year/Month directory tree automatically. Preview python sort_photos_into_dirs.py ~/Downloads/OldPhotos ~/Photos –dry-run Move files python sort_photos_into_dirs.py ~/Downloads/OldPhotos ~/Photos Copy instead of move python sort_photos_into_dirs.py ~/Downloads/OldPhotos ~/Photos –copy Requirements pip install Pillow Pillow is used to read EXIF data for accurate photo dates. If not installed, all scripts fall back to file modification time. Typical Workflow Run create_photo_dirs.sh to build the folder structure. Run rename_photos.py on your unsorted folder to standardize filenames. Run sort_photos_into_dirs.py to move everything into the right Year/Month folder.", "repo": "https://github.com/catlover125r/SortFamPhoto", "demo": "https://github.com/catlover125r/SortFamPhoto/releases/tag/v0.1.0"}]...
|
[{"post_id": 5039, "ts": "2026 [{"post_id": 5039, "ts": "2026-06-08T18:18:15Z", "hours": 1.2033, "text": "I successfully organized over 250 gb of family photos!"}]...
|
Title: Creating Library for Family Photos by @catl Title: Creating Library for Family Photos by @catlover125r | Stardance
Devlogs:
I successfully organized over 250 gb of family photos!
Ships:
Scripts for organizing family photo collections into a clean, date-based directory structure. Scripts create_photo_dirs.sh Creates a Year/Month folder tree for a given date range. ./create_photo_dirs.sh [root_dir] [start_year] [end_year] Example: create folders from 2005 to 2024 under ~/Photos ./create_photo_dirs.sh ~/Photos 2005 2024 Output structure: ~/Photos/ 2005/ 01_January/ 02_February/ … 2006/ … rename_photos.py Renames photos in a folder to a consistent YYYY-MM-DD_HHMMSS_originalname.ext format. Uses EXIF DateTimeOriginal when available, falls back to file modification time. Preview changes without renaming python rename_photos.py ~/Photos/unsorted –dry-run Rename for real python rename_photos.py ~/Photos/unsorted sort_photos_into_dirs.py Moves (or copies) photos from a flat folder into a Year/Month directory tree automatically. Preview python sort_photos_into_dirs.py ~/Downloads/OldPhotos ~/Photos –dry-run Move files python sort_photos_into_dirs.py ~/Downloads/OldPhotos ~/Photos Copy instead of move python sort_photos_into_dirs.py ~/Downloads/OldPhotos ~/Photos –copy Requirements pip install Pillow Pillow is used to read EXIF data for accurate photo dates. If not installed, all scripts fall back to file modification time. Typical Workflow Run create_photo_dirs.sh to build the folder structure. Run rename_photos.py on your unsorted folder to standardize filenames. Run sort_photos_into_dirs.py to move everything into the right Year/Month folder....
|
1793220860.5450819
|
1793307260.5450819
|
|
13294
|
SteganoHide by @iva33 | Stardance
|
iva33
|
1
|
8.0
|
123
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T21:12:50Z", "hours": 8.0, "multiplier": 15.92, "payout": 123, "blessing": "neutral", "text": "I built SteganoHide, a CLI tool that hides secret text messages inside PNG images using LSB steganography. The image looks completely normal to the human eye, but the hidden data is stored in the Red channel of each pixel. The most challenging part was the decoder, it has to follow the exact same pixel path as the encoder, and getting the stop signal logic right took a few tries. I’m proud that it’s fully installable via pip install steganohide and works in under a minute. To test it: install it, grab any PNG image, run the tool, hide a message, then decode it back. Windows users may need to run the full .exe path from the Scripts folder if the command isn’t recognized.", "repo": "https://github.com/ivadebandit/steganography-tool", "demo": "https://pypi.org/project/steganohide/"}]...
|
[{"post_id": 8310, "ts": "2026 [{"post_id": 8310, "ts": "2026-06-13T20:27:48Z", "hours": 1.9347, "text": "Shipping day! Spent the last couple of days on everything around the code, which turned out to be way more work than I expected. Setting up git properly, fixing merge conflicts, getting PyPI to accept the upload, writing a .gitignore, creating a release tag. None of this is hard individually but it’s a lot of steps and each one has its own way of going wrong. Also fixed two real bugs I hadn’t noticed: the tool would crash on non-ASCII characters like emoji, and nothing stopped you from saving the output as a .jpg (which would silently destroy the hidden data since JPEG is lossy). Both are one-liners to fix but they matter. The project is now on PyPI at pip install steganohide, fully open source, with a proper README and release. It actually works and anyone can try it."}, {"post_id": 7477, "ts": "2026-06-12T14:01:46Z", "hours": 2.0308, "text": "Devlog 3 — the decoder! This one took more thinking than I expected. The decoder has to follow the exact same path as the encoder: same starting corner, same row-by-row order, otherwise it reads the wrong pixels and gets messy. The trickiest part was the stop signal logic. The decoder reads Red values one by one and asks “is this a 0?” at every pixel. If yes, stop and convert everything collected so far back to text. If no, keep going. Sounds simple but getting the edge cases right (what if the image has no message at all? what if it hits the end without finding a stop?) took a few tries. When I finally ran encode → decode end to end and saw my message come back perfectly that was a relief."}, {"post_id": 7126, "ts": "2026-06-11T22:08:58Z", "hours": 2.5472, "text": "Devlog 2! Ran into my first real problem today, the SimpleImage library I started with wasn’t giving me direct pixel access the way I needed. Switched to Pillow and it made things a lot easier. getpixel() and putpixel() are what I needed. Writing the encoder felt satisfying. You loop through every pixel, overwrite the Red channel with your character’s ASCII value, move to the next pixel, repeat. It sounds almost too simple but it works and the encoded image looks identical to the original. Added a safety check too: if your message is longer than the image has pixels, it’ll tell you instead of crashing silently."}, {"post_id": 5075, "ts": "2026-06-08T19:16:52Z", "hours": 1.3611, "text": "First devlog! I’ve been wanting to build something that feels like actual secret agent stuff, and steganography caught my eye, hiding messages inside images that look completely normal. Nobody would ever know. Getting started was harder than I expected. I didn’t know how pixel data actually worked at first, I just knew images were made of pixels. Turns out every pixel has three numbers (R, G, B) and ASCII characters are also just numbers, so you can literally swap one for the other. That clicked for me and I got excited. Built the two core helper functions today: message_to_numbers which converts text to ASCII values, and numbers_to_message which does the reverse. The stop signal (0) idea came from wondering “how does the decoder know when to stop?” you need a flag at the end, like a period at the end of a sentence."}]...
|
Title: SteganoHide by @iva33 | Stardance
Devlogs: Title: SteganoHide by @iva33 | Stardance
Devlogs:
First devlog! I’ve been wanting to build something that feels like actual secret agent stuff, and steganography caught my eye, hiding messages inside images that look completely normal. Nobody would ever know. Getting started was harder than I expected. I didn’t know how pixel data actually worked at first, I just knew images were made of pixels. Turns out every pixel has three numbers (R, G, B) and ASCII characters are also just numbers, so you can literally swap one for the other. That clicked for me and I got excited. Built the two core helper functions today: message_to_numbers which converts text to ASCII values, and numbers_to_message which does the reverse. The stop signal (0) idea came from wondering “how does the decoder know when to stop?” you need a flag at the end, like a period at the end of a sentence.
Devlog 2! Ran into my first real problem today, the SimpleImage library I started with wasn’t giving me direct pixel access the way I needed. Switched to Pillow and it made things a lot easier. getpixel() and putpixel() are what I needed. Writing the encoder felt satisfying. You loop through every pixel, overwrite the Red channel with your character’s ASCII value, move to the next pixel, repeat. It sounds almost too simple but it works and the encoded image looks identical to the original. Added a safety check too: if your message is longer than the image has pixels, it’ll tell you instead of crashing silently.
Devlog 3 — the decoder! This one took more thinking than I expected. The decoder has to follow the exact same path as the encoder: same starting corner, same row-by-row order, otherwise it reads the wrong pixels and gets messy. The trickiest part was the stop signal logic. The decoder reads Red values one by one and asks “is this a 0?” at every pixel. If yes, stop and convert everything collected so far back to text. If no, keep going. Sounds simple but getting the edge cases right (what if the image has no message at all? what if it hits the end without finding a stop?) took a few tries. When I finally ran encode → decode end to end and saw my message come back perfectly that was a relief.
Shipping day! Spent the last couple of days on everything around the code, which turned out to be way more work than I expected. Setting up git properly, fixing merge conflicts, getting PyPI to accept the upload, writing a .gitignore, creating a release tag. None of this is hard individually but it’s a lot of steps and each one has its own way of going wrong. Also fixed two real bugs I hadn’t noticed: the tool would crash on non-ASCII characters like emoji, and nothing stopped you from saving the output as a .jpg (which would silently destroy the hidden data since JPEG is lossy). Both are one-liners to fix but they matter. The project is now on PyPI at pip install steganohide, fully open source, with a proper README and release. It actually works and anyone can try it.
Ships:
I built SteganoHide, a CLI tool that hides secret text messages inside PNG images using LSB steganography. The image looks completely normal to the human eye, but the hidden data is stored in the Red channel of each pixel. The most challenging part was the decoder, it has to follow the exact same pixel path as the encoder, and getting the stop signal logic right took a few tries. I’m proud that it’s fully installable via pip install steganohide and works in under a minute. To test it: install it, grab any PNG image, run the tool, hide a message, then decode it back. Windows users may need to run the full .exe path from the Scripts folder if the command isn’t recognized....
|
1793130568.8744326
|
1793216968.8744326
|
|
13300
|
My very own WebOS by @BIG_JO | Stardance
|
BIG_JO
|
1
|
13.23
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T15:36:54Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a website on my own and it was actually not that hard its not the 1st time i make them but most of the time it was AI that did the most but it i also lean while using AI so i was kinda used to the Css codes and Html BUT Java will forever be the most challenging this to be honest so i did take more time on java and allow my dragable elemnets to be dragable in the 1st pace so yeah am proud that its functional and made 100% by me its not too much but am Still very proud :) IDK how to make screen record of my project so i wasnt able to film it in action but u can try it with the demo url or see how i made it in my repo", "repo": "https://github.com/joseph777-e/WebOS-2", "demo": "https://webos2-two.vercel.app/"}]...
|
[{"post_id": 76621, "ts": "202 [{"post_id": 76621, "ts": "2026-10-04T06:14:22Z", "hours": 0.5678, "text": "am finally done with this project ,just checked for bugs and tested it and might say it all look good and ready for shippin"}, {"post_id": 67949, "ts": "2026-09-14T08:37:52Z", "hours": 0.7417, "text": "today i added some icon pictues for the apps i also made the different app files i had made be interconnected with the main html file and made them into widget style am left with making the draggable and also the remove button “x” doesnt seem to work ill be on that soon too"}, {"post_id": 67506, "ts": "2026-09-13T17:04:29Z", "hours": 0.9708, "text": "kk so i done added up a new feature here. its a files app so u can see the picture of the os but for now it just shows the pictures and documents already in the file but i will cange that later and make it a wodget also its hard tho when making it like see the files and store it in the local storage cause i actually use netify so like idk how i will manage it. i might use some c(laude) :/"}, {"post_id": 53853, "ts": "2026-08-24T15:34:21Z", "hours": 1.1647, "text": "so updates are i changed the calender and now it doesnt only show the month and the year but also the dates and looks more like a calnder most of the work was done in java script and it was actually not that hard to make just a few lines and what took the most time was to chang the colors i changed the green with purple and pink as u can see its compeltely different from bfore and kinda look much more better another thing i did was to remove the numbers drew inside the clock and yeah now all u see is the actuall time i made in java i thnk i will try to arrange the time position inside later… yeah thats all for today ."}, {"post_id": 53068, "ts": "2026-08-23T14:01:02Z", "hours": 1.1092, "text": "so today i was able to change alot of stuff i made the clock widget but i used an image that alr had time written in it wich is why it look like that and another thing i did was to make the calender and yeah that was not that hard the hard part might be to make the apps which i still didnt do yet and am almost startng school 😭 idk if will have time to do all this ."}, {"post_id": 50483, "ts": "2026-08-19T17:23:27Z", "hours": 0.8169, "text": "si i was working on the script today didnt do much change cause i also spent more time in trying to arrange he project and i added some cute effect on the project when u open buttons in the css file u see down here"}, {"post_id": 41985, "ts": "2026-08-06T15:03:03Z", "hours": 1.5875, "text": "kk so like i decided to redo everything….i just checked what others did and what i did is just so bad am even ashamed it looks nothing like an operating system so am definetly redoing it. this is what it looks so far. I hope things will go well and ill be able to finish this by the end of august. no fetures work for now its all either stickers or just buttons that do nothing am just trying to structure it"}, {"post_id": 40214, "ts": "2026-08-03T16:54:42Z", "hours": 2.2694, "text": "so i didnt change anything yet i just was experimenting for some time and i didnt want to waste it ill soon bring new features to thiswebsite and make it look more geourgiuos…idk how to spell it. anyways i saw how some people actually made some crazy work for their OS website and i want to do also something decent so yeah."}, {"post_id": 6957, "ts": "2026-06-11T17:48:10Z", "hours": 2.3408, "text": "i added a draggable icon on the websie can open and close it but so far does nothing ..java sucks"}, {"post_id": 5542, "ts": "2026-06-09T10:58:27Z", "hours": 0.6886, "text": "I added new features like time using java script and was able to use new elemnts to make cool small boxes down as u can see there down…i used elemts like display flex and border size to space them and give them round edges"}, {"post_id": 5483, "ts": "2026-06-09T09:06:40Z", "hours": 1.22, "text": "am doing a website made by myself no ai just for challenge"}]...
|
Title: My very own WebOS by @BIG_JO | Stardance
D Title: My very own WebOS by @BIG_JO | Stardance
Devlogs:
am doing a website made by myself no ai just for challenge
I added new features like time using java script and was able to use new elemnts to make cool small boxes down as u can see there down…i used elemts like display flex and border size to space them and give them round edges
i added a draggable icon on the websie can open and close it but so far does nothing ..java sucks
so i didnt change anything yet i just was experimenting for some time and i didnt want to waste it ill soon bring new features to thiswebsite and make it look more geourgiuos…idk how to spell it. anyways i saw how some people actually made some crazy work for their OS website and i want to do also something decent so yeah.
kk so like i decided to redo everything….i just checked what others did and what i did is just so bad am even ashamed it looks nothing like an operating system so am definetly redoing it. this is what it looks so far. I hope things will go well and ill be able to finish this by the end of august. no fetures work for now its all either stickers or just buttons that do nothing am just trying to structure it
si i was working on the script today didnt do much change cause i also spent more time in trying to arrange he project and i added some cute effect on the project when u open buttons in the css file u see down here
so today i was able to change alot of stuff i made the clock widget but i used an image that alr had time written in it wich is why it look like that and another thing i did was to make the calender and yeah that was not that hard the hard part might be to make the apps which i still didnt do yet and am almost startng school 😭 idk if will have time to do all this .
so updates are i changed the calender and now it doesnt only show the month and the year but also the dates and looks more like a calnder most of the work was done in java script and it was actually not that hard to make just a few lines and what took the most time was to chang the colors i changed the green with purple and pink as u can see its compeltely different from bfore and kinda look much more better another thing i did was to remove the numbers drew inside the clock and yeah now all u see is the actuall time i made in java i thnk i will try to arrange the time position inside later… yeah thats all for today .
kk so i done added up a new feature here. its a files app so u can see the picture of the os but for now it just shows the pictures and documents already in the file but i will cange that later and make it a wodget also its hard tho when making it like see the files and store it in the local storage cause i actually use netify so like idk how i will manage it. i might use some c(laude) :/
today i added some icon pictues for the apps i also made the different app files i had made be interconnected with the main html file and made them into widget style am left with making the draggable and also the remove button “x” doesnt seem to work ill be on that soon too
am finally done with this project ,just checked for bugs and tested it and might say it all look good and ready for shippin
Ships:
I made a website on my own and it was actually not that hard its not the 1st time i make them but most of the time it was AI that did the most but it i also lean while using AI so i was kinda used to the Css codes and Html BUT Java will forever be the most challenging this to be honest so i did take more time on java and allow my dragable elemnets to be dragable in the 1st pace so yeah am proud that its functional and made 100% by me its not too much but am Still very proud :) IDK how to make screen record of my project so i wasnt able to film it in action but u can try it with the demo url or see how i made it in my repo...
|
1793260381.799742
|
1793346781.799742
|
|
13305
|
mypochats by @barfpile | Stardance
|
barfpile
|
1
|
13.05
|
15
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T19:26:46Z", "hours": 12.0, "multiplier": 1.24, "payout": 15, "blessing": "neutral", "text": "It was difficult staying in the constraints of an ESP32, but now I’m super happy because it works pretty well!", "repo": "https://github.com/fries-git/mpyochats", "demo": "https://fries.hackclub.app/client"}]...
|
[{"post_id": 20899, "ts": "202 [{"post_id": 20899, "ts": "2026-07-02T16:56:57Z", "hours": 1.0469, "text": "Wrapping up here adding message editing, worked on polls but I don’t think I’m going to implement them. Once this is done I may basically be done with this project. :O"}, {"post_id": 20190, "ts": "2026-07-01T18:57:44Z", "hours": 1.11, "text": "Capabilities, Slash Commands, and Polls - Capabilities are sent from server to client and vice versa to determine what the client can and can’t do. Examples include: creating polls, uploading emojis, creating threads, server-side embeds, etc. Slash commands are like Discord’s in which predefined commands are created and displayer in a gui, and called with /command name. They’re not fully implemented yet but will allow banning, kicking, timing out, and anything else you define. Polls are… Well they’re polls. Not yet implemented fully, as they aren’t even on the main server, polls let you create infinite options, set how long the poll exists for, and vote on it in real time."}, {"post_id": 18742, "ts": "2026-06-29T22:35:58Z", "hours": 0.5894, "text": "Emojis and more. This project is now, with all emojis but no message history, 50 KB while maintaining near full feature completeness to the original. (note that combined the emojis make up about 20/50kb"}, {"post_id": 15192, "ts": "2026-06-24T18:10:19Z", "hours": 0.7519, "text": "Emojis are implemented!"}, {"post_id": 15104, "ts": "2026-06-24T15:24:26Z", "hours": 0.3867, "text": "Emojis. I’ve been implementing emojis."}, {"post_id": 8956, "ts": "2026-06-14T22:10:27Z", "hours": 9.4833, "text": "i finished it. i forgot devlogs… its a decentralized chat server running on an esp32"}]...
|
Title: mypochats by @barfpile | Stardance
Devlogs Title: mypochats by @barfpile | Stardance
Devlogs:
i finished it. i forgot devlogs… its a decentralized chat server running on an esp32
Emojis. I’ve been implementing emojis.
Emojis are implemented!
Emojis and more. This project is now, with all emojis but no message history, 50 KB while maintaining near full feature completeness to the original. (note that combined the emojis make up about 20/50kb
Capabilities, Slash Commands, and Polls - Capabilities are sent from server to client and vice versa to determine what the client can and can’t do. Examples include: creating polls, uploading emojis, creating threads, server-side embeds, etc. Slash commands are like Discord’s in which predefined commands are created and displayer in a gui, and called with /command name. They’re not fully implemented yet but will allow banning, kicking, timing out, and anything else you define. Polls are… Well they’re polls. Not yet implemented fully, as they aren’t even on the main server, polls let you create infinite options, set how long the poll exists for, and vote on it in real time.
Wrapping up here adding message editing, worked on polls but I don’t think I’m going to implement them. Once this is done I may basically be done with this project. :O
Ships:
It was difficult staying in the constraints of an ESP32, but now I’m super happy because it works pretty well!...
|
1793126954.4467359
|
1793213354.4467359
|
|
13307
|
My very own WebOS by @Shiladitya | Stardance
|
Shiladitya
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T05:08:40Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i build a super cute webos for me first time , i am just a beginner with coding so i took help of claude to understand how to build it and then build it . Guys please check it out .", "repo": "https://github.com/Bappaditya-kuilya/Edios", "demo": "https://edios.netlify.app/"}]...
|
[{"post_id": 7548, "ts": "2026 [{"post_id": 7548, "ts": "2026-06-12T16:39:19Z", "hours": 0.395, "text": "My first build with hacktime #EDIOS ."}]...
|
Title: My very own WebOS by @Shiladitya | Stardanc Title: My very own WebOS by @Shiladitya | Stardance
Devlogs:
My first build with hacktime #EDIOS .
Ships:
i build a super cute webos for me first time , i am just a beginner with coding so i took help of claude to understand how to build it and then build it . Guys please check it out ....
|
1793105348.3245983
|
1793191748.3245983
|
|
13312
|
Hyperion OS by @harry_ | Stardance
|
harry_
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T21:26:01Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? I created HyperionOS, a web-based desktop environment simulator built entirely from scratch using raw HTML5, CSS3, and JavaScript. It features a high-fidelity glassmorphism user interface with draggable, resizable application windows, a fully functional client-side text editor, a virtual file explorer system that processes local uploads using the HTML5 FileReader API, an automatically syncing taskbar clock module, and an integrated interface mode engine that seamlessly switches between Light Mode and a deep, high-contrast Dark Mode. What was challenging? The most significant engineering challenge was implementing the horizontal centering of the taskbar app icons while keeping the system clock anchored to the far-right edge of the screen. Initially, Flexbox alignment rules caused the clock to conflict with the icon cluster’s positioning. I resolved this by taking the clock out of the standard Flexbox layout flow using absolute positioning (position: absolute; right: 20px;), allowing the core taskbar icon array to utilize justify-content: center; without layout disruption. Another major hurdle was translating spatial desktop window positioning logic from Python concepts over to the browser DOM using mouse event tracking handlers (mousedown, mousemove, mouseup). What are you proud of? I am incredibly proud of the clean visual design and the performance optimization of the UI engine. Achieving a smooth, realistic glassmorphism effect using hardware-accelerated CSS filters (backdrop-filter: blur(16px);) combined with complex window layer management (dynamically tracking and incrementing zIndex on click) means the windows stack and drag with absolute zero lag. I am also proud of successfully pushing the repository live into a production environment via cloud deployment on Render. What should people know so they can test your project? Live Link: Access the project directly via my production deployment URL on Render. Testing Interface Modes: Open the System Settings window to switch the global style profile fluidly between Light Mode and Dark Mode. Testing Window Management: You can click and drag any window by its top header bar, click the action buttons to minimize/maximize/close them, or click corresponding taskbar icons to toggle windows open or closed. Testing File Operations: Open the File Explorer window, click “Upload File,” and upload a local text asset (.txt). Once uploaded, click its icon in the explorer window, and the custom virtual drive layer will automatically inject the contents into the Text Editor application workspace for reading.", "repo": "https://github.com/iamharry0121/Hyperion-OS", "demo": "https://hyperion-os.vercel.app/"}]...
|
[{"post_id": 7707, "ts": "2026 [{"post_id": 7707, "ts": "2026-06-12T21:23:57Z", "hours": 1.6589, "text": "Devlog #3 - Most Likely the Final Update - 6/14/2026 HyperionOS is officially finished and live on the internet! After hours of grinding through coordinates, layouts, and layout engines, I wrapped up the entire workspace tonight and pushed the code straight to production on Render. The project went from a static concept to a fully operational, beautiful desktop simulator, and I am hyped to call this a finished win. I spent tonight locking down the final system architecture and polishing the visual aesthetics: The Translucent Glass Engine: Ditched the overly complex, messy layout code and restored the premium glassmorphism theme, keeping the exact sleek rounded-corner borders and 16px dynamic background blur filters completely intact. Master Interface Mode Switcher: Scrapped the multi-color accent settings and replaced it with a streamlined Light Mode and a deep, high-contrast Dark Mode optimized to match a pure black canvas background file. The Centered Taskbar Engine: Completely overhauled the bottom navigation dock to horizontally align the app button cluster dead-center in the screen (Windows 11 / macOS style) while using absolute layout mapping to lock the dynamic system clock module perfectly to the right edge. Render Production Deployment: Connected the repository to a cloud host environment, configured the root and publish directory structures, and launched the site live to the web. This final stretch taught me a ton about writing clean, maintainable web architecture. I learned how absolute positioning can be used to take a layout element (like the clock) completely out of the standard Flexbox equation so other elements can center flawlessly, how to manage global design properties efficiently by writing master CSS variables that JavaScript can rewrite on the fly, and how hosting engines like Render track file assets directly from a root repository directory. It feels amazing to step back, ship a polished project, and get it out into the wild. Up next, I’m looking into pivoting toward on-device machine learning—specifically diving into MediaPipe and TensorFlow.js to build a 60 FPS webcam face and object tracker HUD layer. Onwards to the next build!"}, {"post_id": 7008, "ts": "2026-06-11T19:19:49Z", "hours": 2.3228, "text": "Devlog #2 - 6/11/2026 The windows are officially moving! After laying down the layout framework, I spent tonight diving straight into user interaction and window manipulation. Translating my Python logic over to JavaScript and the browser DOM was a massive mental puzzle, but the interface is finally starting to respond like a real desktop environment! I spent tonight expanding the OS capabilities and bringing the window control interface to life: Built a sleek top header bar for the app window equipped with operational minimize, maximize, and close buttons. Implemented mouse event listeners (mousedown, mousemove, and mouseup) to make the window fully draggable around the workspace canvas. Created an element tag safety check inside the dragging function to prevent the window buttons from triggering accidental window drags. Built a responsive fullscreenToggle() state manager that snaps the window to the exact dimensions of the screen while perfectly clearing the taskbar. Today was a massive learning curve for me regarding how JavaScript interacts with live styling. I learned that JavaScript can’t read values directly from an external CSS file (which is why checking layout strings directly fails), how accidentally mixing up assignment (=) and comparison (==) operators can completely stall your function, and how to use the CSS calc() function to flawlessly mix viewport units with pixel units (100vh - 47px) so the layout scales perfectly! Hopefully next time I can work on starting the multi-window feature after I finish studying for my finals tmrw, which means looking into updating my query selectors and implementing a dynamic z-index layering system so windows can stack without getting confused. Onwards!"}, {"post_id": 5899, "ts": "2026-06-09T21:29:14Z", "hours": 2.0772, "text": "Devlog #1 - 6/9/2026 My project HyperionOS is starting to take a bit more shape! My project is a web-based operating system simulation (like the name suggests). I have barely any prior experience in HTML, CSS, or JavaScript, so I am diving headfirst into this super ambitious project while learning the basics as I go! I spent tonight laying down the digital foundation of the OS and successfully connected my visual layouts with functional code: Built a black desktop canvas locked to the screen size. Designed a centered taskbar using CSS Flexbox layout engine and z-index. Created a circular, application launcher button inside the taskbar. Built a responsive application window frame that uses position: absolute so it floats over the background canvas. Today was a massive learning curve for me since I had to debug some really weird layout traps. I learned how box-sizing: border-box keeps padding from breaking element sizes, how browser loading timing affects JavaScript code execution, and how to write a functional toggleWindow() state check to squash a stubborn double-click bug on the launcher button! Hopefully next time I can work on designing a polished top header bar for the app window with control icons, and dive into mouse event listeners to make the window fully draggable around the workspace. Wish me luck!"}]...
|
Title: Hyperion OS by @harry_ | Stardance
Devlogs Title: Hyperion OS by @harry_ | Stardance
Devlogs:
Devlog #1 - 6/9/2026 My project HyperionOS is starting to take a bit more shape! My project is a web-based operating system simulation (like the name suggests). I have barely any prior experience in HTML, CSS, or JavaScript, so I am diving headfirst into this super ambitious project while learning the basics as I go! I spent tonight laying down the digital foundation of the OS and successfully connected my visual layouts with functional code: Built a black desktop canvas locked to the screen size. Designed a centered taskbar using CSS Flexbox layout engine and z-index. Created a circular, application launcher button inside the taskbar. Built a responsive application window frame that uses position: absolute so it floats over the background canvas. Today was a massive learning curve for me since I had to debug some really weird layout traps. I learned how box-sizing: border-box keeps padding from breaking element sizes, how browser loading timing affects JavaScript code execution, and how to write a functional toggleWindow() state check to squash a stubborn double-click bug on the launcher button! Hopefully next time I can work on designing a polished top header bar for the app window with control icons, and dive into mouse event listeners to make the window fully draggable around the workspace. Wish me luck!
Devlog #2 - 6/11/2026 The windows are officially moving! After laying down the layout framework, I spent tonight diving straight into user interaction and window manipulation. Translating my Python logic over to JavaScript and the browser DOM was a massive mental puzzle, but the interface is finally starting to respond like a real desktop environment! I spent tonight expanding the OS capabilities and bringing the window control interface to life: Built a sleek top header bar for the app window equipped with operational minimize, maximize, and close buttons. Implemented mouse event listeners (mousedown, mousemove, and mouseup) to make the window fully draggable around the workspace canvas. Created an element tag safety check inside the dragging function to prevent the window buttons from triggering accidental window drags. Built a responsive fullscreenToggle() state manager that snaps the window to the exact dimensions of the screen while perfectly clearing the taskbar. Today was a massive learning curve for me regarding how JavaScript interacts with live styling. I learned that JavaScript can’t read values directly from an external CSS file (which is why checking layout strings directly fails), how accidentally mixing up assignment (=) and comparison (==) operators can completely stall your function, and how to use the CSS calc() function to flawlessly mix viewport units with pixel units (100vh - 47px) so the layout scales perfectly! Hopefully next time I can work on starting the multi-window feature after I finish studying for my finals tmrw, which means looking into updating my query selectors and implementing a dynamic z-index layering system so windows can stack without getting confused. Onwards!
Devlog #3 - Most Likely the Final Update - 6/14/2026 HyperionOS is officially finished and live on the internet! After hours of grinding through coordinates, layouts, and layout engines, I wrapped up the entire workspace tonight and pushed the code straight to production on Render. The project went from a static concept to a fully operational, beautiful desktop simulator, and I am hyped to call this a finished win. I spent tonight locking down the final system architecture and polishing the visual aesthetics: The Translucent Glass Engine: Ditched the overly complex, messy layout code and restored the premium glassmorphism theme, keeping the exact sleek rounded-corner borders and 16px dynamic background blur filters completely intact. Master Interface Mode Switcher: Scrapped the multi-color accent settings and replaced it with a streamlined Light Mode and a deep, high-contrast Dark Mode optimized to match a pure black canvas background file. The Centered Taskbar Engine: Completely overhauled the bottom navigation dock to horizontally align the app button cluster dead-center in the screen (Windows 11 / macOS style) while using absolute layout mapping to lock the dynamic system clock module perfectly to the right edge. Render Production Deployment: Connected the repository to a cloud host environment, configured the root and publish directory structures, and launched the site live to the web. This final stretch taught me a ton about writing clean, maintainable web architecture. I learned how absolute positioning can be used to take a layout element (like the clock) completely out of the standard Flexbox equation so other elements can center flawlessly, how to manage global design properties efficiently by writing master CSS variables that JavaScript can rewrite on the fly, and how hosting engines like Render track file assets directly from a root repository directory. It feels amazing to step back, ship a polished project, and get it out into the wild. Up next, I’m looking into pivoting toward on-device machine learning—specifically diving into MediaPipe and TensorFlow.js to build a 60 FPS webcam face and object tracker HUD layer. Onwards to the next build!
Ships:
What did you make? I created HyperionOS, a web-based desktop environment simulator built entirely from scratch using raw HTML5, CSS3, and JavaScript. It features a high-fidelity glassmorphism user interface with draggable, resizable application windows, a fully functional client-side text editor, a virtual file explorer system that processes local uploads using the HTML5 FileReader API, an automatically syncing taskbar clock module, and an integrated interface mode engine that seamlessly switches between Light Mode and a deep, high-contrast Dark Mode. What was challenging? The most significant engineering challenge was implementing the horizontal centering of the taskbar app icons while keeping the system clock anchored to the far-right edge of the screen. Initially, Flexbox alignment rules caused the clock to conflict with the icon cluster’s positioning. I resolved this by taking the clock out of the standard Flexbox layout flow using absolute positioning (position: absolute; right: 20px;), allowing the core taskbar icon array to utilize justify-content: center; without layout disruption. Another major hurdle was translating spatial desktop window positioning logic from Python concepts over to the browser DOM using mouse event tracking handlers (mousedown, mousemove, mouseup). What are you proud of? I am incredibly proud of the clean visual design and the performance optimization of the UI engine. Achieving a smooth, realistic glassmorphism effect using hardware-accelerated CSS filters (backdrop-filter: blur(16px);) combined with complex window layer management (dynamically tracking and incrementing zIndex on click) means the windows stack and drag with absolute zero lag. I am also proud of successfully pushing the repository live into a production environment via cloud deployment on Render. What should people know so they can test your project? Live Link: Access the project directly via my production deployment URL on Render. Testing Interface Modes: Open the System Settings window to switch the global style profile fluidly between Light Mode and Dark Mode. Testing Window Management: You can click and drag any window by its top header bar, click the action buttons to minimize/maximize/close them, or click corresponding taskbar icons to toggle windows open or closed. Testing File Operations: Open the File Explorer window, click “Upload File,” and upload a local text asset (.txt). Once uploaded, click its icon in the explorer window, and the custom virtual drive layer will automatically inject the contents into the Text Editor application workspace for reading....
|
1793227704.1313288
|
1793314104.1313288
|
|
13322
|
Lumi by @Atharv | Stardance
|
Atharv
|
1
|
12.18
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-09T16:36:49Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built Lumi, Lumi is a windows first ai assistant that does things for you, its a self learning ai that teaches itself to do things and gets smarter overtime, check it out and share feedback please, would mean a lot, macos has siri but windows has nothing, until now.", "repo": "https://github.com/atharvmantri/Lumi-Assist", "demo": "https://www.lumiassist.xyz/"}]...
|
[{"post_id": 9096, "ts": "2026 [{"post_id": 9096, "ts": "2026-06-15T06:16:39Z", "hours": 1.365, "text": "Added 90+ new tools in various categories and made the models self sufficient to make more tools themselves. Upto 260 tools rn."}, {"post_id": 5856, "ts": "2026-06-09T20:05:52Z", "hours": 0.8117, "text": "Fixed the download button not working on the website, created a one line installer, turned out pretty good, happy with that 😎"}, {"post_id": 5661, "ts": "2026-06-09T15:16:45Z", "hours": 10.4936, "text": "Lumi — Complete Voice Assistant Core System Wake Word Detection — Detects “hey lumi”, “ok lumi”, “yo lumi”, “lumi” using energy-based detection + quick Whisper verification Speech-to-Text — Whisper (GPU-accelerated, large-v3) LLM Integration — Supports OpenAI, Anthropic, Google, OpenRouter, HackClub, or custom endpoints Text-to-Speech — Piper with sentence-streaming (British female voice) Desktop Overlay — 600x220 animated particles at bottom center (invisible → golden waveform → blue orb → golden swirl) System Tray — Color-coded icon + right-click menu 263 Built-in Tools — PC control, file management, web, media, system info, etc. Installers & Launchers install.bat — Full terminal installer (9 steps): Python 3.11 check/install Install directory picker Git clone Virtual environment Dependencies Voice model download API key + provider configuration Wake word training option Finalization launch.bat — Starts Lumi as tray app (no terminal window) launch_voice.bat — Starts with terminal for live output Wake Word Training System record_wake_samples.py — Records 20 positive + 10 negative samples configs/lumi.yaml — Training config for livekit-wakeword core/wake_word.py — Dual-mode detector (trained model + energy fallback) Supports “hey lumi”, “ok lumi”, “yo lumi”, “lumi” Documentation Updated README.md with wake word section Training instructions for custom model Configuration reference Troubleshooting guide What Works Now ✅ Install via install.bat ✅ Launch via launch.bat ✅ Wake word detection (energy-based + verification) ✅ All 263 tools ✅ Desktop overlay ✅ System tray ✅ Voice conversations ✅ API key configuration ✅ Provider selection (6 options) Ready for Custom Training When you install espeak-ng manually: pip install livekit-wakeword[listener,train,eval,export] python record_wake_samples.py livekit-wakeword run configs/lumi.yaml Current status: Fully functional. You can use it right now with launch.bat. The wake word detection works immediately (no training needed), and all tools are operational."}]...
|
Title: Lumi by @Atharv | Stardance
Devlogs:
Lumi Title: Lumi by @Atharv | Stardance
Devlogs:
Lumi — Complete Voice Assistant Core System Wake Word Detection — Detects “hey lumi”, “ok lumi”, “yo lumi”, “lumi” using energy-based detection + quick Whisper verification Speech-to-Text — Whisper (GPU-accelerated, large-v3) LLM Integration — Supports OpenAI, Anthropic, Google, OpenRouter, HackClub, or custom endpoints Text-to-Speech — Piper with sentence-streaming (British female voice) Desktop Overlay — 600x220 animated particles at bottom center (invisible → golden waveform → blue orb → golden swirl) System Tray — Color-coded icon + right-click menu 263 Built-in Tools — PC control, file management, web, media, system info, etc. Installers & Launchers install.bat — Full terminal installer (9 steps): Python 3.11 check/install Install directory picker Git clone Virtual environment Dependencies Voice model download API key + provider configuration Wake word training option Finalization launch.bat — Starts Lumi as tray app (no terminal window) launch_voice.bat — Starts with terminal for live output Wake Word Training System record_wake_samples.py — Records 20 positive + 10 negative samples configs/lumi.yaml — Training config for livekit-wakeword core/wake_word.py — Dual-mode detector (trained model + energy fallback) Supports “hey lumi”, “ok lumi”, “yo lumi”, “lumi” Documentation Updated README.md with wake word section Training instructions for custom model Configuration reference Troubleshooting guide What Works Now ✅ Install via install.bat ✅ Launch via launch.bat ✅ Wake word detection (energy-based + verification) ✅ All 263 tools ✅ Desktop overlay ✅ System tray ✅ Voice conversations ✅ API key configuration ✅ Provider selection (6 options) Ready for Custom Training When you install espeak-ng manually: pip install livekit-wakeword[listener,train,eval,export] python record_wake_samples.py livekit-wakeword run configs/lumi.yaml Current status: Fully functional. You can use it right now with launch.bat. The wake word detection works immediately (no training needed), and all tools are operational.
Fixed the download button not working on the website, created a one line installer, turned out pretty good, happy with that 😎
Added 90+ new tools in various categories and made the models self sufficient to make more tools themselves. Upto 260 tools rn.
Ships:
I built Lumi, Lumi is a windows first ai assistant that does things for you, its a self learning ai that teaches itself to do things and gets smarter overtime, check it out and share feedback please, would mean a lot, macos has siri but windows has nothing, until now....
|
1793112879.3996258
|
1793199279.3996258
|
|
13332
|
Relic OS by @Asad777 | Stardance
|
Asad777
|
1
|
12.0
|
75
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-27T06:17:38Z", "hours": 12.0, "multiplier": 11.35, "payout": 75, "blessing": "neutral", "text": "I have always been inspired with ricing and customizing my operating system, so now i decided to make a full customized web based operating system, i call it Relic Os, it has youtube, browser, games, some themes & wallpapers, I have put in a lot of personalized design preferences and ideas like a centralized music system, i am proud that its complete now, let me know what you think about it.", "repo": "https://github.com/asad-777/relicos", "demo": "https://relicos.vercel.app/"}]...
|
[{"post_id": 14268, "ts": "202 [{"post_id": 14268, "ts": "2026-06-23T09:45:34Z", "hours": 2.2881, "text": "It’s always a great feeling to check off the final task on a major project. After a lot of building, refining, and iterating, Relic OS is officially complete. What started as a focused development goal has finally hit the finish line. The process came with its fair share of troubleshooting and architecture puzzles, but bringing it to full completion has been incredibly rewarding. Check it out at relicos.vercel.app"}, {"post_id": 13004, "ts": "2026-06-21T08:16:27Z", "hours": 0.7528, "text": "RelicOs is now finished, documentation is only left, The Home page has all the details, the os has alot of fun features to explore, let me know if i should also add a guide app that guides the user about the whole os, like a Quick Start app that has all the controls and features"}, {"post_id": 11901, "ts": "2026-06-19T12:05:22Z", "hours": 3.3972, "text": "Hi Fellows, The wait is over, RelicOS is almost complete, only games are left, everything else is fully functional and workin, give it a try at https://relicos.vercel.app/os New Features i added: Youtube App A Internet Browser Menu’s and easter eggs Basic Ui control such as Right Click, drag and select Improved the Ui Colour Schemes, Wallpapers and Music"}, {"post_id": 10088, "ts": "2026-06-16T17:51:02Z", "hours": 5.1206, "text": "Hey everyone, Asad here! 👋 Check it out here at relicos.vercel.app/os I recently saw the Web OS idea in the Stardance missions section and it immediately clicked. I’ve always wanted to build one, so I figured there’s no better time than now. 🎨 The Vision: Stealing the Best Designs Initially, I thought about building a heavily riced, Arch Linux-style WebOS. But then I thought: if I’m building this from scratch, why limit myself? Why not just steal the best design language from every OS out there? Right now, the aesthetic is a beautiful mashup From macOS, I Snagged the classic window traffic lights and the sleek Spotlight search functionality. From Arch Linux, Implementing a clean, rice-inspired Waybar for the status panel. 🛠️ Current Progress (The MVP) The project just kicked off, so nothing is fine-tuned or heavily configured yet. It is a pure Minimum Viable Product (MVP) to get the core architecture up and running. I’ve already built out a few baseline apps to test the environment: 🎵 Music Player 🧮 Calculator 🎯 The X-Factor: Deep Game Integration Standard apps like calculators are cool, but they aren’t the specialty of RelicOS. The main feature I’m currently scheming up is direct itch.io web game integration. I want to pull custom indie web games and run them seamlessly inside the OS environment as native-feeling applications. 🌐 Once Again, check out the Live Demo! It’s early days, but you can already play around with the live environment here: 👉 relicos.vercel.app/os There is a lot left to do, code to clean up, and features to rice out. This is just the beginning of the journey. Here are some thoughts i have of what i should add next: 1- Glass Ui 2- Games 3- Retro pixel art logos and icons 4- live or ai generated wallpapers ( user can prompt ai to generate wallpaper of choice, its a feature not pre configured wallpapers generated by ai) 5- Youtube and Browser inside as apps Let me know what you think or what features I should steal next! 🚀"}]...
|
Title: Relic OS by @Asad777 | Stardance
Devlogs:
Title: Relic OS by @Asad777 | Stardance
Devlogs:
Hey everyone, Asad here! 👋 Check it out here at relicos.vercel.app/os I recently saw the Web OS idea in the Stardance missions section and it immediately clicked. I’ve always wanted to build one, so I figured there’s no better time than now. 🎨 The Vision: Stealing the Best Designs Initially, I thought about building a heavily riced, Arch Linux-style WebOS. But then I thought: if I’m building this from scratch, why limit myself? Why not just steal the best design language from every OS out there? Right now, the aesthetic is a beautiful mashup From macOS, I Snagged the classic window traffic lights and the sleek Spotlight search functionality. From Arch Linux, Implementing a clean, rice-inspired Waybar for the status panel. 🛠️ Current Progress (The MVP) The project just kicked off, so nothing is fine-tuned or heavily configured yet. It is a pure Minimum Viable Product (MVP) to get the core architecture up and running. I’ve already built out a few baseline apps to test the environment: 🎵 Music Player 🧮 Calculator 🎯 The X-Factor: Deep Game Integration Standard apps like calculators are cool, but they aren’t the specialty of RelicOS. The main feature I’m currently scheming up is direct itch.io web game integration. I want to pull custom indie web games and run them seamlessly inside the OS environment as native-feeling applications. 🌐 Once Again, check out the Live Demo! It’s early days, but you can already play around with the live environment here: 👉 relicos.vercel.app/os There is a lot left to do, code to clean up, and features to rice out. This is just the beginning of the journey. Here are some thoughts i have of what i should add next: 1- Glass Ui 2- Games 3- Retro pixel art logos and icons 4- live or ai generated wallpapers ( user can prompt ai to generate wallpaper of choice, its a feature not pre configured wallpapers generated by ai) 5- Youtube and Browser inside as apps Let me know what you think or what features I should steal next! 🚀
Hi Fellows, The wait is over, RelicOS is almost complete, only games are left, everything else is fully functional and workin, give it a try at https://relicos.vercel.app/os New Features i added: Youtube App A Internet Browser Menu’s and easter eggs Basic Ui control such as Right Click, drag and select Improved the Ui Colour Schemes, Wallpapers and Music
RelicOs is now finished, documentation is only left, The Home page has all the details, the os has alot of fun features to explore, let me know if i should also add a guide app that guides the user about the whole os, like a Quick Start app that has all the controls and features
It’s always a great feeling to check off the final task on a major project. After a lot of building, refining, and iterating, Relic OS is officially complete. What started as a focused development goal has finally hit the finish line. The process came with its fair share of troubleshooting and architecture puzzles, but bringing it to full completion has been incredibly rewarding. Check it out at relicos.vercel.app
Ships:
I have always been inspired with ricing and customizing my operating system, so now i decided to make a full customized web based operating system, i call it Relic Os, it has youtube, browser, games, some themes & wallpapers, I have put in a lot of personalized design preferences and ideas like a centralized music system, i am proud that its complete now, let me know what you think about it....
|
1793109184.2669544
|
1793195584.2669544
|
|
13340
|
SlackSponse by @SirYanni | Stardance
|
SirYanni
|
1
|
1.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-09T17:06:54Z", "hours": 1.0, "multiplier": 1.3, "payout": 1, "blessing": "neutral", "text": "I made a simple SlackBot to get startet with JavaScript coding. So far, all it can do are four commands (as seen in the screenshot). It works 24/7 using nest, and im pretty proud of myself, considering its my first ever JavaScript project.", "repo": "https://github.com/siryanni/SlackSponse", "demo": "https://app.slack.com/client/E09V59WQY1E/C0B9FPMTL6P"}]...
|
[{"post_id": 5729, "ts": "2026 [{"post_id": 5729, "ts": "2026-06-09T17:03:53Z", "hours": 0.2581, "text": "I added a few more commands, so see the release note for any questions!"}, {"post_id": 5706, "ts": "2026-06-09T16:32:14Z", "hours": 0.2589, "text": "Just finished uploading to the nest server, now running 24/7! See the Repo (->Readme) for the / Commands."}, {"post_id": 5125, "ts": "2026-06-08T20:16:21Z", "hours": 0.5081, "text": "Got done with the Code and setup, just postet my Nest Request… now we wait I guess. GitHub Repo is online now aswell!"}]...
|
Title: SlackSponse by @SirYanni | Stardance
Devlo Title: SlackSponse by @SirYanni | Stardance
Devlogs:
Got done with the Code and setup, just postet my Nest Request… now we wait I guess. GitHub Repo is online now aswell!
Just finished uploading to the nest server, now running 24/7! See the Repo (->Readme) for the / Commands.
I added a few more commands, so see the release note for any questions!
Ships:
I made a simple SlackBot to get startet with JavaScript coding. So far, all it can do are four commands (as seen in the screenshot). It works 24/7 using nest, and im pretty proud of myself, considering its my first ever JavaScript project....
|
1793263839.488915
|
1793350239.488915
|
|
13341
|
Racing simulator button box by @lukewalsh11234 | S Racing simulator button box by @lukewalsh11234 | Stardance...
|
lukewalsh11234
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-14T15:43:37Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a universal button box powered by a raspberry pi pico. It can be used with basically anything however I will be using it for my racing simulator for games. It has 14 adressable inputs which can do whatever I want to assign to them. I think that the biggest challenge for me was the coding side of this project because I have little experience in coding but have more experience in cad and hardware . Coding is definitely a thing I want to become better at and improve in the future. I found the whole experience really cool documenting my progress and finding ways to improve my project along the way. I learned how to use GitHub and Uploaded my first 3d model to printables while tackling a problem that I had. 😁", "repo": "https://github.com/luke-walsh1/Sim-Racing-Button-Box", "demo": ""}]...
|
[{"post_id": 7714, "ts": "2026 [{"post_id": 7714, "ts": "2026-06-12T21:34:58Z", "hours": 0.5992, "text": "Dev Blog 5 I decided to switch from Dahl DDC to the Arduino Joystick library for ease of use and having the possibility to use it outside of simhub. I 3D printed the enclousre and it fits without any problems. All holes are perfect size for the buttons and screws and the spacing for the aluminium extrusion mount is correct. Exess pace for the components is also a feature to fit the pico and all wires."}, {"post_id": 6921, "ts": "2026-06-11T16:26:49Z", "hours": 0.5036, "text": "Dev Blog 4 I printed the body and front plate however i accidently ran out of fillament with about a hour left😑 in a 10 hour print. Optimised the body to print faster and use less material also fixed issues with the front plate with the screw holes and holes for rotary switch and square buttons. Time to print V2."}, {"post_id": 6287, "ts": "2026-06-10T15:54:52Z", "hours": 0.5217, "text": "Dev blog 3 Cad model is finalized and ready for 3d printing, next i will make a wiring diagram and 3d print then solder all connections and use Dahl Design DDC paired with simhub to turn the raspberry pi pico into a hid device over usb. Next steps : 3d print enclousre, flash pi with code, wiring diagram, solder connections and assembly."}, {"post_id": 6244, "ts": "2026-06-10T14:26:32Z", "hours": 0.78, "text": "Dev Blog 2 Layout finalised and rough 3d model made. Next i need to figure out how i will mount it exactly to my 4080 aluminium extrusion."}, {"post_id": 5769, "ts": "2026-06-09T17:53:24Z", "hours": 0.2683, "text": "Dev Blog 1 When thinking of doing a new project i alwaus try to think of 2 things : a problem and a way to solve it. The What Why and How always come in mind when brainstorming ideas. A good project is always the best foundation but you also have to have an idea how you will overcome said problem. I found a problem and that was in my racing simulator where i didnt have enough inputs on my wheel and had to go over to my keyboard by my desk each time i wanted to do something such as press escape or connect and disconect my trailer in euro truck simulator. First thing i did was find the needed hardware for something like this so rotary encoders switches and buttons come in mind. I had to choose what inputs i was needing the most so when i chose those inputs i picked what hardware would be best for that. I ended up with 4 push buttons a 2 way switch and a 8 way rotary encoder. Next i made a blueprint on paper and measured all mounting holes and made a prototype drawring to see how the layout will look. With there being 14 total inputs i also have to choose a microcontroller and i think i will choose the rp-pico for this task. Next step : cad design in onshape."}]...
|
Title: Racing simulator button box by @lukewalsh11 Title: Racing simulator button box by @lukewalsh11234 | Stardance
Devlogs:
Dev Blog 1 When thinking of doing a new project i alwaus try to think of 2 things : a problem and a way to solve it. The What Why and How always come in mind when brainstorming ideas. A good project is always the best foundation but you also have to have an idea how you will overcome said problem. I found a problem and that was in my racing simulator where i didnt have enough inputs on my wheel and had to go over to my keyboard by my desk each time i wanted to do something such as press escape or connect and disconect my trailer in euro truck simulator. First thing i did was find the needed hardware for something like this so rotary encoders switches and buttons come in mind. I had to choose what inputs i was needing the most so when i chose those inputs i picked what hardware would be best for that. I ended up with 4 push buttons a 2 way switch and a 8 way rotary encoder. Next i made a blueprint on paper and measured all mounting holes and made a prototype drawring to see how the layout will look. With there being 14 total inputs i also have to choose a microcontroller and i think i will choose the rp-pico for this task. Next step : cad design in onshape.
Dev Blog 2 Layout finalised and rough 3d model made. Next i need to figure out how i will mount it exactly to my 4080 aluminium extrusion.
Dev blog 3 Cad model is finalized and ready for 3d printing, next i will make a wiring diagram and 3d print then solder all connections and use Dahl Design DDC paired with simhub to turn the raspberry pi pico into a hid device over usb. Next steps : 3d print enclousre, flash pi with code, wiring diagram, solder connections and assembly.
Dev Blog 4 I printed the body and front plate however i accidently ran out of fillament with about a hour left😑 in a 10 hour print. Optimised the body to print faster and use less material also fixed issues with the front plate with the screw holes and holes for rotary switch and square buttons. Time to print V2.
Dev Blog 5 I decided to switch from Dahl DDC to the Arduino Joystick library for ease of use and having the possibility to use it outside of simhub. I 3D printed the enclousre and it fits without any problems. All holes are perfect size for the buttons and screws and the spacing for the aluminium extrusion mount is correct. Exess pace for the components is also a feature to fit the pico and all wires.
Ships:
I made a universal button box powered by a raspberry pi pico. It can be used with basically anything however I will be using it for my racing simulator for games. It has 14 adressable inputs which can do whatever I want to assign to them. I think that the biggest challenge for me was the coding side of this project because I have little experience in coding but have more experience in cad and hardware . Coding is definitely a thing I want to become better at and improve in the future. I found the whole experience really cool documenting my progress and finding ways to improve my project along the way. I learned how to use GitHub and Uploaded my first 3d model to printables while tackling a problem that I had. 😁...
|
1793202789.1554801
|
1793289189.1554801
|
|
13353
|
CLI Calculator by @AidenHammy | Stardance
|
AidenHammy
|
1
|
14.0
|
190
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T06:22:43Z", "hours": 14.0, "multiplier": 13.37, "payout": 190, "blessing": "neutral", "text": "What did you make? A CLI calculator built from scratch in Node.js. Not just a basic one, it runs as a full REPL in your terminal, supports both command-driven operations ( add 2 3 , sin 90 ) and free-form math expressions ( 2 + 3 * 4 , sin(90) + 10 ), remembers your last result with ans , logs every calculation to a history file with timestamps and validates inputs with actual helpful error messages. Over the last week I also ported the whole thing to run in the browser using xterm.js so you can try it live without installing anything. What was challenging? Honestly, most of it at some point. The expression evaluator was probably the hardest part. Using Function() to evaluate raw user input feels powerful but also kind of risky and making it fail gracefully without breaking anything took a while to get right. The ans memory system was tricky too because replacing it correctly across both commands and expressions without accidentally mangling other words required careful regex work. The browser port was a whole different kind of hard. I didn’t realize how much Node.js was doing for me silently. readline alone handles an entire input loop that I had to rebuild character by character in xterm.js. What are you proud of? A few things: The validation architecture — argument counts, type checks, domain-specific errors (division by zero, negative square roots, log of non-positives) all cleanly separated from the actual math logic The ans memory system — being able to chain pow 2 8 → add ans 100 → ans / 2 makes it feel like a real calculator The expression evaluator — typing sin(90) + 10 directly and getting 11 feels satisfying every time The history system — timestamped, persistent, filterable with history [n] The fact that the browser demo runs the exact same logic as the CLI — calc.js was never touched, the port lives in a separate file This was built step by step over 6 devlogs in about a week. I’m still a beginner and it’s not perfect but it genuinely feels like something I made rather than something I just followed a tutorial for. What should people know so they can test your project? The easiest way is the live browser demo — no install, just open the link: 🔗 https://cli-calculator-five.vercel.app/ Try these to get a feel for it: help add 2 3 pow 2 8 add ans 100 sin(90) + 10 2 + 3 * 4 history If you want to run it locally instead: git clone https://github.com/AidenHammy/cli-calculator.git cd cli-calculator npm install node src/calc.js", "repo": "https://github.com/AidenHammy/cli-calculator", "demo": "https://cli-calculator-five.vercel.app/"}]...
|
[{"post_id": 10452, "ts": "202 [{"post_id": 10452, "ts": "2026-06-17T05:44:08Z", "hours": 1.7378, "text": "Devlog 6 — Taking the CLI to the Browser Biggest struggle The hardest part wasn’t writing new features. It was translating existing ones into a completely different environment. The original CLI felt natural because Node.js gives you everything: file system, stdin/stdout, process control. The browser gives you none of that. Every tool I had been relying on: readline , fs , chalk , console.log even process either doesn’t exist or behaves differently in a browser context. The trickiest translation was the input loop. readline handles line buffering automatically, you just wait for the user to press Enter and get the full line back. With xterm.js, you get one raw character at a time via onData . The other catch was the expression evaluator. After porting everything over, sin(90) + 10 was returning \"Invalid command or expression\" because the Function() scope didn’t know what sin was. The fix was straightforward once I understood the cause, exposing the math functions as local constants inside the Function() string but it was a good reminder that a working feature in one environment isn’t automatically working in another. What changed in this version New files src/calc-demo.js :- full browser port of calc.js using xterm.js main.js :- entry point: boots xterm, loads the fit addon, calls initCalc(term) index.html :- static shell with topbar, terminal mount and statusbar style.css :- dark terminal theme built around a monospace font stack and a single green accent Key substitutions made Node.js ( calc.js ) Browser ( calc-demo.js ) readline xterm.js onData + manual buffer chalk ANSI escape codes fs / history.txt localStorage console.log term.write() via print() process.exit location.reload() calc.js is untouched. The original CLI still runs exactly as before with node src/calc.js . The browser build is a separate port not a replacement. Current features Everything from Devlog 5, now running in the browser Live deployment on Vercel. No install, no terminal, just a URL Terminal emulator UI with topbar, statusbar and live clock Full xterm.js input handling: backspace, local echo, line buffering History persisted in localStorage across page reloads Expression evaluator now supports sin(90) + 10 , sqrt(144) , abs(-5) etc. directly cls clears the xterm screen properly using escape sequences exit reloads the page Reflection Devlog 5 ended with “maybe create a simple web version for easier demo access” as a future idea. This devlog is that idea, actually shipped. What surprised me most was how much invisible work Node.js was doing. You write readline and it just works but behind it is a whole input loop, line buffering, echo management and terminal control that you never think about. Doing it manually in xterm.js made all of that visible which was frustrating at first but genuinely useful to understand. The project now has two lives: a proper Node.js CLI tool and a browser demo that looks and feels identical. That separation, keeping calc.js untouched and building the browser port as a parallel file felt like the right architectural call. One doesn’t compromise the other. It’s also the first time something I built has a real public URL."}, {"post_id": 10162, "ts": "2026-06-16T19:33:09Z", "hours": 4.6844, "text": "Devlog 5 — Expressions, Memory and a Real “Calculator Feel” What I learned: How to evaluate user input dynamically using Function() (and why it needs to be handled carefully) How to replace parts of user input using regex. How to structure commands when the number of arguments isn’t always fixed (min/max validation) How small UX details (like colors using chalk ) make a big difference in usability How to maintain state across a REPL session How to design a fallback system where unknown commands are treated as expressions Biggest struggle: This one was definitely more complex than the previous days. The hardest part was adding expression evaluation. Using something like Function() to evaluate user input felt powerful but also risky and confusing at first. Making sure it doesn’t break on invalid input and handling errors properly took some time. Another tricky part was implementing a feature ( ans ) that lets you reuse the previous result in new calculations. Ensuring it worked consistently across both commands and expressions required careful handling of user input. Replacing it correctly in user input without breaking other words or expressions required using regex carefully. Also, as the number of commands grew, validation started getting messy. Switching to a min/max argument system helped but it took a bit of thinking to get right. This stage felt less like “just coding” and more like designing how the calculator should behave. Current features: Full REPL-based interactive CLI Support for both commands and direct expressions: add 2 3 2 + 3 * 4 ans keyword to reuse the previous result Expanded math operations: Trigonometry ( sin , cos , tan ) Logarithms ( ln , log ) Factorial ( fact ) Rounding ( round , ceil , floor ) Absolute value ( abs ) Improved validation with flexible argument handling (min/max support) Persistent history with timestamps Optional history limit ( history n ) Colored and structured output using chalk Better error handling for invalid commands and expressions Next steps: Improve expression parsing (support more complex cases safely) Possibly replace Function() with a safer custom parser Add command chaining or multi-step calculations Improve UI further (custom prompt, better formatting) Maybe create a simple web version for easier demo access Reflection: This version feels like a big step forward. Before, the calculator was command-based and structured. Now it feels much more natural and flexible, especially with expressions and the ans feature. It’s starting to behave like an actual calculator instead of just a program that runs specific commands. At the same time, the complexity is definitely increasing. It’s getting harder to manage everything cleanly which makes me realize how important structure and planning are as projects grow. It’s not perfect but it finally feels like something I could actually use. Not just something I built to learn."}, {"post_id": 8232, "ts": "2026-06-13T18:11:24Z", "hours": 1.8294, "text": "Devlog 4 — Making it Interactive (REPL + UX Improvements) What I learned: How to use readline to keep the program running and take input again and again The difference between a script that runs once vs something interactive How small UX things (like input formatting and cleaner output) actually matter a lot How to handle messy user input using trim() and split(/\\s+/) How to structure code so it doesn’t become a mess when it keeps running in a loop Biggest struggle: This part wasn’t “hard” in the usual sense but it was confusing at first. Before this, my program would just run once and end. Now it stays alive and that changes how everything works. I had to think differently about how commands are handled because now the same logic runs over and over again. Input handling was also kind of annoying. Even small things like extra spaces could break stuff which forced me to actually deal with it properly instead of ignoring it. Another thing was output. At some points it felt too cluttered and at others it felt like not enough information was being shown. Finding a balance there took a bit of trial and error. Current features: REPL system using readline (no need to restart the program every time) Continuous input like a real CLI Support for both commands and symbols ( add + + , etc.) Better input handling (spaces don’t break things anymore) Validation for: wrong number of arguments invalid numbers division by zero square root of negative numbers Cleaner output (less unnecessary logs) History system: saved to history.txt can view with history can reset with clear cls to clear the screen exit to quit the program Next steps: Support actual expressions like 2 + 3 * 4 instead of strict commands Make history a bit smarter (maybe timestamps or search) Reduce repeated logic even more Add vector/matrix operations Add autocomplete for commands Add colored terminal output Reflection: This is probably the first version that actually feels like a real program. The REPL made a huge difference. Before, it felt like I was just testing functions. Now it actually feels like something you can use. Most of the improvements in this version aren’t big features, but small things that make the experience smoother. Stuff like handling spaces properly or adding aliases doesn’t sound like much but it changes how the program feels. I’m starting to notice that building something usable is very different from just making something work. It’s still simple and there’s a lot more I could improve but this is the first time the calculator feels complete in its own way."}, {"post_id": 6958, "ts": "2026-06-11T17:48:39Z", "hours": 2.0842, "text": "Devlog 3 — Persistence and Control (File-based History + Clear Command) What I learned: Why CLI programs reset completely every time they are executed How to use the fs module to write and read files in Node.js How appendFileSync can be used to store data incrementally How to read stored data using readFileSync The difference between in-memory state and persistent state How small bugs (like variable naming or extra trims) can break logic in subtle ways Why validation, execution and side effects (like saving history) should stay separated Biggest struggle: This part was less chaotic than Day 2 but still frustrating in a different way. The logic itself wasn’t the problem this time. It was understanding how programs behave over time . I had already built a history system before so seeing it disappear every run was confusing at first. Then came the file system part. Writing to a file felt simple but reading it back properly and formatting it without breaking things took more effort than expected. Small mistakes like misnaming variables or structuring loops incorrectly kept causing issues. It wasn’t overwhelming chaos but more like constant small friction that slowed everything down. Current features: Persistent history system using fs Calculations are stored in history.txt across runs history command displays formatted past calculations clear command wipes stored history clean Improved validation and error messages Clean separation between parsing, validation and execution Next steps: Convert the calculator into an interactive CLI (REPL-style) Reduce repeated validation logic into reusable helpers Improve overall UX (cleaner outputs and command feedback) Reflection: The biggest realization was understanding that programs don’t remember anything unless you explicitly store it. That changed how I think about state completely. Compared to earlier struggles, this one felt quieter but still tiring. Less confusion, more persistence. Fixing small issues, understanding behavior and slowly making things more stable. It still isn’t perfect but it finally feels like the calculator has some sense of continuity instead of resetting every time. Note: The screenshot does not show all features (full validation system)."}, {"post_id": 5824, "ts": "2026-06-09T19:21:54Z", "hours": 3.0411, "text": "Devlog 2 — CLI Calculator Upgrade (Validation + History System) What I learned: How to structure validation into layers (arity type domain) How CLI arguments actually behave — missing inputs simply don’t exist in the array How to use slice() + map(Number) to normalize input in one step Why separating parsing validation and execution simplifies reasoning How function hoisting allows referencing functions before declaration How to maintain in-memory state using arrays How for loops and forEach help format structured output How small design choices like a numbers array simplify architecture Biggest struggle: This part was genuinely exhausting. I kept getting stuck on when validation should happen and what exactly needed to be validated. I was duplicating checks mixing raw CLI arguments with parsed numbers and constantly second-guessing my logic. I also misunderstood CLI arguments. I expected missing inputs to appear as undefined which made my validation more complicated than necessary. The worst part was the flow. Everything felt tangled. Command lookup parsing validation execution like it was happening all at once. Even when the code worked I didn’t fully trust it which made the whole process frustrating. Current features: Command routing using a function map ( commands[cmd] ) Argument validation based on expected counts Clean input parsing using slice() and map(Number) Domain rules (division by zero negative square roots) Scientific operations: sqrt pow log In-memory history system history command for session logs Improved help command More consistent error handling Next steps: Persist history to a file Refactor validation into helper functions Improve error messages Reflection: Validation was mentally draining. I kept mixing up arity type and domain rules and the code felt like a pile of checks instead of a system. It worked but I didn’t trust it. The biggest reality check was the history system. I built it saw it work then ran another command and everything was gone. That’s when it clicked. CLI programs don’t persist memory. Every run starts fresh. That was the most important lesson. Not everything you build “stays” unless you store it. It changed how I think about programs. By the end the calculator is still simple but my understanding of structure and flow is much stronger. It feels less like guessing and more like knowing what I’m doing. Note: The screenshot only shows a basic run and does not include all implemented features (validation command handling improvements and history tracking)."}, {"post_id": 5093, "ts": "2026-06-08T19:37:58Z", "hours": 0.9297, "text": "Devlog 1 — Building a CLI Calculator What I set out to build : A command-based CLI calculator using Node.js that can take input directly from the terminal and perform operations like addition, subtraction multiplication and division. What I learned: How process.argv works for handling command-line input Why \"5\" + \"3\" results in \"53\" (strings vs numbers in JavaScript) How to convert inputs properly using Number() The difference between calling a function and referencing it How to implement a command map using commands[cmd]() Biggest struggle: Understanding how to structure the command system cleanly without relying on long and messy if/else chains. Breakthrough moment: Realizing that I could store functions inside an object and dynamically execute them based on user input. That made the whole system feel much cleaner and scalable. Current features: Supports add , sub , mul and div commands Handles invalid commands with basic error messaging Uses a command map for cleaner execution logic Next steps: Add scientific functions like sqrt , pow , and log Improve input validation Potentially add a history system Reflection: Started this knowing almost nothing about CLI tools or Node.js input handling and ended up building a working command-based system. It’s simple but it actually feels like the foundation of something bigger."}]...
|
Title: CLI Calculator by @AidenHammy | Stardance
Title: CLI Calculator by @AidenHammy | Stardance
Devlogs:
Devlog 1 — Building a CLI Calculator What I set out to build : A command-based CLI calculator using Node.js that can take input directly from the terminal and perform operations like addition, subtraction multiplication and division. What I learned: How process.argv works for handling command-line input Why "5" + "3" results in "53" (strings vs numbers in JavaScript) How to convert inputs properly using Number() The difference between calling a function and referencing it How to implement a command map using commands[cmd]() Biggest struggle: Understanding how to structure the command system cleanly without relying on long and messy if/else chains. Breakthrough moment: Realizing that I could store functions inside an object and dynamically execute them based on user input. That made the whole system feel much cleaner and scalable. Current features: Supports add , sub , mul and div commands Handles invalid commands with basic error messaging Uses a command map for cleaner execution logic Next steps: Add scientific functions like sqrt , pow , and log Improve input validation Potentially add a history system Reflection: Started this knowing almost nothing about CLI tools or Node.js input handling and ended up building a working command-based system. It’s simple but it actually feels like the foundation of something bigger.
Devlog 2 — CLI Calculator Upgrade (Validation + History System) What I learned: How to structure validation into layers (arity type domain) How CLI arguments actually behave — missing inputs simply don’t exist in the array How to use slice() + map(Number) to normalize input in one step Why separating parsing validation and execution simplifies reasoning How function hoisting allows referencing functions before declaration How to maintain in-memory state using arrays How for loops and forEach help format structured output How small design choices like a numbers array simplify architecture Biggest struggle: This part was genuinely exhausting. I kept getting stuck on when validation should happen and what exactly needed to be validated. I was duplicating checks mixing raw CLI arguments with parsed numbers and constantly second-guessing my logic. I also misunderstood CLI arguments. I expected missing inputs to appear as undefined which made my validation more complicated than necessary. The worst part was the flow. Everything felt tangled. Command lookup parsing validation execution like it was happening all at once. Even when the code worked I didn’t fully trust it which made the whole process frustrating. Current features: Command routing using a function map ( commands[cmd] ) Argument validation based on expected counts Clean input parsing using slice() and map(Number) Domain rules (division by zero negative square roots) Scientific operations: sqrt pow log In-memory history system history command for session logs Improved help command More consistent error handling Next steps: Persist history to a file Refactor validation into helper functions Improve error messages Reflection: Validation was mentally draining. I kept mixing up arity type and domain rules and the code felt like a pile of checks instead of a system. It worked but I didn’t trust it. The biggest reality check was the history system. I built it saw it work then ran another command and everything was gone. That’s when it clicked. CLI programs don’t persist memory. Every run starts fresh. That was the most important lesson. Not everything you build “stays” unless you store it. It changed how I think about programs. By the end the calculator is still simple but my understanding of structure and flow is much stronger. It feels less like guessing and more like knowing what I’m doing. Note: The screenshot only shows a basic run and does not include all implemented features (validation command handling improvements and history tracking).
Devlog 3 — Persistence and Control (File-based History + Clear Command) What I learned: Why CLI programs reset completely every time they are executed How to use the fs module to write and read files in Node.js How appendFileSync can be used to store data incrementally How to read stored data using readFileSync The difference between in-memory state and persistent state How small bugs (like variable naming or extra trims) can break logic in subtle ways Why validation, execution and side effects (like saving history) should stay separated Biggest struggle: This part was less chaotic than Day 2 but still frustrating in a different way. The logic itself wasn’t the problem this time. It was understanding how programs behave over time . I had already built a history system before so seeing it disappear every run was confusing at first. Then came the file system part. Writing to a file felt simple but reading it back properly and formatting it without breaking things took more effort than expected. Small mistakes like misnaming variables or structuring loops incorrectly kept causing issues. It wasn’t overwhelming chaos but more like constant small friction that slowed everything down. Current features: Persistent history system using fs Calculations are stored in history.txt across runs history command displays formatted past calculations clear command wipes stored history clean Improved validation and error messages Clean separation between parsing, validation and execution Next steps: Convert the calculator into an interactive CLI (REPL-style) Reduce repeated validation logic into reusable helpers Improve overall UX (cleaner outputs and command feedback) Reflection: The biggest realization was understanding that programs don’t remember anything unless you explicitly store it. That changed how I think about state completely. Compared to earlier struggles, this one felt quieter but still tiring. Less confusion, more persistence. Fixing small issues, understanding behavior and slowly making things more stable. It still isn’t perfect but it finally feels like the calculator has some sense of continuity instead of resetting every time. Note: The screenshot does not show all features (full validation system).
Devlog 4 — Making it Interactive (REPL + UX Improvements) What I learned: How to use readline to keep the program running and take input again and again The difference between a script that runs once vs something interactive How small UX things (like input formatting and cleaner output) actually matter a lot How to handle messy user input using trim() and split(/\s+/) How to structure code so it doesn’t become a mess when it keeps running in a loop Biggest struggle: This part wasn’t “hard” in the usual sense but it was confusing at first. Before this, my program would just run once and end. Now it stays alive and that changes how everything works. I had to think differently about how commands are handled because now the same logic runs over and over again. Input handling was also kind of annoying. Even small things like extra spaces could break stuff which forced me to actually deal with it properly instead of ignoring it. Another thing was output. At some points it felt too cluttered and at others it felt like not enough information was being shown. Finding a balance there took a bit of trial and error. Current features: REPL system using readline (no need to restart the program every time) Continuous input like a real CLI Support for both commands and symbols ( add + + , etc.) Better input handling (spaces don’t break things anymore) Validation for: wrong number of arguments invalid numbers division by zero square root of negative numbers Cleaner output (less unnecessary logs) History system: saved to history.txt can view with history can reset with clear cls to clear the screen exit to quit the program Next steps: Support actual expressions like 2 + 3 * 4 instead of strict commands Make history a bit smarter (maybe timestamps or search) Reduce repeated logic even more Add vector/matrix operations Add autocomplete for commands Add colored terminal output Reflection: This is probably the first version that actually feels like a real program. The REPL made a huge difference. Before, it felt like I was just testing functions. Now it actually feels like something you can use. Most of the improvements in this version aren’t big features, but small things that make the experience smoother. Stuff like handling spaces properly or adding aliases doesn’t sound like much but it changes how the program feels. I’m starting to notice that building something usable is very different from just making something work. It’s still simple and there’s a lot more I could improve but this is the first time the calculator feels complete in its own way.
Devlog 5 — Expressions, Memory and a Real “Calculator Feel” What I learned: How to evaluate user input dynamically using Function() (and why it needs to be handled carefully) How to replace parts of user input using regex. How to structure commands when the number of arguments isn’t always fixed (min/max validation) How small UX details (like colors using chalk ) make a big difference in usability How to maintain state across a REPL session How to design a fallback system where unknown commands are treated as expressions Biggest struggle: This one was definitely more complex than the previous days. The hardest part was adding expression evaluation. Using something like Function() to evaluate user input felt powerful but also risky and confusing at first. Making sure it doesn’t break on invalid input and handling errors properly took some time. Another tricky part was implementing a feature ( ans ) that lets you reuse the previous result in new calculations. Ensuring it worked consistently across both commands and expressions required careful handling of user input. Replacing it correctly in user input without breaking other words or expressions required using regex carefully. Also, as the number of commands grew, validation started getting messy. Switching to a min/max argument system helped but it took a bit of thinking to get right. This stage felt less like “just coding” and more like designing how the calculator should behave. Current features: Full REPL-based interactive CLI Support for both commands and direct expressions: add 2 3 2 + 3 * 4 ans keyword to reuse the previous result Expanded math operations: Trigonometry ( sin , cos , tan ) Logarithms ( ln , log ) Factorial ( fact ) Rounding ( round , ceil , floor ) Absolute value ( abs ) Improved validation with flexible argument handling (min/max support) Persistent history with timestamps Optional history limit ( history n ) Colored and structured output using chalk Better error handling for invalid commands and expressions Next steps: Improve expression parsing (support more complex cases safely) Possibly replace Function() with a safer custom parser Add command chaining or multi-step calculations Improve UI further (custom prompt, better formatting) Maybe create a simple web version for easier demo access Reflection: This version feels like a big step forward. Before, the calculator was command-based and structured. Now it feels much more natural and flexible, especially with expressions and the ans feature. It’s starting to behave like an actual calculator instead of just a program that runs specific commands. At the same time, the complexity is definitely increasing. It’s getting harder to manage everything cleanly which makes me realize how important structure and planning are as projects grow. It’s not perfect but it finally feels like something I could actually use. Not just something I built to learn.
Devlog 6 — Taking the CLI to the Browser Biggest struggle The hardest part wasn’t writing new features. It was translating existing ones into a completely different environment. The original CLI felt natural because Node.js gives you everything: file system, stdin/stdout, process control. The browser gives you none of that. Every tool I had been relying on: readline , fs , chalk , console.log even process either doesn’t exist or behaves differently in a browser context. The trickiest translation was the input loop. readline handles line buffering automatically, you just wait for the user to press Enter and get the full line back. With xterm.js, you get one raw character at a time via onData . The other catch was the expression evaluator. After porting everything over, sin(90) + 10 was returning "Invalid command or expression" because the Function() scope didn’t know what sin was. The fix was straightforward once I understood the cause, exposing the math functions as local constants inside the Function() string but it was a good reminder that a working feature in one environment isn’t automatically working in another. What changed in this version New files src/calc-demo.js :- full browser port of calc.js using xterm.js main.js :- entry point: boots xterm, loads the fit addon, calls initCalc(term) index.html :- static shell with topbar, terminal mount and statusbar style.css :- dark terminal theme built around a monospace font stack and a single green accent Key substitutions made Node.js ( calc.js ) Browser ( calc-demo.js ) readline xterm.js onData + manual buffer chalk ANSI escape codes fs / history.txt localStorage console.log term.write() via print() process.exit location.reload() calc.js is untouched. The original CLI still runs exactly as before with node src/calc.js . The browser build is a separate port not a replacement. Current features Everything from Devlog 5, now running in the browser Live deployment on Vercel. No install, no terminal, just a URL Terminal emulator UI with topbar, statusbar and live clock Full xterm.js input handling: backspace, local echo, line buffering History persisted in localStorage across page reloads Expression evaluator now supports sin(90) + 10 , sqrt(144) , abs(-5) etc. directly cls clears the xterm screen properly using escape sequences exit reloads the page Reflection Devlog 5 ended with “maybe create a simple web version for easier demo access” as a future idea. This devlog is that idea, actually shipped. What surprised me most was how much invisible work Node.js was doing. You write readline and it just works but behind it is a whole input loop, line buffering, echo management and terminal control that you never think about. Doing it manually in xterm.js made all of that visible which was frustrating at first but genuinely useful to understand. The project now has two lives: a proper Node.js CLI tool and a browser demo that looks and feels identical. That separation, keeping calc.js untouched and building the browser port as a parallel file felt like the right architectural call. One doesn’t compromise the other. It’s also the first time something I built has a real public URL.
Ships:
What did you make? A CLI calculator built from scratch in Node.js. Not just a basic one, it runs as a full REPL in your terminal, supports both command-driven operations ( add 2 3 , sin 90 ) and free-form math expressions ( 2 + 3 * 4 , sin(90) + 10 ), remembers your last result with ans , logs every calculation to a history file with timestamps and validates inputs with actual helpful error messages. Over the last week I also ported the whole thing to run in the browser using xterm.js so you can try it live without installing anything. What was challenging? Honestly, most of it at some point. The expression evaluator was probably the hardest part. Using Function() to evaluate raw user input feels powerful but also kind of risky and making it fail gracefully without breaking anything took a while to get right. The ans memory system was tricky too because replacing it correctly across both commands and expressions without accidentally mangling other words required careful regex work. The browser port was a whole different kind of hard. I didn’t realize how much Node.js was doing for me silently. readline alone handles an entire input loop that I had to rebuild character by character in xterm.js. What are you proud of? A few things: The validation architecture — argument counts, type checks, domain-specific errors (division by zero, negative square roots, log of non-positives) all cleanly separated from the actual math logic The ans memory system — being able to chain pow 2 8 → add ans 100 → ans / 2 makes it feel like a real calculator The expression evaluator — typing sin(90) + 10 directly and getting 11 feels satisfying every time The history system — timestamped, persistent, filterable with history [n] The fact that the browser demo runs the exact same logic as the CLI — calc.js was never touched, the port lives in a separate file This was built step by step over 6 devlogs in about a week. I’m still a beginner and it’s not perfect but it genuinely feels like something I made rather than something I just followed a tutorial for. What should people know so they can test your project? The easiest way is the live browser demo — no install, just open the link: 🔗 https://cli-calculator-five.vercel.app/ Try these to get a feel for it: help add 2 3 pow 2 8 add ans 100 sin(90) + 10 2 + 3 * 4 history If you want to run it locally instead: git clone https://github.com/AidenHammy/cli-calculator.git cd cli-calculator npm install node src/calc.js...
|
1793249320.6362343
|
1793335720.6362343
|
|
13360
|
Xinyu Lyu Website by @xinyulyu | Stardance
|
xinyulyu
|
1
|
1.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T19:07:45Z", "hours": 1.0, "multiplier": 2.57, "payout": 3, "blessing": "neutral", "text": "I created my own website where people can learn more about me and the projects I am working on. I even bought a custom domain for it. The website took around 23 hours to build with the help of GitHub Copilot, and I spent a lot of time designing, coding, and improving it. I am most proud that I was able to turn my idea into a real website that is online and accessible to everyone. I hope people enjoy exploring it and learning about my projects. I spent around 23 hours building this project, so I would really appreciate any kind feedback or suggestions. Thank you for checking it out!", "repo": "https://github.com/xinyulyuonline/xinyulyu_webseite", "demo": "https://xinyulyu.de/"}]...
|
[{"post_id": 10140, "ts": "202 [{"post_id": 10140, "ts": "2026-06-16T19:00:45Z", "hours": 0.4206, "text": "The website is finished. I might add more services later."}, {"post_id": 6231, "ts": "2026-06-10T14:05:30Z", "hours": 0.8461, "text": "Improving the website and expanding various services, such as the Xinyu Convert service for file conversion."}]...
|
Title: Xinyu Lyu Website by @xinyulyu | Stardance
Title: Xinyu Lyu Website by @xinyulyu | Stardance
Devlogs:
Improving the website and expanding various services, such as the Xinyu Convert service for file conversion.
The website is finished. I might add more services later.
Ships:
I created my own website where people can learn more about me and the projects I am working on. I even bought a custom domain for it. The website took around 23 hours to build with the help of GitHub Copilot, and I spent a lot of time designing, coding, and improving it. I am most proud that I was able to turn my idea into a real website that is online and accessible to everyone. I hope people enjoy exploring it and learning about my projects. I spent around 23 hours building this project, so I would really appreciate any kind feedback or suggestions. Thank you for checking it out!...
|
1793112658.8381116
|
1793199058.8381116
|
|
13376
|
efficient rover by @valdtaniem | Stardance
|
valdtaniem
|
1
|
13.0
|
90
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-16T11:25:42Z", "hours": 12.0, "multiplier": 7.32, "payout": 90, "blessing": "neutral", "text": "I made 2 scripts in C. A server script and a rover script. The server script accepts the connection from the rover. When it receives “ping” it sends a randomly generated string of 1, 01, 001 and 000. with 50% 1 for forward, 25% 01 for backwards and 12.5% 001 and 000 for left and right. the efficiency comes from the fact that the most used (forward) is only 1 character, and lesser used actions are more. 3blue1brown explains it very well ( https://youtu.be/l6DKRf-fAAM?si=0wl0j-8jQxhWdPC4&t=208 ). That video is also where I got the idea for this project.", "repo": "https://git.tuxworld.nl/valdtaniem/EfficientRover", "demo": "https://git.tuxworld.nl/valdtaniem/EfficientRover/releases"}]...
|
[{"post_id": 35757, "ts": "202 [{"post_id": 35757, "ts": "2026-07-27T12:17:43Z", "hours": 0.9986, "text": "I got feedback on my previous ship that I needed a release with binaries, so i made that. While I’m at it I might as well write a little Makefile. (make help for all the commands)"}, {"post_id": 29392, "ts": "2026-07-16T10:05:55Z", "hours": 2.1306, "text": "I drew a new background and new rover."}, {"post_id": 13776, "ts": "2026-06-22T16:05:19Z", "hours": 0.7764, "text": "Server GUI updated. the server GUI can scroll. the text is no longer editable and the server loads a CSS file for styling."}, {"post_id": 13092, "ts": "2026-06-21T12:55:25Z", "hours": 1.8792, "text": "most functions are in (: The server has a GUI now, just a live log of what is being sent. and connection info. The rover GUI has an update, new buttons and a background. You can now close the rover program and the server won’t crash. you can start the rover up again and reconnect. i want to add a controller to the server for manual driving. Making everything look better is also something I want to do. the rover and background are pretty ugly and the server still looks plain."}, {"post_id": 9817, "ts": "2026-06-16T08:13:05Z", "hours": 3.1278, "text": "The rover has a GUI now! using GTK i made a grid with buttons and a drawing area to visualize the rover moving. with ping to receive movement instructions and reset to position the rover back to the center the button images should change because they are now just hand drawn (; the server sends longer strings. planning to add a background and make the buttons look like a controll panel. while the rover is moving don’t press the ping button becouse than the program crashes. ¯ _ (ツ)_/"}, {"post_id": 6811, "ts": "2026-06-11T13:03:04Z", "hours": 1.3764, "text": "The server now sends full strings of instructions and the rover can properly decode them into forward, backward, left and right instructions. I’m pretty proud of my implementation although I’m sure there is a better way."}, {"post_id": 5605, "ts": "2026-06-09T13:50:10Z", "hours": 0.9508, "text": "The server now transmits random movement instructions. the instructions have a 50%, 25%, 12.5% and 12.5% for 1, 01, 001 and 000. Because 1 is used much more its more efficient than encoding with 00, 01, 10 and 11"}, {"post_id": 5574, "ts": "2026-06-09T12:29:45Z", "hours": 2.0519, "text": "the rover and server scripts are talking via tcp."}]...
|
Title: efficient rover by @valdtaniem | Stardance
Title: efficient rover by @valdtaniem | Stardance
Devlogs:
the rover and server scripts are talking via tcp.
The server now transmits random movement instructions. the instructions have a 50%, 25%, 12.5% and 12.5% for 1, 01, 001 and 000. Because 1 is used much more its more efficient than encoding with 00, 01, 10 and 11
The server now sends full strings of instructions and the rover can properly decode them into forward, backward, left and right instructions. I’m pretty proud of my implementation although I’m sure there is a better way.
The rover has a GUI now! using GTK i made a grid with buttons and a drawing area to visualize the rover moving. with ping to receive movement instructions and reset to position the rover back to the center the button images should change because they are now just hand drawn (; the server sends longer strings. planning to add a background and make the buttons look like a controll panel. while the rover is moving don’t press the ping button becouse than the program crashes. ¯ _ (ツ)_/
most functions are in (: The server has a GUI now, just a live log of what is being sent. and connection info. The rover GUI has an update, new buttons and a background. You can now close the rover program and the server won’t crash. you can start the rover up again and reconnect. i want to add a controller to the server for manual driving. Making everything look better is also something I want to do. the rover and background are pretty ugly and the server still looks plain.
Server GUI updated. the server GUI can scroll. the text is no longer editable and the server loads a CSS file for styling.
I drew a new background and new rover.
I got feedback on my previous ship that I needed a release with binaries, so i made that. While I’m at it I might as well write a little Makefile. (make help for all the commands)
Ships:
I made 2 scripts in C. A server script and a rover script. The server script accepts the connection from the rover. When it receives “ping” it sends a randomly generated string of 1, 01, 001 and 000. with 50% 1 for forward, 25% 01 for backwards and 12.5% 001 and 000 for left and right. the efficiency comes from the fact that the most used (forward) is only 1 character, and lesser used actions are more. 3blue1brown explains it very well ( https://youtu.be/l6DKRf-fAAM?si=0wl0j-8jQxhWdPC4&t=208 ). That video is also where I got the idea for this project....
|
1793112881.4651914
|
1793199281.4651914
|