|
29722
|
Pikne by @marksdude | Stardance
|
marksdude
|
0
|
115.02
|
0
|
[]
|
[{"post_id": 81292, "ts": "202 [{"post_id": 81292, "ts": "2026-10-20T17:46:43Z", "hours": 6.5956, "text": "I have finished version 0.1 of the firmware. It currently only has a simple menu to check some battery information. It relies on the ArduinoSMBus library for communicating with the BMS and the Adafruit SSD1306 and Adafruit GFX libraries for drawing on the OLED. I also made some wiring diagrams."}, {"post_id": 77053, "ts": "2026-10-05T14:31:05Z", "hours": 2.1569, "text": "Started work on the main firmware file. I will implement the more important stuff first, like the stuff needed for the power bank to function and most of the status displaying. Then, I will start work on the less important features, like more advanced safety (in case one of the BMS’s MOSFETs fail) and communication between the power bank and modules. I have currently made functions for reading the USB output current and for reading the battery charger’s status."}, {"post_id": 74074, "ts": "2026-09-26T16:57:15Z", "hours": 3.0439, "text": "I learned how to send data over UART to ESPHome. I will use this to send battery info from the power bank to the LED controller module, so it could be displayed in Home Assistant. How will it work? First the ATmega328P in the power bank will put all the values that will be sent into a single string. The string will look like this: bat:xx|current:xx|voltage:xx|usb_current:xx Then when the module receives it, ESPHome will run a lambda that splits the received string into separate strings for each value. They will then be converted into floats and sent to the corresponding sensor component. For testing, I used a XIAO ESP32-C3 to send dummy data to a revision 1 LED controller PCB. Next, I will work on module detection or the OLED interface for the power bank."}, {"post_id": 69799, "ts": "2026-09-17T20:11:47Z", "hours": 0.55, "text": "Took some pictures First I’m going to talk about funding. I’m currently waiting for funding. Hopefully I get it before Stardance ends. I requested funding for the power bank and the LED controller module, no flashlight module because I’m prioritizing getting the power bank working. It was also the most expensive module and would have required me to write even more firmware. Firmware development isn’t my strong suit. In the meantime I thought it would be a good idea to ask for permission to use my school’s 3D printers. Got the permission, printed the enclosure and took some pictures. Currently, it is basically just an empty enclosure, I put in the screws, OLED, pogo connector and the first revision non-working PCB to test how the parts would fit and so it would look better on the pictures. That’s all for now, thank you. I will be working on the firmware from now on."}, {"post_id": 66872, "ts": "2026-09-12T20:22:03Z", "hours": 8.9631, "text": "Been working on the BOM. It has been pretty boring. Every PCB has its own BOM and I have put the final price of every one of them into one main BOM so it will be easier to read. I also changed the inductor on the main power bank PCB to a one that fits the enclosure. I found one that has the needed current rating and is small enough so I didn’t have to change anything other than the inductor on the PCB."}, {"post_id": 60975, "ts": "2026-09-03T17:34:00Z", "hours": 1.1475, "text": "Not enough space yay!!! With a higher current inductor comes a bigger package which doesn’t fit. I have a few options now: Change the case Find a smaller connector that can handle the current use a different inductor that isn’t that tall Probably going to try to find a shorter inductor. I may be able to make the 5v regulator inductor smaller because I don’t think it needs a current rating that high and then maybe use the regained space for a wider and shorter inductor."}, {"post_id": 59573, "ts": "2026-09-01T13:56:19Z", "hours": 2.8336, "text": "Found an issue on the BMS board I found that I had connected the cell sense pins in the wrong order. I had connected them like this: B- to VC0, B+ to VC1 and cell 1 to VC2, but it should have been connected like this: B- to VC0, cell 1 to VC1 and B+ to VC2. I almost didn’t notice it because I didn’t check that part of it. I thought that I wouldn’t have made a mistake like that. This wasn’t the only issue with the sense connections the other was that I didn’t use kelvin connections for them. Without kelvin connections you will get less accurate readings because of voltage drop in the copper. I also improved it a little. I added cutouts for the current sensing resistor so I have separate pads for the sensing traces and the high current path. This should improve the current sensing accuracy which means I get a more accurate battery charge estimate. Then I added buttons for waking the IC up for programming and for shutting the output down so the battery can safely be removed. I moved the connector for the thermistors and the balance lead to the other side so the wires won’t have to run near a high current switching inductor which is on the main PCB. Thank you for reading!"}, {"post_id": 57572, "ts": "2026-08-29T19:15:51Z", "hours": 4.9053, "text": "Discovered some issues with the main PCB’s schematic when I was checking it before making the BOM First issue was that the inductor I chose for the battery charge IC (BQ25792) that also makes the 9, 12, 15 and 20V for USB PD had a current rating too little (guess that’s what happens if you design a PCB like this very inexperienced like I was 8 months ago) which would have limited it to around 30W output max, so this time I calculated the required rating myself (previously got the inductor from a reference design). Found that it should have been almost double the previous 7A for the 45W I initially aimed for, but if the IC can handle 60W then why not choose an inductor for 60W? So that’s what I did, the new inductor that has a rating of 15.8A should be able handle 60W. Second was that for some reason I tied the SDRV pin of the battery charge IC to the battery when instead it should have been tied to GND through a 1nf capacitor if not in use. I don’t know why I did it because the datasheet clearly says “Connect a 0402 / 50V / 1nF ceramic capacitor from SDRV to GND when the ship FET is not used.” This may have been the cause why the PCB didn’t work correctly when I made the first prototype of it around 2 months ago. I thought it was because of bad soldering, so I tried to resolder everything with a hot plate and burned bunch of my capacitors and probably some other components too. There were some other minor issues like me choosing footprints too small for some capacitors and not using the output current monitoring of the efuse. The efuse current monitoring isn’t really an issue but it is nice to see the exact output current on the display. I probably skipped it because I couldn’t understand how it worked back then. Thank you for reading!"}, {"post_id": 55106, "ts": "2026-08-26T15:45:34Z", "hours": 6.0947, "text": "Added logos to everything, fixed some alignment issues and added little holes for the module to go into to take stress away from the USB-C plug when dropped or twisted."}, {"post_id": 53222, "ts": "2026-08-23T17:43:03Z", "hours": 7.9406, "text": "Finished the flashlight module case! It will be CNCed out of aluminum, so it could act as a heatsink only the frame that holds the acrylic lens is 3D printed. I tried to fill up as much free space as possible with aluminum so the LEDs could run at max brightness for as long as possible. And… about the LiPo charger module I probably won’t make it I don’t think I have enough time since getting a grant and shipping of the PCBs will take a few weeks, so I may not have enough time to make firmware for everything so I’m skipping it for now."}, {"post_id": 49133, "ts": "2026-08-17T19:24:28Z", "hours": 3.1836, "text": "Started designing the case for the flashlight module. I had to move some stuff around on the driver PCB to make a cutout for the pogo connector. Also changed the connector for the LEDs from JST VH to JST XH for a smaller footprint."}, {"post_id": 47123, "ts": "2026-08-14T19:37:40Z", "hours": 4.6836, "text": "Finished the LED controller shell and made a logo I solved the pogo connector mounting problem by having the front of the upper part open and having the wall on the bottom part."}, {"post_id": 45372, "ts": "2026-08-11T19:45:09Z", "hours": 5.3339, "text": "I’ve been designing the shell for the LED controller module. I Currently have a problem with mounting the pogo connector. The issue is that the design I had in mind won’t work because I have no way of putting brass inserts into the screw holes so I have to find another way. Maybe I could have the top in 2 parts then I could put the brass inserts in."}, {"post_id": 44206, "ts": "2026-08-09T20:18:29Z", "hours": 3.9331, "text": "Finished the LED PCB for the flashlight module I couldn’t fit 40 LEDs like I said I would so there are 30 LEDs. It should still have close to 9000 lm max brightness (It will probably run only for a few seconds at max brightness before it will overheat). I’m just going to drive the LEDs little harder. I first wanted to have connectors for power and the thermistor but I found that JLCPCB only offers 1 layer aluminum core PCBs so I was limited to a 1 layer PCB and I couldn’t use THT connectors so instead I’m going to solder the wires straight to the board."}, {"post_id": 43450, "ts": "2026-08-08T18:21:27Z", "hours": 4.0211, "text": "Finished the LED driver board of the flashlight module! So that’s one of the PCBs done for the flashlight module will do the one that holds the LEDs next. I will be using about 40 of these LEDs so the max brightness will be around 9600 lm. I probably won’t be able to run it at max brightness for very long because it will (probably) hit thermal limits since the only cooling for it is the aluminum core PCB and maybe a CNC aluminum body."}, {"post_id": 42675, "ts": "2026-08-07T15:03:56Z", "hours": 3.1503, "text": "Started designing the flashlight module PCB! I finished the schematic for the driver board yesterday. It’s going to have 2 different PCBs one that does all the communication and driving of the LEDs and the other that is going to have all the LEDs on it. I think thermal management will be easier this way since the LEDs will get pretty hot. I also thought of a name for the project I’m going to name it Pikne which means lightning in estonian."}, {"post_id": 40833, "ts": "2026-08-04T16:44:28Z", "hours": 6.6417, "text": "Finished routing the PCB Now I just got to run it through drc and fix silkscreen. Then the LiPo charger module PCB should be finished."}, {"post_id": 39039, "ts": "2026-08-01T18:32:26Z", "hours": 4.9156, "text": "Finished the LiPo charger module schematic! I had some problems making the battery balancing circuitry because I didn’t know how to switch the balancing mosfets without frying the microcontroller. The problem was that the ground reference for the microcontroller and mosfets were different that basically means that for example the mosfet connected for balancing cell 3 of the battery will have its reference from cell 3 of the pack but the microcontroller will have its reference from the negative of the pack (cell 1) so for the mosfet its source will be at 0V (gnd), but for the microcontroller the mosfet’s source will be around 10.8V. That will mean if I try to turn on the mosfet with 3.3V from the microcontroller Vgs would equal -7.5V (3.3V - 10.8V) which means the mosfet will not turn on since for an N-channel mosfet Vgs has to be positive (atleast 2V for the one I used). First I wanted to use a P-channel mosfet to connect the positive side of the cell to the gate of the N-channel mosfet that would turn on the N-channel mosfet since Vgs would be around 3.6V (3.6V - 0V) but when the balancing mosfet will be off the P-channel mosfet’s gate will be pulled up to the cell voltage so for the mosfets its around 3.6V but for the microcontroller around 10.8v for cell 3 that will fry the microcontroller. Instead I used a octocoupler to connect the positive side of the cell to the N-channel mosfet. Like this I can turn the balancing mosfet on without having the high voltage on the pin of the microcontroller. That probably wasn’t a very good explanation. I’m not very good at explaining. Expected features of the module: Supports charging 1-4S LiPo and Li-Ion batteries Max charge current: 5-6A (1S), 4-4.5A (2S), 3A (3S), 2A (4S) If you actually read through all of this, thank you!"}, {"post_id": 35984, "ts": "2026-07-27T19:43:01Z", "hours": 2.7172, "text": "Finished the shell! This should mean that the hardware of the power bank is mostly finished I still have to test it and then also make firmware for it. Now I think I’m gonna start working more on the modules. I currently have these planned: A Led controller module that will integrate with Home Assistant and allow you to control led strips and stuff (I already have a PCB made for this one). A LiPo charger module that will allow you to charge up to 3s LiPos maybe even 4s A flashlight module (I don’t think I have to explain this) If you have any ideas on more modules I should make please comment them."}, {"post_id": 35430, "ts": "2026-07-26T20:40:28Z", "hours": 8.3822, "text": "Got done with the redesign of the front It took longer than I thought it would. Most of the time I spent fixing the stuff that broke after changing the shell size, but after 8h it’s done! Now I just gotta figure out the button placement again because the old place won’t work with the new design and do some finishing touches and then the shell should be ready. Also I didn’t need to redesign the BMS because the current design fit the new design no problem."}, {"post_id": 33690, "ts": "2026-07-23T20:18:58Z", "hours": 4.6111, "text": "I had almost finished the shell but I got an idea on how to make the power bank a little smaller (2 mm thinner and 4-10 mm shorter). So now I’m gonna redesign the BMS and hope that my idea will actually work without any clearance issues. And also I now have a github repo for the project so you can go take a look at the current PCB designs yourself."}, {"post_id": 32507, "ts": "2026-07-21T18:49:13Z", "hours": 7.6381, "text": "I finished the lower shell part! I ran into some issues with the button placement because I didn’t think about it when designing the main PCB. I placed the button too close to the edge of the PCB, leaving only about 3mm of space between the button and the wall of the shell, as shown in one of the pictures. Since I already have the PCB and I don’t want to order a new revision just to move the button, I will use a different button on the side of the power bank that I will solder to the original button pads with wires. It’s probably not the best solution, but it should work."}, {"post_id": 28833, "ts": "2026-07-15T10:39:10Z", "hours": 6.8114, "text": "So I had to resolder the main PCB because I ripped a pad off a IC while trying to reflow it. I learned the hard way that capacitors also don’t like being on a hot plate for too long. I ended up burning most of them. Now I have to wait for new capacitors before I can fully assemble the PCB."}, {"post_id": 22286, "ts": "2026-07-04T17:52:55Z", "hours": 4.7672, "text": "First devlog on my power bank. Just finished the battery holder in cad. Next will be the lower shell part."}]...
|
Title: Pikne by @marksdude | Stardance
Devlogs:
F Title: Pikne by @marksdude | Stardance
Devlogs:
First devlog on my power bank. Just finished the battery holder in cad. Next will be the lower shell part.
So I had to resolder the main PCB because I ripped a pad off a IC while trying to reflow it. I learned the hard way that capacitors also don’t like being on a hot plate for too long. I ended up burning most of them. Now I have to wait for new capacitors before I can fully assemble the PCB.
I finished the lower shell part! I ran into some issues with the button placement because I didn’t think about it when designing the main PCB. I placed the button too close to the edge of the PCB, leaving only about 3mm of space between the button and the wall of the shell, as shown in one of the pictures. Since I already have the PCB and I don’t want to order a new revision just to move the button, I will use a different button on the side of the power bank that I will solder to the original button pads with wires. It’s probably not the best solution, but it should work.
I had almost finished the shell but I got an idea on how to make the power bank a little smaller (2 mm thinner and 4-10 mm shorter). So now I’m gonna redesign the BMS and hope that my idea will actually work without any clearance issues. And also I now have a github repo for the project so you can go take a look at the current PCB designs yourself.
Got done with the redesign of the front It took longer than I thought it would. Most of the time I spent fixing the stuff that broke after changing the shell size, but after 8h it’s done! Now I just gotta figure out the button placement again because the old place won’t work with the new design and do some finishing touches and then the shell should be ready. Also I didn’t need to redesign the BMS because the current design fit the new design no problem.
Finished the shell! This should mean that the hardware of the power bank is mostly finished I still have to test it and then also make firmware for it. Now I think I’m gonna start working more on the modules. I currently have these planned: A Led controller module that will integrate with Home Assistant and allow you to control led strips and stuff (I already have a PCB made for this one). A LiPo charger module that will allow you to charge up to 3s LiPos maybe even 4s A flashlight module (I don’t think I have to explain this) If you have any ideas on more modules I should make please comment them.
Finished the LiPo charger module schematic! I had some problems making the battery balancing circuitry because I didn’t know how to switch the balancing mosfets without frying the microcontroller. The problem was that the ground reference for the microcontroller and mosfets were different that basically means that for example the mosfet connected for balancing cell 3 of the battery will have its reference from cell 3 of the pack but the microcontroller will have its reference from the negative of the pack (cell 1) so for the mosfet its source will be at 0V (gnd), but for the microcontroller the mosfet’s source will be around 10.8V. That will mean if I try to turn on the mosfet with 3.3V from the microcontroller Vgs would equal -7.5V (3.3V - 10.8V) which means the mosfet will not turn on since for an N-channel mosfet Vgs has to be positive (atleast 2V for the one I used). First I wanted to use a P-channel mosfet to connect the positive side of the cell to the gate of the N-channel mosfet that would turn on the N-channel mosfet since Vgs would be around 3.6V (3.6V - 0V) but when the balancing mosfet will be off the P-channel mosfet’s gate will be pulled up to the cell voltage so for the mosfets its around 3.6V but for the microcontroller around 10.8v for cell 3 that will fry the microcontroller. Instead I used a octocoupler to connect the positive side of the cell to the N-channel mosfet. Like this I can turn the balancing mosfet on without having the high voltage on the pin of the microcontroller. That probably wasn’t a very good explanation. I’m not very good at explaining. Expected features of the module: Supports charging 1-4S LiPo and Li-Ion batteries Max charge current: 5-6A (1S), 4-4.5A (2S), 3A (3S), 2A (4S) If you actually read through all of this, thank you!
Finished routing the PCB Now I just got to run it through drc and fix silkscreen. Then the LiPo charger module PCB should be finished.
Started designing the flashlight module PCB! I finished the schematic for the driver board yesterday. It’s going to have 2 different PCBs one that does all the communication and driving of the LEDs and the other that is going to have all the LEDs on it. I think thermal management will be easier this way since the LEDs will get pretty hot. I also thought of a name for the project I’m going to name it Pikne which means lightning in estonian.
Finished the LED driver board of the flashlight module! So that’s one of the PCBs done for the flashlight module will do the one that holds the LEDs next. I will be using about 40 of these LEDs so the max brightness will be around 9600 lm. I probably won’t be able to run it at max brightness for very long because it will (probably) hit thermal limits since the only cooling for it is the aluminum core PCB and maybe a CNC aluminum body.
Finished the LED PCB for the flashlight module I couldn’t fit 40 LEDs like I said I would so there are 30 LEDs. It should still have close to 9000 lm max brightness (It will probably run only for a few seconds at max brightness before it will overheat). I’m just going to drive the LEDs little harder. I first wanted to have connectors for power and the thermistor but I found that JLCPCB only offers 1 layer aluminum core PCBs so I was limited to a 1 layer PCB and I couldn’t use THT connectors so instead I’m going to solder the wires straight to the board.
I’ve been designing the shell for the LED controller module. I Currently have a problem with mounting the pogo connector. The issue is that the design I had in mind won’t work because I have no way of putting brass inserts into the screw holes so I have to find another way. Maybe I could have the top in 2 parts then I could put the brass inserts in.
Finished the LED controller shell and made a logo I solved the pogo connector mounting problem by having the front of the upper part open and having the wall on the bottom part.
Started designing the case for the flashlight module. I had to move some stuff around on the driver PCB to make a cutout for the pogo connector. Also changed the connector for the LEDs from JST VH to JST XH for a smaller footprint.
Finished the flashlight module case! It will be CNCed out of aluminum, so it could act as a heatsink only the frame that holds the acrylic lens is 3D printed. I tried to fill up as much free space as possible with aluminum so the LEDs could run at max brightness for as long as possible. And… about the LiPo charger module I probably won’t make it I don’t think I have enough time since getting a grant and shipping of the PCBs will take a few weeks, so I may not have enough time to make firmware for everything so I’m skipping it for now.
Added logos to everything, fixed some alignment issues and added little holes for the module to go into to take stress away from the USB-C plug when dropped or twisted.
Discovered some issues with the main PCB’s schematic when I was checking it before making the BOM First issue was that the inductor I chose for the battery charge IC (BQ25792) that also makes the 9, 12, 15 and 20V for USB PD had a current rating too little (guess that’s what happens if you design a PCB like this very inexperienced like I was 8 months ago) which would have limited it to around 30W output max, so this time I calculated the required rating myself (previously got the inductor from a reference design). Found that it should have been almost double the previous 7A for the 45W I initially aimed for, but if the IC can handle 60W then why not choose an inductor for 60W? So that’s what I did, the new inductor that has a rating of 15.8A should be able handle 60W. Second was that for some reason I tied the SDRV pin of the battery charge IC to the battery when instead it should have been tied to GND through a 1nf capacitor if not in use. I don’t know why I did it because the datasheet clearly says “Connect a 0402 / 50V / 1nF ceramic capacitor from SDRV to GND when the ship FET is not used.” This may have been the cause why the PCB didn’t work correctly when I made the first prototype of it around 2 months ago. I thought it was because of bad soldering, so I tried to resolder everything with a hot plate and burned bunch of my capacitors and probably some other components too. There were some other minor issues like me choosing footprints too small for some capacitors and not using the output current monitoring of the efuse. The efuse current monitoring isn’t really an issue but it is nice to see the exact output current on the display. I probably skipped it because I couldn’t understand how it worked back then. Thank you for reading!
Found an issue on the BMS board I found that I had connected the cell sense pins in the wrong order. I had connected them like this: B- to VC0, B+ to VC1 and cell 1 to VC2, but it should have been connected like this: B- to VC0, cell 1 to VC1 and B+ to VC2. I almost didn’t notice it because I didn’t check that part of it. I thought that I wouldn’t have made a mistake like that. This wasn’t the only issue with the sense connections the other was that I didn’t use kelvin connections for them. Without kelvin connections you will get less accurate readings because of voltage drop in the copper. I also improved it a little. I added cutouts for the current sensing resistor so I have separate pads for the sensing traces and the high current path. This should improve the current sensing accuracy which means I get a more accurate battery charge estimate. Then I added buttons for waking the IC up for programming and for shutting the output down so the battery can safely be removed. I moved the connector for the thermistors and the balance lead to the other side so the wires won’t have to run near a high current switching inductor which is on the main PCB. Thank you for reading!
Not enough space yay!!! With a higher current inductor comes a bigger package which doesn’t fit. I have a few options now: Change the case Find a smaller connector that can handle the current use a different inductor that isn’t that tall Probably going to try to find a shorter inductor. I may be able to make the 5v regulator inductor smaller because I don’t think it needs a current rating that high and then maybe use the regained space for a wider and shorter inductor.
Been working on the BOM. It has been pretty boring. Every PCB has its own BOM and I have put the final price of every one of them into one main BOM so it will be easier to read. I also changed the inductor on the main power bank PCB to a one that fits the enclosure. I found one that has the needed current rating and is small enough so I didn’t have to change anything other than the inductor on the PCB.
Took some pictures First I’m going to talk about funding. I’m currently waiting for funding. Hopefully I get it before Stardance ends. I requested funding for the power bank and the LED controller module, no flashlight module because I’m prioritizing getting the power bank working. It was also the most expensive module and would have required me to write even more firmware. Firmware development isn’t my strong suit. In the meantime I thought it would be a good idea to ask for permission to use my school’s 3D printers. Got the permission, printed the enclosure and took some pictures. Currently, it is basically just an empty enclosure, I put in the screws, OLED, pogo connector and the first revision non-working PCB to test how the parts would fit and so it would look better on the pictures. That’s all for now, thank you. I will be working on the firmware from now on.
I learned how to send data over UART to ESPHome. I will use this to send battery info from the power bank to the LED controller module, so it could be displayed in Home Assistant. How will it work? First the ATmega328P in the power bank will put all the values that will be sent into a single string. The string will look like this: bat:xx|current:xx|voltage:xx|usb_current:xx Then when the module receives it, ESPHome will run a lambda that splits the received string into separate strings for each value. They will then be converted into floats and sent to the corresponding sensor component. For testing, I used a XIAO ESP32-C3 to send dummy data to a revision 1 LED controller PCB. Next, I will work on module detection or the OLED interface for the power bank.
Started work on the main firmware file. I will implement the more important stuff first, like the stuff needed for the power bank to function and most of the status displaying. Then, I will start work on the less important features, like more advanced safety (in case one of the BMS’s MOSFETs fail) and communication between the power bank and modules. I have currently made functions for reading the USB output current and for reading the battery charger’s status.
I have finished version 0.1 of the firmware. It currently only has a simple menu to check some battery information. It relies on the ArduinoSMBus library for communicating with the BMS and the Adafruit SSD1306 and Adafruit GFX libraries for drawing on the OLED. I also made some wiring diagrams....
|
1793199060.5800586
|
1793803860.5800586
|
|
64411
|
SmolPadV1 by @mandeepswami | Stardance
|
mandeepswami
|
0
|
20.53
|
0
|
[]
|
[{"post_id": 81291, "ts": "202 [{"post_id": 81291, "ts": "2026-10-20T17:44:09Z", "hours": 1.8058, "text": "made a final hole for knob"}, {"post_id": 77536, "ts": "2026-10-07T11:14:10Z", "hours": 1.1169, "text": "Changed footprints as they were diffrent from the ones used in hacpad kit"}, {"post_id": 76607, "ts": "2026-10-04T04:53:11Z", "hours": 4.3603, "text": "Yeah i forgot to record half of the case , the firmware and the readme and BOM . Lost lot of time but i used Visual Studio code for the firmware and reame , bom so i didnt lose that time but now the project is complete and is looking good and now i will ship it"}, {"post_id": 73982, "ts": "2026-09-26T13:37:43Z", "hours": 3.3003, "text": "The case is almost complete just the backside is left and i am thingking of a adding a hackclub logo"}, {"post_id": 73548, "ts": "2026-09-25T11:25:27Z", "hours": 1.5836, "text": "Completed Routing"}, {"post_id": 73173, "ts": "2026-09-24T15:09:29Z", "hours": 2.8781, "text": "Currently routing copper traces"}, {"post_id": 72704, "ts": "2026-09-23T15:20:06Z", "hours": 1.2669, "text": "https://www.youtube.com/watch?v=8WXpGTIbxlQ using his guide to make it"}, {"post_id": 72648, "ts": "2026-09-23T12:45:04Z", "hours": 1.5669, "text": "Finnally started on my own hackpad . using https://wiki.ai03.com/books/pcb-design/page/pcb-guide-part-3---creating-the-mcu-schematic guide"}, {"post_id": 72304, "ts": "2026-09-22T16:58:58Z", "hours": 1.6147, "text": "Creating my case"}, {"post_id": 71845, "ts": "2026-09-21T17:11:04Z", "hours": 1.0333, "text": "Almost completed Designing your pcb part but there is a error i am currently fixing . am using ai to help me"}]...
|
Title: SmolPadV1 by @mandeepswami | Stardance
Dev Title: SmolPadV1 by @mandeepswami | Stardance
Devlogs:
Almost completed Designing your pcb part but there is a error i am currently fixing . am using ai to help me
Creating my case
Finnally started on my own hackpad . using https://wiki.ai03.com/books/pcb-design/page/pcb-guide-part-3---creating-the-mcu-schematic guide
https://www.youtube.com/watch?v=8WXpGTIbxlQ using his guide to make it
Currently routing copper traces
Completed Routing
The case is almost complete just the backside is left and i am thingking of a adding a hackclub logo
Yeah i forgot to record half of the case , the firmware and the readme and BOM . Lost lot of time but i used Visual Studio code for the firmware and reame , bom so i didnt lose that time but now the project is complete and is looking good and now i will ship it
Changed footprints as they were diffrent from the ones used in hacpad kit
made a final hole for knob...
|
1793062448.0813906
|
1793667248.0813906
|
|
69049
|
Wish sender by @sarthak_jnj | Stardance
|
sarthak_jnj
|
1
|
4.35
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-11T14:16:50Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "It is supposed to be a bot that automatically runs with your device startup, checks it’s own history and then executes the command to send a specific message & image to a defined contact on WhatsApp. I personally kept it at 9 days as a small fun project to tease a friend during a 9-day long indian traditional festival. The messages, phone number, file location and photos can easily be replaced. The difficulty for me was the new experience, making projects itself is a new thing for me I’ve recently added to my timeline, and i prefer hardware mostly so I’m not much experienced with software work and working with so many libraries, that’s why this project is more of a reminder that “you have to do this today too. just keep an eye if something goes wrong” rather than something dealing with itself in the background. What i am proud of can be that i learnt the JSON thing for this project solely but practice rather than any theory reading. and even tho i used an AI to guide me, i genuinely found a lot of troubles and came up with 3-4 creative workarounds by the end and completely made the structure myself even if i asked the specific commands from AI. For those trying this, it is easy to use as it is, just make sure you already have logged into WhatsApp, adjust the pixel locations according to your device as given in README.md, increase time.sleep() if you think your device/network is taking too long. adjust the file location before running it and don’t use it to actually mess with someone, it’s supposed to be something for a joke, not to irritate anyone (unless they’re a close friend)", "repo": "https://github.com/Sarthak-jnj/Just-a-wishing-bot", "demo": "https://github.com/Sarthak-jnj/Just-a-wishing-bot/blob/main/Demo.zip"}]...
|
[{"post_id": 81289, "ts": "202 [{"post_id": 81289, "ts": "2026-10-20T17:20:08Z", "hours": 0.3531, "text": "Just worked up with a needed demo to quick install the files."}, {"post_id": 78728, "ts": "2026-10-11T12:36:51Z", "hours": 1.4719, "text": "Devlog Post-final Yeah…..so i discovered some more issues. primarily the WhatsApp’s internal safeguard to prevent automated bots from attaching files. had to work around that. should definetly be final devlog tho."}, {"post_id": 78665, "ts": "2026-10-11T07:05:07Z", "hours": 0.4492, "text": "Devlog final: Finished it up and set the GitHub repository, although forgot to record that on lapse. run a test once to ensure it’s working too. Link on the project page"}, {"post_id": 78424, "ts": "2026-10-10T19:29:56Z", "hours": 1.8186, "text": "Devlog 1 Pretty much completed the thing; it took me more time than expected. Since it’s late, I’ll just finish up a few remaining adjustments tomorrow morning and post a GitHub repo. A basic WhatsApp bot that scans the date every time you turn your computer on and will send a wish to any defined number through WhatsApp, if you turn your pc on a second time the same day it won’t trigger. Feel free to use it as a meme with friends or genuinely with family (once i finish up tomorrow). Was kinda a micro-fun-project, nothing serious."}]...
|
Title: Wish sender by @sarthak_jnj | Stardance
De Title: Wish sender by @sarthak_jnj | Stardance
Devlogs:
Devlog 1 Pretty much completed the thing; it took me more time than expected. Since it’s late, I’ll just finish up a few remaining adjustments tomorrow morning and post a GitHub repo. A basic WhatsApp bot that scans the date every time you turn your computer on and will send a wish to any defined number through WhatsApp, if you turn your pc on a second time the same day it won’t trigger. Feel free to use it as a meme with friends or genuinely with family (once i finish up tomorrow). Was kinda a micro-fun-project, nothing serious.
Devlog final: Finished it up and set the GitHub repository, although forgot to record that on lapse. run a test once to ensure it’s working too. Link on the project page
Devlog Post-final Yeah…..so i discovered some more issues. primarily the WhatsApp’s internal safeguard to prevent automated bots from attaching files. had to work around that. should definetly be final devlog tho.
Just worked up with a needed demo to quick install the files.
Ships:
It is supposed to be a bot that automatically runs with your device startup, checks it’s own history and then executes the command to send a specific message & image to a defined contact on WhatsApp. I personally kept it at 9 days as a small fun project to tease a friend during a 9-day long indian traditional festival. The messages, phone number, file location and photos can easily be replaced. The difficulty for me was the new experience, making projects itself is a new thing for me I’ve recently added to my timeline, and i prefer hardware mostly so I’m not much experienced with software work and working with so many libraries, that’s why this project is more of a reminder that “you have to do this today too. just keep an eye if something goes wrong” rather than something dealing with itself in the background. What i am proud of can be that i learnt the JSON thing for this project solely but practice rather than any theory reading. and even tho i used an AI to guide me, i genuinely found a lot of troubles and came up with 3-4 creative workarounds by the end and completely made the structure myself even if i asked the specific commands from AI. For those trying this, it is easy to use as it is, just make sure you already have logged into WhatsApp, adjust the pixel locations according to your device as given in README.md, increase time.sleep() if you think your device/network is taking too long. adjust the file location before running it and don’t use it to actually mess with someone, it’s supposed to be something for a joke, not to irritate anyone (unless they’re a close friend)...
|
1793217335.4570804
|
1793303735.4570804
|
|
70586
|
Stock Return Calculator by @dillonnagar | Stardanc Stock Return Calculator by @dillonnagar | Stardance...
|
dillonnagar
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T23:25:53Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Stock Return Calculator that lets users enter a stock’s purchase price, selling price, and number of shares to calculate their total profit or loss and percentage return. The most challenging part was getting the JavaScript to work correctly. I ran into a few HTML errors, and initially the calculate button wasn’t doing anything. I debugged the error and figuered out what was wrong and fixed it. I’m proud that I got a working website online and learned how to code with HTML and JavaScript. To test it, enter your purchase price, your selling price, and however many shares you want. Click Calculate Returns, and it should show your profit and return.", "repo": "https://github.com/Manateek1/stock-return-calculator", "demo": "https://manateek1.github.io/stock-return-calculator/"}]...
|
[{"post_id": 81288, "ts": "202 [{"post_id": 81288, "ts": "2026-10-20T16:59:24Z", "hours": 1.3247, "text": "Today I worked on my Stock Return Calculator, a website that calculates stock investment profits and percentage returns. I had trouble with the design but learned how to use CSS to make it look good. Also the calculation wouldn’t work so I had to debug it and figued out what was wrong with the logic."}]...
|
Title: Stock Return Calculator by @dillonnagar | S Title: Stock Return Calculator by @dillonnagar | Stardance
Devlogs:
Today I worked on my Stock Return Calculator, a website that calculates stock investment profits and percentage returns. I had trouble with the design but learned how to use CSS to make it look good. Also the calculation wouldn’t work so I had to debug it and figued out what was wrong with the logic.
Ships:
I made a Stock Return Calculator that lets users enter a stock’s purchase price, selling price, and number of shares to calculate their total profit or loss and percentage return. The most challenging part was getting the JavaScript to work correctly. I ran into a few HTML errors, and initially the calculate button wasn’t doing anything. I debugged the error and figuered out what was wrong and fixed it. I’m proud that I got a working website online and learned how to code with HTML and JavaScript. To test it, enter your purchase price, your selling price, and however many shares you want. Click Calculate Returns, and it should show your profit and return....
|
1793138329.237509
|
1793224729.237509
|
|
60250
|
Lets Learn Algebra by @frenchwizz | Stardance
|
frenchwizz
|
0
|
13.71
|
0
|
[]
|
[{"post_id": 81285, "ts": "202 [{"post_id": 81285, "ts": "2026-10-20T16:47:07Z", "hours": 0.3667, "text": "(Supposed to be 2 hrs) Added a Next.JS changelog Currently hosted at frenchwizz.hackclub.app"}, {"post_id": 81036, "ts": "2026-10-19T17:04:17Z", "hours": 6.7322, "text": "I moved my chat app over to TS with Supabase server proxy."}, {"post_id": 64956, "ts": "2026-09-09T18:10:10Z", "hours": 6.6072, "text": "I started to make a blog!"}]...
|
Title: Lets Learn Algebra by @frenchwizz | Stardan Title: Lets Learn Algebra by @frenchwizz | Stardance
Devlogs:
I started to make a blog!
I moved my chat app over to TS with Supabase server proxy.
(Supposed to be 2 hrs) Added a Next.JS changelog Currently hosted at frenchwizz.hackclub.app...
|
1793033360.6008203
|
1793638160.6008203
|
|
68827
|
FortWare Game by @tanay_savarna | Stardance
|
tanay_savarna
|
0
|
1.56
|
0
|
[]
|
[{"post_id": 81283, "ts": "202 [{"post_id": 81283, "ts": "2026-10-20T16:43:40Z", "hours": 0.5281, "text": "Devlog 2: Newer title-screen for the game! After looking through for more inspiration and looking at other’s projects I felt like the title looked too basic and didn’t symbolize the funny aspect of the game (that is still in progress) so I wanted to make a completely new version with my favourite character fishtick. Also I have started creating the level scenes so be ready for the best game in existence!!!"}, {"post_id": 80948, "ts": "2026-10-19T10:43:59Z", "hours": 1.0325, "text": "Devlog 1: Title-screen for the game. I started by doing what the guide actually told me to but I soon realised it looked kinda boring and I needed to add a cool video-game aspect that made it unique like the other cool ones i checked for inspiration. So then I landed on the idea of Fortnite and this is the first draft of the title screen, hope you guys like it!"}]...
|
Title: FortWare Game by @tanay_savarna | Stardance Title: FortWare Game by @tanay_savarna | Stardance
Devlogs:
Devlog 1: Title-screen for the game. I started by doing what the guide actually told me to but I soon realised it looked kinda boring and I needed to add a cool video-game aspect that made it unique like the other cool ones i checked for inspiration. So then I landed on the idea of Fortnite and this is the first draft of the title screen, hope you guys like it!
Devlog 2: Newer title-screen for the game! After looking through for more inspiration and looking at other’s projects I felt like the title looked too basic and didn’t symbolize the funny aspect of the game (that is still in progress) so I wanted to make a completely new version with my favourite character fishtick. Also I have started creating the level scenes so be ready for the best game in existence!!!...
|
1793126987.4703832
|
1793731787.4703832
|
|
70655
|
handybits by @aryanscode | Stardance
|
aryanscode
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T16:41:39Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "yay shipped", "repo": "https://github.com/aryanscodingden/handybits", "demo": "https://handybits.vercel.app"}]...
|
[{"post_id": 81281, "ts": "202 [{"post_id": 81281, "ts": "2026-10-20T16:40:07Z", "hours": 4.2658, "text": "I was very sketchy about uploading random shit to websites, so I coded a toolkit where, locally, you can upload stuff, and it can be done all locally. For example: remove background, sign a PDF. everything that every other tool on the website on the internet needs. It uploads the files to a server and then to the dark web, so I didn’t want that. I just coded this over the weekend."}]...
|
Title: handybits by @aryanscode | Stardance
Devlo Title: handybits by @aryanscode | Stardance
Devlogs:
I was very sketchy about uploading random shit to websites, so I coded a toolkit where, locally, you can upload stuff, and it can be done all locally. For example: remove background, sign a PDF. everything that every other tool on the website on the internet needs. It uploads the files to a server and then to the dark web, so I didn’t want that. I just coded this over the weekend.
Ships:
yay shipped...
|
1793155960.0772734
|
1793242360.0772734
|
|
16025
|
MediaPipe Hand Mouse but In java by @ShauryaMathur MediaPipe Hand Mouse but In java by @ShauryaMathur | Stardance...
|
ShauryaMathur
|
1
|
8.0
|
85
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T16:08:02Z", "hours": 8.0, "multiplier": 10.19, "payout": 85, "blessing": "neutral", "text": "StarkMouse - High-Performance Hand Tracking System AP Computer Science A Final Project StarkMouse is an advanced gesture-controlled cursor controller that allows users to operate their computer mouse hands-free. Using MediaPipe and OpenCV on a native C++ backend combined with a Java Swing overlay HUD, the application tracks hand movements, applies coordinate smoothing, and detects finger-pinch gestures to trigger mouse actions. 1. How to Use the Program Prerequisites Java Runtime Environment (JRE) / JDK 17 or higher A working Webcam Windows OS (64-bit) for native dynamic library compatibility ( stark_mouse_jni.dll and opencv_world3416.dll must be in the project root directory) How to Build and Run To build the project and execute the MainApp entry point: Open a terminal in the root directory. Compile and package the application: mvn package Run the generated executable JAR containing all dependencies: java -jar target/stark-mouse-1.0.0-jar-with-dependencies.jar Controls and Gestures Mouse Movement : Hold your hand in front of the webcam. Your cursor will follow the position of the base of your middle finger This anchor was specifically chosen to prevent cursor jumping when fingers pinch. Left Click / Click-and-Drag : Pinch your Thumb and Index Finger together. Releasing the pinch releases the mouse button. Right Click : Pinch your Thumb and Middle Finger together. Mouse Scrolling (Scroll Mode) : Pinch your Thumb and Pinky Finger together. While holding the pinch, move your hand vertically: Moving your hand up scrolls up. Moving your hand down scrolls down. While scrolling, mouse cursor movement is locked to prevent cursor drift. Toggle HUD Overlay (Ctrl+Shift+G) : Press this global hotkey to show or hide the Swing HUD window displaying the camera feed and landmarks. Repositioning HUD : Click and drag anywhere on the HUD panel to move the floating window across your desktop screen. 2. Problems Encountered During Development The “java being anti cv” bottleneck : Initially we planned on using a method called convex hulling to detect fingers as before libraries such as mediapipe that was a common finger detection method. We then realised that convexHull was terrible and we became primary sources as to why libraries such as MediaPipe have been developed. We then tried to bend the rules of the project by calling a python script running mediapipe detection. Our idea was quickly shut down. Our final option was taking the c++ library that was wrapped for python and creating a Java Native Interface from it using a tool called bezelisk. This process took a total of 5 hours, 10 gigabites of Shaurya Mathur’s hotspot and our mental stanities. Once we finally got bezel instealled and working with our library we learned that c++ itself is annoying. Initially, running the Mediapipe tracker and the JNI JVM invocation on the same thread blocked the Swing event thread, resulting in a frozen UI. We resolved this by spawning a separate native execution thread ( std::thread ) in the DLL, calling AttachCurrentThread to register it with the Java VM, and passing frames asynchronously.", "repo": "https://github.com/T-Perm/Ap-CSA-Final-Jarvis", "demo": "https://github.com/T-Perm/Ap-CSA-Final-Jarvis/releases/tag/v1.0.0"}]...
|
[{"post_id": 8128, "ts": "2026 [{"post_id": 8128, "ts": "2026-06-13T15:57:43Z", "hours": 2.9525, "text": "I finally finished the project and submitted it to my teacher. I genuinely got a 95% compared to others who had just recreated games as their project. I’m not mad but rather disappointed that lack of creativity is being celebrated. Its okay tho because here are the changes Change 1: No detecting how many fingers are held up but rather distance between fingers Change 2: JavaSwing UI with a jarvis style bootup Change 3: fixed double clicking and related problems"}, {"post_id": 6531, "ts": "2026-06-10T23:50:19Z", "hours": 5.3514, "text": "My CSA final project is due in an hour. Instead of working on a game in (Trigger warning) java s*ing I’m building an app that turns your gestures into mouse commands. I started with a group of 3 but I have been the only one who has done any work. Its due in 6 hours wish me luck"}]...
|
Title: MediaPipe Hand Mouse but In java by @Shaury Title: MediaPipe Hand Mouse but In java by @ShauryaMathur | Stardance
Devlogs:
My CSA final project is due in an hour. Instead of working on a game in (Trigger warning) java s*ing I’m building an app that turns your gestures into mouse commands. I started with a group of 3 but I have been the only one who has done any work. Its due in 6 hours wish me luck
I finally finished the project and submitted it to my teacher. I genuinely got a 95% compared to others who had just recreated games as their project. I’m not mad but rather disappointed that lack of creativity is being celebrated. Its okay tho because here are the changes Change 1: No detecting how many fingers are held up but rather distance between fingers Change 2: JavaSwing UI with a jarvis style bootup Change 3: fixed double clicking and related problems
Ships:
StarkMouse - High-Performance Hand Tracking System AP Computer Science A Final Project StarkMouse is an advanced gesture-controlled cursor controller that allows users to operate their computer mouse hands-free. Using MediaPipe and OpenCV on a native C++ backend combined with a Java Swing overlay HUD, the application tracks hand movements, applies coordinate smoothing, and detects finger-pinch gestures to trigger mouse actions. 1. How to Use the Program Prerequisites Java Runtime Environment (JRE) / JDK 17 or higher A working Webcam Windows OS (64-bit) for native dynamic library compatibility ( stark_mouse_jni.dll and opencv_world3416.dll must be in the project root directory) How to Build and Run To build the project and execute the MainApp entry point: Open a terminal in the root directory. Compile and package the application: mvn package Run the generated executable JAR containing all dependencies: java -jar target/stark-mouse-1.0.0-jar-with-dependencies.jar Controls and Gestures Mouse Movement : Hold your hand in front of the webcam. Your cursor will follow the position of the base of your middle finger This anchor was specifically chosen to prevent cursor jumping when fingers pinch. Left Click / Click-and-Drag : Pinch your Thumb and Index Finger together. Releasing the pinch releases the mouse button. Right Click : Pinch your Thumb and Middle Finger together. Mouse Scrolling (Scroll Mode) : Pinch your Thumb and Pinky Finger together. While holding the pinch, move your hand vertically: Moving your hand up scrolls up. Moving your hand down scrolls down. While scrolling, mouse cursor movement is locked to prevent cursor drift. Toggle HUD Overlay (Ctrl+Shift+G) : Press this global hotkey to show or hide the Swing HUD window displaying the camera feed and landmarks. Repositioning HUD : Click and drag anywhere on the HUD panel to move the floating window across your desktop screen. 2. Problems Encountered During Development The “java being anti cv” bottleneck : Initially we planned on using a method called convex hulling to detect fingers as before libraries such as mediapipe that was a common finger detection method. We then realised that convexHull was terrible and we became primary sources as to why libraries such as MediaPipe have been developed. We then tried to bend the rules of the project by calling a python script running mediapipe detection. Our idea was quickly shut down. Our final option was taking the c++ library that was wrapped for python and creating a Java Native Interface from it using a tool called bezelisk. This process took a total of 5 hours, 10 gigabites of Shaurya Mathur’s hotspot and our mental stanities. Once we finally got bezel instealled and working with our library we learned that c++ itself is annoying. Initially, running the Mediapipe tracker and the JNI JVM invocation on the same thread blocked the Swing event thread, resulting in a frozen UI. We resolved this by spawning a separate native execution thread ( std::thread ) in the DLL, calling AttachCurrentThread to register it with the Java VM, and passing frames asynchronously....
|
1793123514.491949
|
1793209914.491949
|
|
70649
|
Stardance Setup by @prathameshpvp | Stardance
|
prathameshpvp
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T16:15:04Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "PRATHAMESH.EXE — building my own little corner of the internet ✦ There’s something special about creating a place on the internet that feels entirely your own. PRATHAMESH.EXE started with a simple idea: what if my portfolio felt less like a résumé and more like stepping into a tiny digital world? Inspired by the early internet, Y2K aesthetics, and old-school terminal interfaces, I’ve been shaping it with dark backgrounds, neon pink and purple, pixel typography, and a boot sequence that makes opening a website feel a little like starting up a computer from another era. But I don’t want it to be nostalgia for the sake of nostalgia. I want it to grow with me — a home for my projects, experiments, ideas, and everything I’m still figuring out how to build. Along the way, I’m learning that good design is about more than making something look interesting. Every animation, font, and interaction should have a purpose. There’s still plenty to build, break, rethink, and improve. And honestly, that’s my favourite part. For now, the system is booting.", "repo": "https://github.com/prathameshparkhi/personal-website", "demo": "https://coeus-exoplanet-classifier.streamlit.app/"}]...
|
[{"post_id": 81277, "ts": "202 [{"post_id": 81277, "ts": "2026-10-20T16:11:28Z", "hours": 2.0761, "text": "I wanted to make my personal website feel less like a standard portfolio and more like a little digital world of its own. I went with a Y2K-inspired aesthetic, using a black background, neon pink and purple accents, Press Start 2P, and Space Mono to create that retro terminal feel. I also worked on the startup sequence, with messages like “INITIALISING SYSTEM…” and “LOADING STARFIELD…”, alongside a terminal-inspired layout for blog posts and development logs. One of the main things I’m trying to get right is balancing the visual effects with usability. I want the website to have personality without becoming cluttered or difficult to navigate. Next up: refining the responsive layout, polishing the interactions, and making the project sections feel more complete."}]...
|
Title: Stardance Setup by @prathameshpvp | Stardan Title: Stardance Setup by @prathameshpvp | Stardance
Devlogs:
I wanted to make my personal website feel less like a standard portfolio and more like a little digital world of its own. I went with a Y2K-inspired aesthetic, using a black background, neon pink and purple accents, Press Start 2P, and Space Mono to create that retro terminal feel. I also worked on the startup sequence, with messages like “INITIALISING SYSTEM…” and “LOADING STARFIELD…”, alongside a terminal-inspired layout for blog posts and development logs. One of the main things I’m trying to get right is balancing the visual effects with usability. I want the website to have personality without becoming cluttered or difficult to navigate. Next up: refining the responsive layout, polishing the interactions, and making the project sections feel more complete.
Ships:
PRATHAMESH.EXE — building my own little corner of the internet ✦ There’s something special about creating a place on the internet that feels entirely your own. PRATHAMESH.EXE started with a simple idea: what if my portfolio felt less like a résumé and more like stepping into a tiny digital world? Inspired by the early internet, Y2K aesthetics, and old-school terminal interfaces, I’ve been shaping it with dark backgrounds, neon pink and purple, pixel typography, and a boot sequence that makes opening a website feel a little like starting up a computer from another era. But I don’t want it to be nostalgia for the sake of nostalgia. I want it to grow with me — a home for my projects, experiments, ideas, and everything I’m still figuring out how to build. Along the way, I’m learning that good design is about more than making something look interesting. Every animation, font, and interaction should have a purpose. There’s still plenty to build, break, rethink, and improve. And honestly, that’s my favourite part. For now, the system is booting....
|
1793155957.1793702
|
1793242357.1793702
|
|
69462
|
My awesome HackPad! by @Leon_know | Stardance
|
Leon_know
|
0
|
26.35
|
0
|
[]
|
[{"post_id": 81276, "ts": "202 [{"post_id": 81276, "ts": "2026-10-20T16:10:23Z", "hours": 3.1183, "text": "Finished my 3D design. What do you think? :)"}, {"post_id": 81103, "ts": "2026-10-19T21:30:59Z", "hours": 1.8056, "text": "I made a weele."}, {"post_id": 80809, "ts": "2026-10-18T20:57:53Z", "hours": 4.42, "text": "My Head Hurts… Spent a lot of time just learning Fusion today, and I think I’m going to have a fever tomorrow."}, {"post_id": 80512, "ts": "2026-10-17T22:48:27Z", "hours": 1.9822, "text": "Designing, designing, designing, … Designing the 2D sketch of the 3D model and that’s it."}, {"post_id": 80255, "ts": "2026-10-16T23:11:10Z", "hours": 1.6958, "text": "It’s 1am, you should go to sleep I spent the first hours of the morning putting switches and keycaps on my board in Fusion. It took me some time to get it set up and used to it, but I’m getting the hang of it."}, {"post_id": 80212, "ts": "2026-10-16T19:18:10Z", "hours": 0.7761, "text": "FINISHED THE PCB Finally finished the PCB! It took some time, but it was worth the effort; I can’t find a single flaw with it."}, {"post_id": 80008, "ts": "2026-10-15T23:12:02Z", "hours": 4.7556, "text": "Still PCB designing Almost finished with the board. It took me about 12 hours to get to this point, but I’m happy with the outcome. I really took my time with tracing, but it looks amazing. I hope 3D modeling is going to go a bit faster, though."}, {"post_id": 79750, "ts": "2026-10-15T08:41:57Z", "hours": 2.1381, "text": "I continued with my PCB by making traces. Next up is making the shape of the board and creating the ground plane, but I still need to figure out how to do that."}, {"post_id": 79658, "ts": "2026-10-14T22:59:46Z", "hours": 3.3756, "text": "Today, I was working on the PCB for my design. I concluded that I won’t have enough ports to use two rotary encoders, so I removed one. I also updated the design accordingly. In the end, I finished the schematic and started routing the PCB. I still have to figure out how to make a breakout board. Does anyone have a good tutorial or tips?"}, {"post_id": 79487, "ts": "2026-10-14T08:22:30Z", "hours": 0.8953, "text": "I was making an electrical schematic for my HackPad, and I ran into an issue when connecting all the components to the controller, as there are not enough pins. I have: dispaly(2 pins), 3x3 matrix(6 pins), rgb leds(1 pin) and 2 rotary encoders(4 pins, the buttons are in the matrix). The controler has 11 data pins but I need 13. Can someone help?"}, {"post_id": 79402, "ts": "2026-10-13T20:26:58Z", "hours": 0.9164, "text": "Finishing the day by creating an overall design for the hackPad to give myself an idea of how to build the PCB and case. I ended up with the idea of making a breakout board that I can connect with some wires to the main board and mount one of the rotary encoders on the side. Also im wondering what you guys use to make quick design, personally use draw.io ."}, {"post_id": 79363, "ts": "2026-10-13T17:27:33Z", "hours": 0.4692, "text": "My first PCB design."}]...
|
Title: My awesome HackPad! by @Leon_know | Stardan Title: My awesome HackPad! by @Leon_know | Stardance
Devlogs:
My first PCB design.
Finishing the day by creating an overall design for the hackPad to give myself an idea of how to build the PCB and case. I ended up with the idea of making a breakout board that I can connect with some wires to the main board and mount one of the rotary encoders on the side. Also im wondering what you guys use to make quick design, personally use draw.io .
I was making an electrical schematic for my HackPad, and I ran into an issue when connecting all the components to the controller, as there are not enough pins. I have: dispaly(2 pins), 3x3 matrix(6 pins), rgb leds(1 pin) and 2 rotary encoders(4 pins, the buttons are in the matrix). The controler has 11 data pins but I need 13. Can someone help?
Today, I was working on the PCB for my design. I concluded that I won’t have enough ports to use two rotary encoders, so I removed one. I also updated the design accordingly. In the end, I finished the schematic and started routing the PCB. I still have to figure out how to make a breakout board. Does anyone have a good tutorial or tips?
I continued with my PCB by making traces. Next up is making the shape of the board and creating the ground plane, but I still need to figure out how to do that.
Still PCB designing Almost finished with the board. It took me about 12 hours to get to this point, but I’m happy with the outcome. I really took my time with tracing, but it looks amazing. I hope 3D modeling is going to go a bit faster, though.
FINISHED THE PCB Finally finished the PCB! It took some time, but it was worth the effort; I can’t find a single flaw with it.
It’s 1am, you should go to sleep I spent the first hours of the morning putting switches and keycaps on my board in Fusion. It took me some time to get it set up and used to it, but I’m getting the hang of it.
Designing, designing, designing, … Designing the 2D sketch of the 3D model and that’s it.
My Head Hurts… Spent a lot of time just learning Fusion today, and I think I’m going to have a fever tomorrow.
I made a weele.
Finished my 3D design. What do you think? :)...
|
1792849851.7541702
|
1793454651.7541702
|
|
69847
|
Pet by @singhshiv3108 | Stardance
|
singhshiv3108
|
0
|
3.06
|
0
|
[]
|
[{"post_id": 81270, "ts": "202 [{"post_id": 81270, "ts": "2026-10-20T15:33:07Z", "hours": 1.57, "text": "DEVLOG3: In this devlog i added dragging, idling, flipping at the border , text and shaders."}, {"post_id": 80957, "ts": "2026-10-19T11:53:15Z", "hours": 1.0147, "text": "DEVLOG 2: Added my own sprite and movement, it took me time to finalize sprite ( i made several) and also my movement code wasnt working later i realised i didnt even attached the script 😭."}, {"post_id": 80165, "ts": "2026-10-16T14:19:00Z", "hours": 0.4753, "text": "DEVLOG 1: In this log , I did basic setup and added sprite (temporary sprite I am looking forward to make my own currently I have no idea what theme I should select) and also I added animation and collision body."}]...
|
Title: Pet by @singhshiv3108 | Stardance
Devlogs: Title: Pet by @singhshiv3108 | Stardance
Devlogs:
DEVLOG 1: In this log , I did basic setup and added sprite (temporary sprite I am looking forward to make my own currently I have no idea what theme I should select) and also I added animation and collision body.
DEVLOG 2: Added my own sprite and movement, it took me time to finalize sprite ( i made several) and also my movement code wasnt working later i realised i didnt even attached the script 😭.
DEVLOG3: In this devlog i added dragging, idling, flipping at the border , text and shaders....
|
1792860518.3279607
|
1793465318.3279607
|
|
6278
|
Card it! by @Potyi | Stardance
|
Potyi
|
0
|
72.17
|
0
|
[]
|
[{"post_id": 81268, "ts": "202 [{"post_id": 81268, "ts": "2026-10-20T15:25:56Z", "hours": 2.9333, "text": "a lot of bug fix, added difficulties easy - 5 discards medium - 3 discards hard - 1 discard started working on music"}, {"post_id": 70654, "ts": "2026-09-19T15:02:50Z", "hours": 3.8, "text": "added more sounds, click sound, settings menu added, bug fixes"}, {"post_id": 65949, "ts": "2026-09-11T12:52:58Z", "hours": 8.2, "text": "added sounds to almost everything, a lot of big mug fixes, card animation added"}, {"post_id": 62363, "ts": "2026-09-05T18:08:43Z", "hours": 4.5667, "text": "added a console where you can control a lot of stuff with commands, more commands will come later made some bug fixes and completly reworked how the card playing mechanic worked so its now more stable and you can select cards instead of instant playing them out, wil add animation to that later"}, {"post_id": 60842, "ts": "2026-09-03T13:53:49Z", "hours": 4.4667, "text": "Added animation to the non attack cards after they played, some bug fixes"}, {"post_id": 57603, "ts": "2026-08-29T20:10:40Z", "hours": 5.2, "text": "added different types of card effects, card menu, great animation to the card menu"}, {"post_id": 52624, "ts": "2026-08-22T20:54:40Z", "hours": 5.1667, "text": "added new attack animation, fixed bugs like you can play out a card after u just played out one, and enemy now attacks and the game cycles"}, {"post_id": 47527, "ts": "2026-08-15T14:25:42Z", "hours": 5.6, "text": "i added animations to the attacks"}, {"post_id": 33664, "ts": "2026-07-23T19:20:57Z", "hours": 8.4667, "text": "-A lot of bug fixes -enemylevel based enemy damage, the bigger the level of the enemy is, the more damage it deals -levelup -shop where you can buy card level ups -gold earning -game cycle -timer -you can defeat the enemy if the timer runs out and you have more hp or killing, if you have less hp when the timer runs out you lose, or if it kills you, if you have same hp when the timer runs out then plus 30sec -started making animations for the attacks sorry i only uploaded a picture of the shop but i wasnt able to post a video (if you have any idea that would make the game more fun please tell me it)"}, {"post_id": 25257, "ts": "2026-07-09T12:34:18Z", "hours": 3.6333, "text": "i added animations to all the characters, and the animations play during the game on interact (yet only the attack animation works but later i add all)"}, {"post_id": 16997, "ts": "2026-06-27T16:05:46Z", "hours": 3.0, "text": "some bug fixes and added that if you start to fight with an enemy the chosen enemy will spawn"}, {"post_id": 14324, "ts": "2026-06-23T12:40:15Z", "hours": 3.0333, "text": "i added a new ui for when you start a run as you can see you can only play with the enemies that you unlocked"}, {"post_id": 7673, "ts": "2026-06-12T20:24:06Z", "hours": 3.9, "text": "Using bug fixed, after you use a card you get a new one i know it took long but i just didnt knew how to do it and spent hours finding out what even is the problem"}, {"post_id": 4144, "ts": "2026-06-07T10:56:13Z", "hours": 3.4, "text": "a debugged the the menu and added that you can start the game, and the deck shuffles and gives you the first two cards from it, and you can “use” those cards"}, {"post_id": 3404, "ts": "2026-06-06T09:56:42Z", "hours": 2.6333, "text": "i added that you can move anything on the screen and interact with them, and started making the ui i know it took me a long time but i learned how to do it while making it so yea"}, {"post_id": 2733, "ts": "2026-06-05T14:20:16Z", "hours": 0.9, "text": "i added new use cards"}, {"post_id": 2314, "ts": "2026-06-04T18:55:16Z", "hours": 1.5333, "text": "i added use card designs and made a simple drag and drop system but thats temporary so i dont post it yet"}, {"post_id": 2123, "ts": "2026-06-04T13:33:41Z", "hours": 1.4, "text": "i added new character cards, that will be shown during fight"}, {"post_id": 1580, "ts": "2026-06-03T18:00:38Z", "hours": 0.3333, "text": "i made a template card that later i can easily modify to other versions"}]...
|
Title: Card it! by @Potyi | Stardance
Devlogs:
i Title: Card it! by @Potyi | Stardance
Devlogs:
i made a template card that later i can easily modify to other versions
i added new character cards, that will be shown during fight
i added use card designs and made a simple drag and drop system but thats temporary so i dont post it yet
i added new use cards
i added that you can move anything on the screen and interact with them, and started making the ui i know it took me a long time but i learned how to do it while making it so yea
a debugged the the menu and added that you can start the game, and the deck shuffles and gives you the first two cards from it, and you can “use” those cards
Using bug fixed, after you use a card you get a new one i know it took long but i just didnt knew how to do it and spent hours finding out what even is the problem
i added a new ui for when you start a run as you can see you can only play with the enemies that you unlocked
some bug fixes and added that if you start to fight with an enemy the chosen enemy will spawn
i added animations to all the characters, and the animations play during the game on interact (yet only the attack animation works but later i add all)
-A lot of bug fixes -enemylevel based enemy damage, the bigger the level of the enemy is, the more damage it deals -levelup -shop where you can buy card level ups -gold earning -game cycle -timer -you can defeat the enemy if the timer runs out and you have more hp or killing, if you have less hp when the timer runs out you lose, or if it kills you, if you have same hp when the timer runs out then plus 30sec -started making animations for the attacks sorry i only uploaded a picture of the shop but i wasnt able to post a video (if you have any idea that would make the game more fun please tell me it)
i added animations to the attacks
added new attack animation, fixed bugs like you can play out a card after u just played out one, and enemy now attacks and the game cycles
added different types of card effects, card menu, great animation to the card menu
Added animation to the non attack cards after they played, some bug fixes
added a console where you can control a lot of stuff with commands, more commands will come later made some bug fixes and completly reworked how the card playing mechanic worked so its now more stable and you can select cards instead of instant playing them out, wil add animation to that later
added sounds to almost everything, a lot of big mug fixes, card animation added
added more sounds, click sound, settings menu added, bug fixes
a lot of bug fix, added difficulties easy - 5 discards medium - 3 discards hard - 1 discard started working on music...
|
1792781291.7578242
|
1793386091.7578242
|
|
68810
|
reflexclock by @akshat_singh1738 | Stardance
|
akshat_singh1738
|
0
|
0.7
|
0
|
[]
|
[{"post_id": 81266, "ts": "202 [{"post_id": 81266, "ts": "2026-10-20T15:24:40Z", "hours": 0.7008, "text": "devlog 1: worked on the pcb design for my relfex test based alarm . So the idea for my alarm is that you need to take a quick reflex test to stop it and this wakes you up fully! Today i worked on learning kicad and how pcb design works and then designed the pcb with the help of the guide!"}]...
|
Title: reflexclock by @akshat_singh1738 | Stardanc Title: reflexclock by @akshat_singh1738 | Stardance
Devlogs:
devlog 1: worked on the pcb design for my relfex test based alarm . So the idea for my alarm is that you need to take a quick reflex test to stop it and this wakes you up fully! Today i worked on learning kicad and how pcb design works and then designed the pcb with the help of the guide!...
|
1793126955.6026976
|
1793731755.6026976
|
|
67427
|
Coldline-inspired Alarm by @nastavial | Stardance
|
nastavial
|
0
|
56.7
|
0
|
[]
|
[{"post_id": 81258, "ts": "202 [{"post_id": 81258, "ts": "2026-10-20T14:31:21Z", "hours": 0.905, "text": "Okay… The first renderer is on progress! To make things simpler, I decided to make my own Vector class. I’m sorry if I can’t grind very much this time…"}, {"post_id": 80971, "ts": "2026-10-19T13:04:42Z", "hours": 2.9981, "text": "Working on the user interface! The first ~20 minutes is me trying to pick between Figma or Photopea (I decided to use Figma), how to import font, and how to get started with Figma. So I did learn some fundamentals of Figma I changed the planned font from FreeMono to TomThumb. It’s simpler, small, scalable, and stylized."}, {"post_id": 80677, "ts": "2026-10-18T13:44:32Z", "hours": 6.2453, "text": "OKAY… That’s a LOT. Okay… First of all, the clock’s system (aside from the visuals) are now be fully operable as the final architectural pieces has been completed. Second, completely eradicated delays in #1 minigame. Third. KILOTONS of bugfixes (mostly the fatal ones) (I’ve just realized I accidentally have two different commits named “FIX #3” lol) Fourth. OHH FINALLY MY BACK CAN REST!"}, {"post_id": 80449, "ts": "2026-10-17T17:25:13Z", "hours": 0.5314, "text": "Found few genuinely dumb issues (mb): FORGOT TO ACTUALLY RANDOMIZE THE TOKEN. This is the most fatal one. Forgot to reset the menu data. So the user’s probably will stuck inside a single minigame Just learned that C++ tends to have weird quirks if you define a variable inside unscoped switch/case statement. Forgot to update set any_sw_clicked nor the rotary encoder button click. I’m so sorry if I can only develop this project for about few minutes tonight because there are a lot of going on today. Sorry :"}, {"post_id": 80167, "ts": "2026-10-16T14:50:16Z", "hours": 2.4, "text": "Ehem… A quick recap. It turns out, inputs handling are not-so-basic after all. At the first glance, everything seems easy. I thought the concept was simple: analogRead -> register into a struct -> return. But it turns out everything is… a bit messier. I ended up learning what are interrupts. Another couple of things that I finished were the lockscreen (aside the UI elements ofc) and the alarm buzzer. The lockscreen are somewhat trivial, meanwhile the buzzer made me relearn about PWM."}, {"post_id": 79825, "ts": "2026-10-15T15:24:20Z", "hours": 3.2628, "text": "Completed two more minigames (#3 and #4). That means every minigames I planned so far are coded, yeay! (more minigames may be added soon) The current available minigames are: Simon Slider match (like Fisch reel mechanism, but three of it all at once) Slider hit (sorta like) Where’s waldo."}, {"post_id": 79547, "ts": "2026-10-14T15:30:23Z", "hours": 2.0958, "text": "Second minigame is completed! (aside the renderer… so yeah, no demo can be showed yet) Aside from the minigame, there’s also a slight rework to ensure ‘consistency’ and ‘developer’s QOL’. Furthermore, the code are now microscopically more optimized!"}, {"post_id": 79315, "ts": "2026-10-13T14:24:57Z", "hours": 4.7808, "text": "The overall loop flow is completed. BUT THE MOST IMPORTANTLY, THE FIRST MINIGAME IS COMPLETED (aside the UI draw aspect) Okay… this thing took longer than I thought… I’m kinda overwhelmed, but overall still fun WAIT, YOU CAN UPLOAD MORE THAN ONE IMAGE ON A SINGLE DEVLOG? I just found out about it…"}, {"post_id": 79061, "ts": "2026-10-12T15:16:28Z", "hours": 3.9986, "text": "Okay… I’ve worked on the basic datastructure of the firmware. Yeay! So the most unique thing about this alarm I made is that you need to complete three minigames to get three ‘verification code’ that you must memorize in order to shut down the alarm. BUT… I want the alarm to be extra pesky, so some of the minigames in a session (1-2 of them) would require ‘unlock key’ from other minigame in the same session."}, {"post_id": 78701, "ts": "2026-10-11T10:59:29Z", "hours": 0.715, "text": "Because I know there will be a lot of trials and errors, I’ve recreate the schematic inside Wokwi and set up Wokwi simulator inside VS Code (I mean it’s free and why not?) I don’t use Wakatime this time because I’m not yet started coding. This is just me or the TFT display pinout is a bit… weird"}, {"post_id": 78687, "ts": "2026-10-11T09:24:49Z", "hours": 2.38, "text": "The last piece (i think) is done! The phone box lid is done, yeay OHH GOSH, I’M SO EXCITED TO DO THE CODING. WooOoOooo"}, {"post_id": 78357, "ts": "2026-10-10T15:29:02Z", "hours": 0.4944, "text": "Today, I finished the all-new phone box body. Yeay! Not exactly “smooth”, and I’m not yet added the handset holder + mold. But hey, at least some progress can be made (I’m to sleepy to continue, sorry!). WOooO, I’m so excited to finish this project."}, {"post_id": 78096, "ts": "2026-10-09T15:35:47Z", "hours": 3.4803, "text": "Ehem… I think I had some… uhm ‘development’. Remember when I first starting the project? That time, I hate CAD SO MUCH. Now…, I’ve found myself enjoying the CAD process. It is fun indeed. Here’s a list for what I’ve done and learned: REVAMPING the OLD UGLY phone box design. (I’m currently working on the internal walls. I learned to trust the process I learned that I can use formulas inside dimension tool. So I did! I learned to apply the Pythagorean theorem to my design! (I know it’s pretty basic, but hey, everyone has to start somewhere)"}, {"post_id": 77851, "ts": "2026-10-08T15:13:20Z", "hours": 5.5969, "text": "What happened today? ALOT. Here’s a summary: Cooked by my arc nemesis: “Rail not smooth error”. Trying to “fix” projection and alignment issues (they’re now worse btw) Banged my head several times. Still stuck fixing the handset bell for 4 and a half hours Lobotomized myself Had a massive thinking moment Decided that “the handset aren’t necessary” Sacrificed the telephone handset to actually make some progress. Moved-on to polish the phone box. “Sometimes, a sacrifice must be made. Especially when you’re stuck for 6 devlogs in a row” - Sun Tzu I’m not lazy, okay? I’m just having a replan for effectivity . Note: Maybe , I will try to complete the handset once everything else finished."}, {"post_id": 77580, "ts": "2026-10-07T15:05:13Z", "hours": 4.0506, "text": "Made the top, side, and a bunch of garbage sketches. This time, I’m exploring surface modeling. Huft… How newbie am I? I don’t even know if I can make it on time. Seems there’s no progress on the CAD phase ;( How can making a telephone handset be this hard?"}, {"post_id": 77318, "ts": "2026-10-06T15:09:51Z", "hours": 0.6919, "text": "Based on some Slack feedbacks, I migrated to Autodesk Fusion. The progress is minimal today. This is due to tomorrow’s science exam. Maybe I’ll start a dead-grind tomorrow to make up for the wasted time. My target is to finish the project’s design by the eight of October. Ohhhhh, time is running out so quickly, isn’t it?"}, {"post_id": 77040, "ts": "2026-10-05T13:41:37Z", "hours": 3.275, "text": "Yo… why is my phone tweaking? DAY 3 STUCK IN CAD PHASE BTW. GRRRRR. Maybe I should migrate to fusion instead? Sure… Lot of the community advice me to do so."}, {"post_id": 76637, "ts": "2026-10-04T07:25:53Z", "hours": 1.5069, "text": "Made the phone box and outline of the… ummm… phone? phone handle? I learned the best way to shape the phone box is to design the lid first, and then the walls. Last time, I did the reverse, so that’s why I’m stuck. The amount of effort required to create a simple shape made me respect hobbyist and engineers more. I literally spent most of the time trying to figure out how to make symmetrical phone, lol. I tried to make the phone 3D, but again… It’s harder than I thought. I ended up to restart the 3D-fication process of the phone."}, {"post_id": 76608, "ts": "2026-10-04T04:54:40Z", "hours": 3.2828, "text": "uhm. long story short, I revamped everything twice. why? it turns out, the display is much longer than I anticipated. so the pcb layout must be tweaked. the cad model is… suboptimal if i say. but i think i’m getting hang of it. now i know how to use sketch, dimension, and extrude properly. still, i have a long way to go."}, {"post_id": 76338, "ts": "2026-10-03T07:45:46Z", "hours": 4.0131, "text": "Coldline-inspired alarm I’m sooooo clueless. This is my first ever attempt to design a schematic, PCB, and CAD (CAD-ing, I guess?). Schematic? All good, a piece of cake. PCB? A lot of retries, but still manageable. CAD? OH NO NO NO. A PHASE OF ABSOLUTE DOOM AND DESPAIR"}]...
|
Title: Coldline-inspired Alarm by @nastavial | Sta Title: Coldline-inspired Alarm by @nastavial | Stardance
Devlogs:
Coldline-inspired alarm I’m sooooo clueless. This is my first ever attempt to design a schematic, PCB, and CAD (CAD-ing, I guess?). Schematic? All good, a piece of cake. PCB? A lot of retries, but still manageable. CAD? OH NO NO NO. A PHASE OF ABSOLUTE DOOM AND DESPAIR
uhm. long story short, I revamped everything twice. why? it turns out, the display is much longer than I anticipated. so the pcb layout must be tweaked. the cad model is… suboptimal if i say. but i think i’m getting hang of it. now i know how to use sketch, dimension, and extrude properly. still, i have a long way to go.
Made the phone box and outline of the… ummm… phone? phone handle? I learned the best way to shape the phone box is to design the lid first, and then the walls. Last time, I did the reverse, so that’s why I’m stuck. The amount of effort required to create a simple shape made me respect hobbyist and engineers more. I literally spent most of the time trying to figure out how to make symmetrical phone, lol. I tried to make the phone 3D, but again… It’s harder than I thought. I ended up to restart the 3D-fication process of the phone.
Yo… why is my phone tweaking? DAY 3 STUCK IN CAD PHASE BTW. GRRRRR. Maybe I should migrate to fusion instead? Sure… Lot of the community advice me to do so.
Based on some Slack feedbacks, I migrated to Autodesk Fusion. The progress is minimal today. This is due to tomorrow’s science exam. Maybe I’ll start a dead-grind tomorrow to make up for the wasted time. My target is to finish the project’s design by the eight of October. Ohhhhh, time is running out so quickly, isn’t it?
Made the top, side, and a bunch of garbage sketches. This time, I’m exploring surface modeling. Huft… How newbie am I? I don’t even know if I can make it on time. Seems there’s no progress on the CAD phase ;( How can making a telephone handset be this hard?
What happened today? ALOT. Here’s a summary: Cooked by my arc nemesis: “Rail not smooth error”. Trying to “fix” projection and alignment issues (they’re now worse btw) Banged my head several times. Still stuck fixing the handset bell for 4 and a half hours Lobotomized myself Had a massive thinking moment Decided that “the handset aren’t necessary” Sacrificed the telephone handset to actually make some progress. Moved-on to polish the phone box. “Sometimes, a sacrifice must be made. Especially when you’re stuck for 6 devlogs in a row” - Sun Tzu I’m not lazy, okay? I’m just having a replan for effectivity . Note: Maybe , I will try to complete the handset once everything else finished.
Ehem… I think I had some… uhm ‘development’. Remember when I first starting the project? That time, I hate CAD SO MUCH. Now…, I’ve found myself enjoying the CAD process. It is fun indeed. Here’s a list for what I’ve done and learned: REVAMPING the OLD UGLY phone box design. (I’m currently working on the internal walls. I learned to trust the process I learned that I can use formulas inside dimension tool. So I did! I learned to apply the Pythagorean theorem to my design! (I know it’s pretty basic, but hey, everyone has to start somewhere)
Today, I finished the all-new phone box body. Yeay! Not exactly “smooth”, and I’m not yet added the handset holder + mold. But hey, at least some progress can be made (I’m to sleepy to continue, sorry!). WOooO, I’m so excited to finish this project.
The last piece (i think) is done! The phone box lid is done, yeay OHH GOSH, I’M SO EXCITED TO DO THE CODING. WooOoOooo
Because I know there will be a lot of trials and errors, I’ve recreate the schematic inside Wokwi and set up Wokwi simulator inside VS Code (I mean it’s free and why not?) I don’t use Wakatime this time because I’m not yet started coding. This is just me or the TFT display pinout is a bit… weird
Okay… I’ve worked on the basic datastructure of the firmware. Yeay! So the most unique thing about this alarm I made is that you need to complete three minigames to get three ‘verification code’ that you must memorize in order to shut down the alarm. BUT… I want the alarm to be extra pesky, so some of the minigames in a session (1-2 of them) would require ‘unlock key’ from other minigame in the same session.
The overall loop flow is completed. BUT THE MOST IMPORTANTLY, THE FIRST MINIGAME IS COMPLETED (aside the UI draw aspect) Okay… this thing took longer than I thought… I’m kinda overwhelmed, but overall still fun WAIT, YOU CAN UPLOAD MORE THAN ONE IMAGE ON A SINGLE DEVLOG? I just found out about it…
Second minigame is completed! (aside the renderer… so yeah, no demo can be showed yet) Aside from the minigame, there’s also a slight rework to ensure ‘consistency’ and ‘developer’s QOL’. Furthermore, the code are now microscopically more optimized!
Completed two more minigames (#3 and #4). That means every minigames I planned so far are coded, yeay! (more minigames may be added soon) The current available minigames are: Simon Slider match (like Fisch reel mechanism, but three of it all at once) Slider hit (sorta like) Where’s waldo.
Ehem… A quick recap. It turns out, inputs handling are not-so-basic after all. At the first glance, everything seems easy. I thought the concept was simple: analogRead -> register into a struct -> return. But it turns out everything is… a bit messier. I ended up learning what are interrupts. Another couple of things that I finished were the lockscreen (aside the UI elements ofc) and the alarm buzzer. The lockscreen are somewhat trivial, meanwhile the buzzer made me relearn about PWM.
Found few genuinely dumb issues (mb): FORGOT TO ACTUALLY RANDOMIZE THE TOKEN. This is the most fatal one. Forgot to reset the menu data. So the user’s probably will stuck inside a single minigame Just learned that C++ tends to have weird quirks if you define a variable inside unscoped switch/case statement. Forgot to update set any_sw_clicked nor the rotary encoder button click. I’m so sorry if I can only develop this project for about few minutes tonight because there are a lot of going on today. Sorry :
OKAY… That’s a LOT. Okay… First of all, the clock’s system (aside from the visuals) are now be fully operable as the final architectural pieces has been completed. Second, completely eradicated delays in #1 minigame. Third. KILOTONS of bugfixes (mostly the fatal ones) (I’ve just realized I accidentally have two different commits named “FIX #3” lol) Fourth. OHH FINALLY MY BACK CAN REST!
Working on the user interface! The first ~20 minutes is me trying to pick between Figma or Photopea (I decided to use Figma), how to import font, and how to get started with Figma. So I did learn some fundamentals of Figma I changed the planned font from FreeMono to TomThumb. It’s simpler, small, scalable, and stylized.
Okay… The first renderer is on progress! To make things simpler, I decided to make my own Vector class. I’m sorry if I can’t grind very much this time…...
|
1793109235.7131927
|
1793714035.7131927
|
|
70513
|
MarchingCubes (unity3d) by @Rohit_Biswas | Stardan MarchingCubes (unity3d) by @Rohit_Biswas | Stardance...
|
Rohit_Biswas
|
1
|
18.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-21T02:06:41Z", "hours": 18.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Finally, I made a cpu based simple marching cube algorithm especially for generating complex procedural terrain. during this project i faced so many mesh generation and cube config indexing problem even i almost gave up. However,i eventually got a really nice Stanford marching cube algorithm. After 30 hours of hard work i finally built it myself! I am really proud of my selft. Credits: Sebastian lague: https://www.youtube.com/watch?v=M3iI2l0ltbE Graphics Stanford Edu: https://graphics.stanford.edu/~mdfisher/MarchingCubes.html NVIDIA: https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-1-generating-complex-procedural-terrains-using-gpu b3agz: https://www.youtube.com/watch?v=dTdn3CC64sc&t=1368s Unity 2022.3", "repo": "https://github.com/BlooPlanet/MarchingCubes", "demo": "https://blooplanet.itch.io/marching-cube"}]...
|
[{"post_id": 81250, "ts": "202 [{"post_id": 81250, "ts": "2026-10-20T13:53:32Z", "hours": 0.6447, "text": "Day 3 Terrain generation with marching cube"}, {"post_id": 81213, "ts": "2026-10-20T10:12:58Z", "hours": 2.8022, "text": "Day 2 Marching cube mesh generation system"}, {"post_id": 80991, "ts": "2026-10-19T15:13:10Z", "hours": 14.9222, "text": "Day 1 I made march cube function that create mesh from the marching cube config index"}]...
|
Title: MarchingCubes (unity3d) by @Rohit_Biswas | Title: MarchingCubes (unity3d) by @Rohit_Biswas | Stardance
Devlogs:
Day 1 I made march cube function that create mesh from the marching cube config index
Day 2 Marching cube mesh generation system
Day 3 Terrain generation with marching cube
Ships:
Finally, I made a cpu based simple marching cube algorithm especially for generating complex procedural terrain. during this project i faced so many mesh generation and cube config indexing problem even i almost gave up. However,i eventually got a really nice Stanford marching cube algorithm. After 30 hours of hard work i finally built it myself! I am really proud of my selft. Credits: Sebastian lague: https://www.youtube.com/watch?v=M3iI2l0ltbE Graphics Stanford Edu: https://graphics.stanford.edu/~mdfisher/MarchingCubes.html NVIDIA: https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-1-generating-complex-procedural-terrains-using-gpu b3agz: https://www.youtube.com/watch?v=dTdn3CC64sc&t=1368s Unity 2022.3...
|
1793173723.4109418
|
1793260123.4109418
|
|
70271
|
neural network basics by @cosmic79conqueror | Star neural network basics by @cosmic79conqueror | Stardance...
|
cosmic79conqueror
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T14:09:18Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Neural Networks!!! This will be me creating a neural network from scratch while learning aout them. this was inspired by the growing craze about ai (although i am a few years late it is of no matter) the following code has a dataset of 4 people and their weights and heights and genders. the dataset 4 people and their heights and weights and genders 1 for female and 0 for male signing off this is just part 1 of my project i will continue it in another ysws for the next part so all this does is run a program to minimise the loss functiona", "repo": "https://github.com/Abhrajit-Gogoi/neural-network", "demo": "https://github.com/Abhrajit-Gogoi/neural-network/blob/main/main.py"}]...
|
[{"post_id": 81249, "ts": "202 [{"post_id": 81249, "ts": "2026-10-20T13:52:42Z", "hours": 1.2236, "text": "wrote the code from the blog after tweaking about a bit i got the loss function to be practically 0 after 280 learnings"}, {"post_id": 81163, "ts": "2026-10-20T04:56:58Z", "hours": 4.4264, "text": "trying to get into machine learning i read the blog : https://victorzhou.com/blog/intro-to-neural-networks/ for the theory of my project. i learnt about basically the UAT universal approx theorem and how that is the motivation behind neural networks. So we use feedforward to get results and backprop and sgd to train it next i will try creating it from memory"}]...
|
Title: neural network basics by @cosmic79conqueror Title: neural network basics by @cosmic79conqueror | Stardance
Devlogs:
trying to get into machine learning i read the blog : https://victorzhou.com/blog/intro-to-neural-networks/ for the theory of my project. i learnt about basically the UAT universal approx theorem and how that is the motivation behind neural networks. So we use feedforward to get results and backprop and sgd to train it next i will try creating it from memory
wrote the code from the blog after tweaking about a bit i got the loss function to be practically 0 after 280 learnings
Ships:
Neural Networks!!! This will be me creating a neural network from scratch while learning aout them. this was inspired by the growing craze about ai (although i am a few years late it is of no matter) the following code has a dataset of 4 people and their weights and heights and genders. the dataset 4 people and their heights and weights and genders 1 for female and 0 for male signing off this is just part 1 of my project i will continue it in another ysws for the next part so all this does is run a program to minimise the loss functiona...
|
1793066034.0470552
|
1793152434.0470552
|
|
63086
|
Arduino parts tracker by @ajmaleee__ | Stardance
|
ajmaleee__
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T14:22:19Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "ESP32 Inventory Manager My ESP32 Inventory Manager is a small desktop assistant designed to make working at my electronics bench easier. It keeps track of around 230 electronic modules and components, letting me search for a part and find exactly where it’s stored without digging through piles of pouches. Built around an ESP32, OLED display, keypad, RTC module and LittleFS storage, it combines inventory management, component lending and return tracking, a clock, timers and Pomodoro study sessions in one device. The custom keypad uses Nokia-style multi-tap text input, while local storage allows the inventory to work without relying on the internet. I’ve also been working on power optimization using ESP32 light sleep, so the device doesn’t waste battery power when it’s idle. The project is still evolving, with plans for a larger TFT display, better interface animations, vibration notifications and an INMP441 microphone for future voice-controlled inventory management. What started as a simple solution to my messy component storage has gradually become a multifunctional electronics bench assistant. It’s not finished yet, but the goal is simple: spend less time searching for components and navigating menus, and more time actually building things.", "repo": "https://github.com/Ajmaleee/CircuitShelf", "demo": "https://drive.google.com/file/d/1E-O3cFrFAo3KNwu2OBWP70bK6hr4ljpL/view?usp=sharing"}]...
|
[{"post_id": 81244, "ts": "202 [{"post_id": 81244, "ts": "2026-10-20T13:27:42Z", "hours": 2.9222, "text": "ESP32 Inventory Manager ,wot i did in 5 Days Day 1 — inspiration I started this project because I was getting tired of forgetting where I kept my electronic components. I have around 230 modules and sensors, and searching through all those pouches every time I need something is honestly annoying. So I decided to build an inventory manager using an ESP32 and an OLED display. The idea was to search for a component and get its exact location instead of digging through everything manually. I also wanted to add a few things I’d actually use at my electronics bench, like timers, Pomodoro sessions and a clock. What started as a simple inventory tracker was already turning into something bigger. Day 2 — Getting the keypad and RTC working I worked on the keypad interface and RTC integration. For text input, I wanted something similar to the old Nokia phones, where pressing a key multiple times lets you enter different letters. It makes searching through hundreds of components much easier without needing a full keyboard. The RTC was a different story. Initially, the ESP32 couldn’t communicate with it, and I thought the module might be faulty. Turns out, I’d swapped the SDA and SCL connections. After fixing that, I got it working, but the time was still incorrect. I had to set it properly and replace the nearly dead coin cell. At least it wasn’t a dead module. Just my wiring. Day 3 — Making the battery last longer Once the main hardware was working, I started looking at power consumption. The ESP32 was constantly running its main loop, updating things even when I wasn’t interacting with the device. Not ideal for something powered by a 2,200 mAh battery. I started optimizing the loop and implementing light sleep so the ESP32 could spend less time actively processing when idle. The RTC handles timekeeping independently, which helps avoid keeping the ESP32 awake just for the clock. There’s still room for improvement, but getting the power management sorted out was an important step. Day 4 — Organizing the inventory I worked on the inventory system using LittleFS for local storage. This means the component data stays on the ESP32 itself instead of depending on an internet connection or an external database. The plan is to keep track of component names, locations, quantities and lending status. With around 230 components to manage, having everything searchable in one place makes a real difference. I also wanted the device to be more than just a storage database. Having inventory search, timers, Pomodoro sessions and a clock together makes it much more useful on my electronics bench. Day 5 — What’s next? Looking at the current build, there are still plenty of things I want to improve. The SSD1306 OLED works fine, but its small size is becoming a limitation. A TFT display would give me more space for a better interface. The bigger idea, though, is voice control. I’m planning to experiment with an INMP441 microphone so I can eventually give commands like asking the device to locate an OLED or update the inventory when I borrow a component. Of course, plugging in a microphone won’t magically turn the ESP32 into Jarvis. Wake-word detection, speech recognition and command processing will all need work. For now, I’m happy with how far the project has come. It’s still a work in progress, and every new feature seems to introduce another problem to solve. That’s pretty much how my electronics projects go."}]...
|
Title: Arduino parts tracker by @ajmaleee__ | Star Title: Arduino parts tracker by @ajmaleee__ | Stardance
Devlogs:
ESP32 Inventory Manager ,wot i did in 5 Days Day 1 — inspiration I started this project because I was getting tired of forgetting where I kept my electronic components. I have around 230 modules and sensors, and searching through all those pouches every time I need something is honestly annoying. So I decided to build an inventory manager using an ESP32 and an OLED display. The idea was to search for a component and get its exact location instead of digging through everything manually. I also wanted to add a few things I’d actually use at my electronics bench, like timers, Pomodoro sessions and a clock. What started as a simple inventory tracker was already turning into something bigger. Day 2 — Getting the keypad and RTC working I worked on the keypad interface and RTC integration. For text input, I wanted something similar to the old Nokia phones, where pressing a key multiple times lets you enter different letters. It makes searching through hundreds of components much easier without needing a full keyboard. The RTC was a different story. Initially, the ESP32 couldn’t communicate with it, and I thought the module might be faulty. Turns out, I’d swapped the SDA and SCL connections. After fixing that, I got it working, but the time was still incorrect. I had to set it properly and replace the nearly dead coin cell. At least it wasn’t a dead module. Just my wiring. Day 3 — Making the battery last longer Once the main hardware was working, I started looking at power consumption. The ESP32 was constantly running its main loop, updating things even when I wasn’t interacting with the device. Not ideal for something powered by a 2,200 mAh battery. I started optimizing the loop and implementing light sleep so the ESP32 could spend less time actively processing when idle. The RTC handles timekeeping independently, which helps avoid keeping the ESP32 awake just for the clock. There’s still room for improvement, but getting the power management sorted out was an important step. Day 4 — Organizing the inventory I worked on the inventory system using LittleFS for local storage. This means the component data stays on the ESP32 itself instead of depending on an internet connection or an external database. The plan is to keep track of component names, locations, quantities and lending status. With around 230 components to manage, having everything searchable in one place makes a real difference. I also wanted the device to be more than just a storage database. Having inventory search, timers, Pomodoro sessions and a clock together makes it much more useful on my electronics bench. Day 5 — What’s next? Looking at the current build, there are still plenty of things I want to improve. The SSD1306 OLED works fine, but its small size is becoming a limitation. A TFT display would give me more space for a better interface. The bigger idea, though, is voice control. I’m planning to experiment with an INMP441 microphone so I can eventually give commands like asking the device to locate an OLED or update the inventory when I borrow a component. Of course, plugging in a microphone won’t magically turn the ESP32 into Jarvis. Wake-word detection, speech recognition and command processing will all need work. For now, I’m happy with how far the project has come. It’s still a work in progress, and every new feature seems to introduce another problem to solve. That’s pretty much how my electronics projects go.
Ships:
ESP32 Inventory Manager My ESP32 Inventory Manager is a small desktop assistant designed to make working at my electronics bench easier. It keeps track of around 230 electronic modules and components, letting me search for a part and find exactly where it’s stored without digging through piles of pouches. Built around an ESP32, OLED display, keypad, RTC module and LittleFS storage, it combines inventory management, component lending and return tracking, a clock, timers and Pomodoro study sessions in one device. The custom keypad uses Nokia-style multi-tap text input, while local storage allows the inventory to work without relying on the internet. I’ve also been working on power optimization using ESP32 light sleep, so the device doesn’t waste battery power when it’s idle. The project is still evolving, with plans for a larger TFT display, better interface animations, vibration notifications and an INMP441 microphone for future voice-controlled inventory management. What started as a simple solution to my messy component storage has gradually become a multifunctional electronics bench assistant. It’s not finished yet, but the goal is simple: spend less time searching for components and navigating menus, and more time actually building things....
|
1793198929.606545
|
1793285329.606545
|
|
55756
|
demon slayer by @v3n5590 | Stardance
|
v3n5590
|
0
|
19.46
|
0
|
[]
|
[{"post_id": 81236, "ts": "202 [{"post_id": 81236, "ts": "2026-10-20T12:11:38Z", "hours": 0.8269, "text": "muichro page done"}, {"post_id": 81185, "ts": "2026-10-20T07:04:03Z", "hours": 1.0678, "text": "hashira page done"}, {"post_id": 80104, "ts": "2026-10-16T07:27:02Z", "hours": 1.4686, "text": "rengoku page doneee"}, {"post_id": 73690, "ts": "2026-09-25T18:14:47Z", "hours": 0.6964, "text": "done nezuko page"}, {"post_id": 72868, "ts": "2026-09-23T21:56:34Z", "hours": 2.3903, "text": "working on nezuko page cause i forgot some characters done some css pages duhh😭😭😭😭"}, {"post_id": 72131, "ts": "2026-09-22T07:56:40Z", "hours": 0.8083, "text": "akaza page is done gone for 2 min to feed my cat"}, {"post_id": 71907, "ts": "2026-09-21T19:04:30Z", "hours": 0.7094, "text": "working on some pages"}, {"post_id": 71886, "ts": "2026-09-21T18:12:14Z", "hours": 1.1517, "text": "done demon page bruhhhhh😫😫😫😫😫😫😫😫"}, {"post_id": 71814, "ts": "2026-09-21T16:23:17Z", "hours": 0.8333, "text": "done douma page"}, {"post_id": 71673, "ts": "2026-09-21T08:58:20Z", "hours": 0.9708, "text": "completed entry page and enmu page total 2 pages"}, {"post_id": 71654, "ts": "2026-09-21T07:49:46Z", "hours": 1.8494, "text": "working on genya complete"}, {"post_id": 66459, "ts": "2026-09-12T09:33:31Z", "hours": 1.0531, "text": "sanemi sub page"}, {"post_id": 59092, "ts": "2026-08-31T18:28:09Z", "hours": 0.9992, "text": "completed a page"}, {"post_id": 58331, "ts": "2026-08-30T18:28:20Z", "hours": 0.8597, "text": "completed swords page"}, {"post_id": 58229, "ts": "2026-08-30T16:14:13Z", "hours": 0.8333, "text": "page about tanjiro has been completed"}, {"post_id": 57504, "ts": "2026-08-29T17:50:36Z", "hours": 0.8175, "text": "5th page done"}, {"post_id": 57454, "ts": "2026-08-29T16:31:26Z", "hours": 1.6061, "text": "after searching for the content created third page"}, {"post_id": 57346, "ts": "2026-08-29T13:55:00Z", "hours": 0.5147, "text": "created two pages about.html and index.html"}]...
|
Title: demon slayer by @v3n5590 | Stardance
Devlo Title: demon slayer by @v3n5590 | Stardance
Devlogs:
created two pages about.html and index.html
after searching for the content created third page
5th page done
page about tanjiro has been completed
completed swords page
completed a page
sanemi sub page
working on genya complete
completed entry page and enmu page total 2 pages
done douma page
done demon page bruhhhhh😫😫😫😫😫😫😫😫
working on some pages
akaza page is done gone for 2 min to feed my cat
working on nezuko page cause i forgot some characters done some css pages duhh😭😭😭😭
done nezuko page
rengoku page doneee
hashira page done
muichro page done...
|
1792633833.6010208
|
1793238633.6010208
|
|
33986
|
Turtlebrowse by @leethana | Stardance
|
leethana
|
1
|
92.7
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-18T14:07:25Z", "hours": 57.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built Turtlebrowse, a Material 3 Expressive, Chromium (JCEF) based agentic browser that can navigate the web autonomously with you. Features Discord Rich Presence, a YouTube video downloader with yt-dlp, customizable appearence, many tools for the AI agent to navigate the wb for you, and more!", "repo": "https://github.com/ingStudiosOfficial/turtlebrowse", "demo": "https://github.com/ingStudiosOfficial/turtlebrowse/releases/latest"}]...
|
[{"post_id": 81234, "ts": "202 [{"post_id": 81234, "ts": "2026-10-20T12:09:04Z", "hours": 5.07, "text": "added userscripts scaffolding and a new easter egg :)"}, {"post_id": 79741, "ts": "2026-10-15T08:21:14Z", "hours": 0.4258, "text": "fixed windows focus bug finally. after 9 months. youre telling me the answer is a simple clear global focus owner. really man?"}, {"post_id": 79022, "ts": "2026-10-12T12:03:43Z", "hours": 5.045, "text": "added auto updating for linux appimages. i also improved the adblocker and ported a cube minigame into the browser."}, {"post_id": 78054, "ts": "2026-10-09T12:08:14Z", "hours": 12.2119, "text": "Added adblocking, zooming, new improved UI, and favicon support!"}, {"post_id": 72634, "ts": "2026-09-23T12:15:24Z", "hours": 1.9778, "text": "Added an integrated terminal using JediTerm and pty4j to the browser sidebar. Silly feature but cool and useful. First browser to do so."}, {"post_id": 72176, "ts": "2026-09-22T11:45:30Z", "hours": 1.3872, "text": "Added fullscreen mode support and fixed toolbar bad contrast when dark mode bug."}, {"post_id": 71083, "ts": "2026-09-20T08:49:42Z", "hours": 2.7953, "text": "Added OS theme detection for light/dark mode. Modified the buttons and text to follow the theme as well."}, {"post_id": 70650, "ts": "2026-09-19T14:54:50Z", "hours": 2.745, "text": "Added an update microservice using Go and migrated the update UI to the settings page."}, {"post_id": 70467, "ts": "2026-09-19T07:56:12Z", "hours": 4.0381, "text": "Added find and replace to Turtlebrowse and a new tool panel that can be swapper for AI, find and replace, and yt-dlp"}, {"post_id": 70101, "ts": "2026-09-18T13:43:43Z", "hours": 5.9531, "text": "Added browsing history, made tab switching more efficient. I struggled with fixing the grey paint on tab switch bcuz it looks like its unfixable and an issue with JCEF on Linux."}, {"post_id": 69527, "ts": "2026-09-17T07:20:24Z", "hours": 13.5119, "text": "Added Linux AppImage, YouTube video downloader, and more! Features and bugs fixed: YouTube video downloader via yt-dlp Better menu buttons Web browser registration and xdg-open handlers on Linux Frontend search suggestor AppImage build"}, {"post_id": 47273, "ts": "2026-08-15T03:00:13Z", "hours": 8.1233, "text": "Multiple new changes in Turtlebrowse v1.4.5, including: Setting to enable AI integration and model selection New Tab settings New Tab wallpaper uploading Migrated from Vue to Nuxt for turtlebrowse.ingstudios.dev for better SEO Improved performance for wallpapers (serving images directly from backend rather than creating an ObjectURL based on the returned Blob)"}, {"post_id": 43807, "ts": "2026-08-09T07:27:24Z", "hours": 2.9322, "text": "I used the DuckDuckGo autocompleter API to add autocompletions to Turtlebrowse. It uses a JavaFX Popup component with an embedded ListView. I also changed the jpackage to use a custom jlink."}, {"post_id": 41298, "ts": "2026-08-05T13:16:17Z", "hours": 3.7625, "text": "Completed the settings page! User can now choose between many different search engines including Brave Search, DuckDuckGo, Google, Startpage, Vyntr, Bing and Yahoo. Users can also choose to enable or disable the Discord Rich Presence IPC connection."}, {"post_id": 39991, "ts": "2026-08-03T10:42:48Z", "hours": 2.4553, "text": "we (finally) managed to fix macos build on turtlebrowse! turns out the issue was single process flag that had to be added because of linux and focus issues that caused a StackOverflowError on mac! try v1.2.9 now at https://turtlebrowse.ingstudios.dev !"}, {"post_id": 36840, "ts": "2026-07-29T04:55:36Z", "hours": 3.2208, "text": "Fixed some critical bugs, including: AI chat agent freezing main thread due to joining virtual thread Fixed AI chat not running because did not start the thread Fixed the search tool returning 429 due to the lack of headers"}, {"post_id": 32267, "ts": "2026-07-21T10:25:02Z", "hours": 5.6911, "text": "Fixed some bugs and added new features in the new update such as: Discord Rich Presence Profile editing Stability fixes"}, {"post_id": 27063, "ts": "2026-07-12T08:46:45Z", "hours": 11.7428, "text": "Added new features and bug fixes such as: Multi process architecture Multiple isolated user profiles Fixed the profile switcher Fixed the Ctrl + L shortcut to focus the URL bar Added the Ctrl + W shortcut to close the current tab"}]...
|
Title: Turtlebrowse by @leethana | Stardance
Devl Title: Turtlebrowse by @leethana | Stardance
Devlogs:
Added new features and bug fixes such as: Multi process architecture Multiple isolated user profiles Fixed the profile switcher Fixed the Ctrl + L shortcut to focus the URL bar Added the Ctrl + W shortcut to close the current tab
Fixed some bugs and added new features in the new update such as: Discord Rich Presence Profile editing Stability fixes
Fixed some critical bugs, including: AI chat agent freezing main thread due to joining virtual thread Fixed AI chat not running because did not start the thread Fixed the search tool returning 429 due to the lack of headers
we (finally) managed to fix macos build on turtlebrowse! turns out the issue was single process flag that had to be added because of linux and focus issues that caused a StackOverflowError on mac! try v1.2.9 now at https://turtlebrowse.ingstudios.dev !
Completed the settings page! User can now choose between many different search engines including Brave Search, DuckDuckGo, Google, Startpage, Vyntr, Bing and Yahoo. Users can also choose to enable or disable the Discord Rich Presence IPC connection.
I used the DuckDuckGo autocompleter API to add autocompletions to Turtlebrowse. It uses a JavaFX Popup component with an embedded ListView. I also changed the jpackage to use a custom jlink.
Multiple new changes in Turtlebrowse v1.4.5, including: Setting to enable AI integration and model selection New Tab settings New Tab wallpaper uploading Migrated from Vue to Nuxt for turtlebrowse.ingstudios.dev for better SEO Improved performance for wallpapers (serving images directly from backend rather than creating an ObjectURL based on the returned Blob)
Added Linux AppImage, YouTube video downloader, and more! Features and bugs fixed: YouTube video downloader via yt-dlp Better menu buttons Web browser registration and xdg-open handlers on Linux Frontend search suggestor AppImage build
Added browsing history, made tab switching more efficient. I struggled with fixing the grey paint on tab switch bcuz it looks like its unfixable and an issue with JCEF on Linux.
Added find and replace to Turtlebrowse and a new tool panel that can be swapper for AI, find and replace, and yt-dlp
Added an update microservice using Go and migrated the update UI to the settings page.
Added OS theme detection for light/dark mode. Modified the buttons and text to follow the theme as well.
Added fullscreen mode support and fixed toolbar bad contrast when dark mode bug.
Added an integrated terminal using JediTerm and pty4j to the browser sidebar. Silly feature but cool and useful. First browser to do so.
Added adblocking, zooming, new improved UI, and favicon support!
added auto updating for linux appimages. i also improved the adblocker and ported a cube minigame into the browser.
fixed windows focus bug finally. after 9 months. youre telling me the answer is a simple clear global focus owner. really man?
added userscripts scaffolding and a new easter egg :)
Ships:
I built Turtlebrowse, a Material 3 Expressive, Chromium (JCEF) based agentic browser that can navigate the web autonomously with you. Features Discord Rich Presence, a YouTube video downloader with yt-dlp, customizable appearence, many tools for the AI agent to navigate the wb for you, and more!...
|
1793152262.075912
|
1793238662.075912
|
|
70619
|
Coeus by @prathameshpvp | Stardance
|
prathameshpvp
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T12:09:08Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "~ COEUS IS OUT!! Coeus is a machine-learning application that explores how data science can help distinguish potential exoplanets from false-positive detections in NASA’s Kepler mission catalogue. Using ten astronomical and stellar features, including orbital period, transit duration, transit depth, planetary radius, and host-star properties. Coeus analyses patterns in Kepler Objects of Interest (KOIs) and predicts whether each object is classified as a planetary candidate or a false positive. Built using Python and logistic regression, the project combines data preprocessing, predictive modelling, classification-threshold experiments, performance evaluation, and scientific visualisation. It investigates how measurable transit characteristics contribute to classification while examining", "repo": "https://github.com/prathameshparkhi/coeus-exoplanet-classifier", "demo": "https://coeus-exoplanet-classifier.streamlit.app/"}]...
|
[{"post_id": 81232, "ts": "202 [{"post_id": 81232, "ts": "2026-10-20T12:02:03Z", "hours": 3.4011, "text": "Coeus — Kepler Exoplanet Classification Explored and cleaned NASA’s Kepler Objects of Interest (KOI) dataset. Analysed 6,816 observations containing planetary candidates and false positives. Selected 10 numerical features, including orbital period, transit duration, transit depth, planetary radius, and stellar properties. Built a logistic regression model to classify planetary candidates and false positives. Evaluated model performance using accuracy, precision, recall, F1-score, and a confusion matrix. Investigated the effects of classification thresholds on candidate detection. Visualised transit depth against orbital period to examine patterns and overlap between the two classes. Identified limitations caused by class imbalance and overlapping feature distributions. Worked on interpreting predictions cautiously, recognising that classification does not confirm the existence of an exoplanet."}]...
|
Title: Coeus by @prathameshpvp | Stardance
Devlog Title: Coeus by @prathameshpvp | Stardance
Devlogs:
Coeus — Kepler Exoplanet Classification Explored and cleaned NASA’s Kepler Objects of Interest (KOI) dataset. Analysed 6,816 observations containing planetary candidates and false positives. Selected 10 numerical features, including orbital period, transit duration, transit depth, planetary radius, and stellar properties. Built a logistic regression model to classify planetary candidates and false positives. Evaluated model performance using accuracy, precision, recall, F1-score, and a confusion matrix. Investigated the effects of classification thresholds on candidate detection. Visualised transit depth against orbital period to examine patterns and overlap between the two classes. Identified limitations caused by class imbalance and overlapping feature distributions. Worked on interpreting predictions cautiously, recognising that classification does not confirm the existence of an exoplanet.
Ships:
~ COEUS IS OUT!! Coeus is a machine-learning application that explores how data science can help distinguish potential exoplanets from false-positive detections in NASA’s Kepler mission catalogue. Using ten astronomical and stellar features, including orbital period, transit duration, transit depth, planetary radius, and host-star properties. Coeus analyses patterns in Kepler Objects of Interest (KOIs) and predicts whether each object is classified as a planetary candidate or a false positive. Built using Python and logistic regression, the project combines data preprocessing, predictive modelling, classification-threshold experiments, performance evaluation, and scientific visualisation. It investigates how measurable transit characteristics contribute to classification while examining...
|
1793162881.4649088
|
1793249281.4649088
|
|
19230
|
20% Cooler KEYBOARD by @matthewwong12 | Stardance
|
matthewwong12
|
0
|
63.9
|
0
|
[]
|
[{"post_id": 81226, "ts": "202 [{"post_id": 81226, "ts": "2026-10-20T11:14:38Z", "hours": 1.9336, "text": "what’s up Everypony this is the last devblog im posting before i ship my project for funding. during this time period , i made some finishing touches to the Case , prep it for production and i am just writing and updating my repo constantly. anyway i think i done with this project for now gotta work on my website fr fr it’s also exam season now for me, so there might be less frequent update enjoy this assembly animation i made :)"}, {"post_id": 79099, "ts": "2026-10-12T17:35:09Z", "hours": 7.5019, "text": "howdy pony ! this is it im done with my case this is it we’re done with the designing phase , things i did: changed the 3d model of the pi pico with a usb c cut out the upper case heatset insert hole cut out space for the screw head sticking out at the plate cut out the usb-c charger hole rounded the case edges oooo idk if u notice but there’s a big hole on top of pico and that’s there on purpose so i can add a clear acrylic plate there. oh yeah and the text there also have space below to insert some light dispersing material. tomorrow is repo day people im going go over yer tutorial now once you finish your pcb and it all checks out , now it’s time to create an enclosure for it . first export the stp file from kicad(there’s an option for you to export the silkscreen). then go to your software and import your stp file into your cad software.when i did this process i did encounter an issue where the stp file fail to translate(FUSION) so big L but there’s a work around. first i go to onshape and import and translate the file there. then we export the file that is just translated by onshape into fusion and voila success there’s many type of different design and mounting style to choose from and of course the more fancy you want it the harder it gets (to model :P ) i used the bottom mount layout , it’s sort of a balanced options out of all the style . but hey what matters is personal preference do you like it thocky or creamy or clicky ? so choose what you want. either way i don’t really have much advice for this. much of it drawing sketch and basic math . it’s not hard and not easy, there’s definitely a learning curve and there will be a lot of failing before something stuck. fact btw when i was pushing to finish this keyboard for keeb i sat down for almost 6 hour and i felt like the ash baby afterwards (ps i didn’t make it). so trial and error buddy when you fall seven times, you stand up eight !!!"}, {"post_id": 77908, "ts": "2026-10-08T18:46:17Z", "hours": 10.4783, "text": "wassup Every Pony it’s me again with another devblog now the schematics is out the way, it’s time to move on to the actual PCB , this by far the longest process for me, you have take lots of things into consideration. when you first open the PCB editor , the first thing you do is import the parts you place in your schematics (there’s a button for that) then you would wanna go back to Keyboard layout editor to download the JSON File of your layout , then go back to kicad and open the plugin manager then download keyboard layout placer. you then go back to the pcb editor and open the plugin , there you will be able to insert your JSON file then the plugin will do the placing for you how cool is that ? there also an option to add more parts to be auto place. when you finish that you would need to draw out your pcb board edge with that we first select the edge cut layer then select whether the draw line tool or rectangles tool, left click and drag then voila you define your pcb borders. FOR RGB LED and HOT SWAP sockets you need to flip those to backside of the board for them to work. you also need the 5v trace to be thicker, how thick ? there’s a tool for that (PCB Trace width calculator) , a standard usb 3.0 output 0.9amps at 5v while usb 2.0 outputs 0.5 amps at 5v, check your usb port before deciding. now here comes the actual complicated part , routing it all together in a basic pcb you have two layer the front and back , so you have two layers to work with, you route wire by pressing x , to switch to the backside press v note v is also use to place vias vias are like channel that connect the front trace to back trace and it works the other way around. utilize them to the fullest extend . placing ground plane adding a ground plane is quick and easy press the draw filled zones ,select which layers have the most or both, set the net as GND and draw. a ground plane is like a filter of some sort, idk go google it. therefore adding one is good practice. DRC this is the most important thing you need to do everytime you finish making a change, the DRC checks for everything unconnected traces , shorted wires , parts clipping , silkscreen clipping. so i would advise you to run the drc everytime you finish a task, so you can fix the issue. customizing your board you can customize your board and add art using SVG and SIlkscreen. silkscreen is a non conductive layer use to add text and cool arts. woah now that’s a long read but there’s more What i did this past few day so this few days i just been doing CAD , the plate finish , i got the top case rough shape finish and i almost finish the bottom case just the usb-c port left. i went through three different design variations and eventually settle down for the design for the bottom case (in picture). i also model my own custom rotary encoder knob. i want to import a knurl design at first but then the model i import was too large and when i scale it down it won’t fit. either way we’re getting close to finishing the design phase."}, {"post_id": 76808, "ts": "2026-10-04T17:15:26Z", "hours": 3.0169, "text": "Hello every Pony im back again with more things to share. so now that you figure out what fancy features you want for your keyboard it’s time to make it come to fruition. you would need to first create your PCB first and to do that i use KICAD. the first step is to create your schematics first (it’s like instruction telling your component which wire goes where).In My schematics i use the PI PICO as my brain of my keyboard and i created a keyboard matrix based on the layout i want . so the Pi pico have a limited amount of GPIO pins if wire all our keyswitch to our pico we would need a dozen of pico and we don’t want that. so we create a keyboard matrix. i also added in a GPIO expansion chip mcp23017 to accommodate those other fancy feature i have.This stage is very crucial as any mistake make here will be a big headache when you wire your actual pcb. some tools that i found very useful: Keyboard layout editor.com, Marbastlib(KIcad plugin) so what i did today, i continue working on my keyboard cad files today, boy o boy is tiring , i have to manually place and align each keycap and it took a while bcs im such a perfectionist. anyway i decided to use a top mount layout for my keyboard so there will three layer a bottom case , the plate and the upper case. im so impatient , i want to finish this quickly !!! anyhow , everything i just said was oversimplified , remember to do your own research. until next time stay cool every pony"}, {"post_id": 75955, "ts": "2026-10-01T18:42:40Z", "hours": 0.6833, "text": "hey ya guys since i started project sometime ago i will tried to retell what i did and also include some ongoing process like what i did etc. so what do you do when you want to make a keyboard ? you do tons of research of course. keyboard format 60% 75% TKL etc features like knobs ,backlit and display Hot swappable ? or simply solder it on? all this have to be taken into consideration ultimately i choose to go with the 75% format ,with all kinds of fancy features(knobs,oled display,rgb backlit,hot swappable). below is an early sketch of what i want in my keyboard // so today i went back to the pcb and added more graphics cause why not , i got more time now"}, {"post_id": 75817, "ts": "2026-10-01T07:30:14Z", "hours": 40.2828, "text": "what’s up Guys alright so i may have been gone for a few days but now im back with a new project. RAINBOW DASH KEYBOARD yeah it was originally gonna be submitted to #keeb but i miss the deadline so im going to submit to Stardance instead. so currently i have Logged 40h 16min with lapse and i have finished designing the PCB and now currently designing the case for it. everything before this devblog will be in my github REPO ie timeline, pcb ,sch and case so definitely go through my repo. the features ; so this keyboard will have hot swappable backlit keyswitch with a rotary encoder, oled screen and a custom 3d case to go with it"}]...
|
Title: 20% Cooler KEYBOARD by @matthewwong12 | Sta Title: 20% Cooler KEYBOARD by @matthewwong12 | Stardance
Devlogs:
what’s up Guys alright so i may have been gone for a few days but now im back with a new project. RAINBOW DASH KEYBOARD yeah it was originally gonna be submitted to #keeb but i miss the deadline so im going to submit to Stardance instead. so currently i have Logged 40h 16min with lapse and i have finished designing the PCB and now currently designing the case for it. everything before this devblog will be in my github REPO ie timeline, pcb ,sch and case so definitely go through my repo. the features ; so this keyboard will have hot swappable backlit keyswitch with a rotary encoder, oled screen and a custom 3d case to go with it
hey ya guys since i started project sometime ago i will tried to retell what i did and also include some ongoing process like what i did etc. so what do you do when you want to make a keyboard ? you do tons of research of course. keyboard format 60% 75% TKL etc features like knobs ,backlit and display Hot swappable ? or simply solder it on? all this have to be taken into consideration ultimately i choose to go with the 75% format ,with all kinds of fancy features(knobs,oled display,rgb backlit,hot swappable). below is an early sketch of what i want in my keyboard // so today i went back to the pcb and added more graphics cause why not , i got more time now
Hello every Pony im back again with more things to share. so now that you figure out what fancy features you want for your keyboard it’s time to make it come to fruition. you would need to first create your PCB first and to do that i use KICAD. the first step is to create your schematics first (it’s like instruction telling your component which wire goes where).In My schematics i use the PI PICO as my brain of my keyboard and i created a keyboard matrix based on the layout i want . so the Pi pico have a limited amount of GPIO pins if wire all our keyswitch to our pico we would need a dozen of pico and we don’t want that. so we create a keyboard matrix. i also added in a GPIO expansion chip mcp23017 to accommodate those other fancy feature i have.This stage is very crucial as any mistake make here will be a big headache when you wire your actual pcb. some tools that i found very useful: Keyboard layout editor.com, Marbastlib(KIcad plugin) so what i did today, i continue working on my keyboard cad files today, boy o boy is tiring , i have to manually place and align each keycap and it took a while bcs im such a perfectionist. anyway i decided to use a top mount layout for my keyboard so there will three layer a bottom case , the plate and the upper case. im so impatient , i want to finish this quickly !!! anyhow , everything i just said was oversimplified , remember to do your own research. until next time stay cool every pony
wassup Every Pony it’s me again with another devblog now the schematics is out the way, it’s time to move on to the actual PCB , this by far the longest process for me, you have take lots of things into consideration. when you first open the PCB editor , the first thing you do is import the parts you place in your schematics (there’s a button for that) then you would wanna go back to Keyboard layout editor to download the JSON File of your layout , then go back to kicad and open the plugin manager then download keyboard layout placer. you then go back to the pcb editor and open the plugin , there you will be able to insert your JSON file then the plugin will do the placing for you how cool is that ? there also an option to add more parts to be auto place. when you finish that you would need to draw out your pcb board edge with that we first select the edge cut layer then select whether the draw line tool or rectangles tool, left click and drag then voila you define your pcb borders. FOR RGB LED and HOT SWAP sockets you need to flip those to backside of the board for them to work. you also need the 5v trace to be thicker, how thick ? there’s a tool for that (PCB Trace width calculator) , a standard usb 3.0 output 0.9amps at 5v while usb 2.0 outputs 0.5 amps at 5v, check your usb port before deciding. now here comes the actual complicated part , routing it all together in a basic pcb you have two layer the front and back , so you have two layers to work with, you route wire by pressing x , to switch to the backside press v note v is also use to place vias vias are like channel that connect the front trace to back trace and it works the other way around. utilize them to the fullest extend . placing ground plane adding a ground plane is quick and easy press the draw filled zones ,select which layers have the most or both, set the net as GND and draw. a ground plane is like a filter of some sort, idk go google it. therefore adding one is good practice. DRC this is the most important thing you need to do everytime you finish making a change, the DRC checks for everything unconnected traces , shorted wires , parts clipping , silkscreen clipping. so i would advise you to run the drc everytime you finish a task, so you can fix the issue. customizing your board you can customize your board and add art using SVG and SIlkscreen. silkscreen is a non conductive layer use to add text and cool arts. woah now that’s a long read but there’s more What i did this past few day so this few days i just been doing CAD , the plate finish , i got the top case rough shape finish and i almost finish the bottom case just the usb-c port left. i went through three different design variations and eventually settle down for the design for the bottom case (in picture). i also model my own custom rotary encoder knob. i want to import a knurl design at first but then the model i import was too large and when i scale it down it won’t fit. either way we’re getting close to finishing the design phase.
howdy pony ! this is it im done with my case this is it we’re done with the designing phase , things i did: changed the 3d model of the pi pico with a usb c cut out the upper case heatset insert hole cut out space for the screw head sticking out at the plate cut out the usb-c charger hole rounded the case edges oooo idk if u notice but there’s a big hole on top of pico and that’s there on purpose so i can add a clear acrylic plate there. oh yeah and the text there also have space below to insert some light dispersing material. tomorrow is repo day people im going go over yer tutorial now once you finish your pcb and it all checks out , now it’s time to create an enclosure for it . first export the stp file from kicad(there’s an option for you to export the silkscreen). then go to your software and import your stp file into your cad software.when i did this process i did encounter an issue where the stp file fail to translate(FUSION) so big L but there’s a work around. first i go to onshape and import and translate the file there. then we export the file that is just translated by onshape into fusion and voila success there’s many type of different design and mounting style to choose from and of course the more fancy you want it the harder it gets (to model :P ) i used the bottom mount layout , it’s sort of a balanced options out of all the style . but hey what matters is personal preference do you like it thocky or creamy or clicky ? so choose what you want. either way i don’t really have much advice for this. much of it drawing sketch and basic math . it’s not hard and not easy, there’s definitely a learning curve and there will be a lot of failing before something stuck. fact btw when i was pushing to finish this keyboard for keeb i sat down for almost 6 hour and i felt like the ash baby afterwards (ps i didn’t make it). so trial and error buddy when you fall seven times, you stand up eight !!!
what’s up Everypony this is the last devblog im posting before i ship my project for funding. during this time period , i made some finishing touches to the Case , prep it for production and i am just writing and updating my repo constantly. anyway i think i done with this project for now gotta work on my website fr fr it’s also exam season now for me, so there might be less frequent update enjoy this assembly animation i made :)...
|
1792705755.8393843
|
1793310555.8393843
|
|
70457
|
OneManOrchestra by @Altaaf | Stardance
|
Altaaf
|
1
|
3.93
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-19T17:29:34Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is a hand gesture controlled synth, i an highkey into music and play a ukulele (coz i dont have a guitar), i saw exactly this on instagram once and never saw it again so i made it, turns out it was a very well documented project. I learnt a lot of things, like Opencv, this was my first time working with it and got me to learn a good load of stuff about it. IMPORTANT: Since this is a python script , i couldnt release it on github releases as it just wont support it, TO TEST IT PLEASE FOLLOW THE SETUP MENTIONED IN THE README, its very small process less than 5 minutes. Thank you", "repo": "https://github.com/MohdAltaaf/HandGestureMusic", "demo": "https://github.com/MohdAltaaf/HandGestureMusic/blob/main/main.py"}]...
|
[{"post_id": 81223, "ts": "202 [{"post_id": 81223, "ts": "2026-10-20T10:52:56Z", "hours": 0.9319, "text": "AND NOW ITS ON THE WEB!! https://mohdaltaaf.github.io/HandGestureMusic/ Wrote the HTML code for it to work on a browser, the whole process was just translating python to HTML so it was nothing new, but i must say one thing that i did not expect was that i thought the browser version would be less responsive. But to my surprise its so much better!! its very responsive and i would say that the hand tracking is better as well! The UI kinda sucks but ig the next update will be better UI."}, {"post_id": 81038, "ts": "2026-10-19T17:15:07Z", "hours": 3.3306, "text": "Hand Gesture Synth Play Music without touching any instrument!! Just make some hand signs and this program does the rest. Each handsign plays a note or a chord! How to Use: There are three different modes: Notes Chords InKey Going over them one by one: Notes Mode: Your right hands plays the 7 base notes while the left hand controls which octave will those notes be played in, so it is basically a piano wihtout the sharp and flat keys! Chords Mode: Your right hand determines the key and your left hand determines the scale of the chord to be played, Very fun to use to sing along the song of your liking, all chords are easy to play just need a teensy tiny bit of memorizing. Use W/S to increase/decrease the octave. InKey Mode: Your left hand determines the octave a note should be played in, while your right hand determines the note that should be played, but the difference from the first mode is that you can select a key to play in using j/k to cycle through them. Any handsign you produce a note that sounds coherent, nothing sounds off, so its good for beginners in music to play around with coz it almost always sounds pleasant. Handsigns: All signs for entries left to right wil go like: Sign Right hand (root) Left hand (chord type) Index C Major Index + middle D Minor Three fingers E 7 Four fingers F 5 Open hand G dim Thumb only A dim7 Thumb + index B aug Thumb + index + middle C# sus2 Thumb + three fingers D# sus4 Pinky only F# maj7 Thumb + pinky G# m7 Index + pinky A# 7sus4 Controls Key Action M or 1 / 2 / 3 Switch mode J / K Previous / next key (Key mode) T Major / minor (Key mode) W / S Octave up / down (Chords mode) Esc Quit Setup (Windows) Install Python 3.12 and tick “Add python.exe to PATH”. In a terminal inside the project folder: python -m venv venv venv\\Scripts\\activate pip install -r requirements.txt python main.py Sound comes from the Microsoft GS Wavetable Synth built into Windows. Credits Built with OpenCV, MediaPipe, and mido and lots of love lol. Made by Mohd Altaaf"}]...
|
Title: OneManOrchestra by @Altaaf | Stardance
Dev Title: OneManOrchestra by @Altaaf | Stardance
Devlogs:
Hand Gesture Synth Play Music without touching any instrument!! Just make some hand signs and this program does the rest. Each handsign plays a note or a chord! How to Use: There are three different modes: Notes Chords InKey Going over them one by one: Notes Mode: Your right hands plays the 7 base notes while the left hand controls which octave will those notes be played in, so it is basically a piano wihtout the sharp and flat keys! Chords Mode: Your right hand determines the key and your left hand determines the scale of the chord to be played, Very fun to use to sing along the song of your liking, all chords are easy to play just need a teensy tiny bit of memorizing. Use W/S to increase/decrease the octave. InKey Mode: Your left hand determines the octave a note should be played in, while your right hand determines the note that should be played, but the difference from the first mode is that you can select a key to play in using j/k to cycle through them. Any handsign you produce a note that sounds coherent, nothing sounds off, so its good for beginners in music to play around with coz it almost always sounds pleasant. Handsigns: All signs for entries left to right wil go like: Sign Right hand (root) Left hand (chord type) Index C Major Index + middle D Minor Three fingers E 7 Four fingers F 5 Open hand G dim Thumb only A dim7 Thumb + index B aug Thumb + index + middle C# sus2 Thumb + three fingers D# sus4 Pinky only F# maj7 Thumb + pinky G# m7 Index + pinky A# 7sus4 Controls Key Action M or 1 / 2 / 3 Switch mode J / K Previous / next key (Key mode) T Major / minor (Key mode) W / S Octave up / down (Chords mode) Esc Quit Setup (Windows) Install Python 3.12 and tick “Add python.exe to PATH”. In a terminal inside the project folder: python -m venv venv venv\Scripts\activate pip install -r requirements.txt python main.py Sound comes from the Microsoft GS Wavetable Synth built into Windows. Credits Built with OpenCV, MediaPipe, and mido and lots of love lol. Made by Mohd Altaaf
AND NOW ITS ON THE WEB!! https://mohdaltaaf.github.io/HandGestureMusic/ Wrote the HTML code for it to work on a browser, the whole process was just translating python to HTML so it was nothing new, but i must say one thing that i did not expect was that i thought the browser version would be less responsive. But to my surprise its so much better!! its very responsive and i would say that the hand tracking is better as well! The UI kinda sucks but ig the next update will be better UI.
Ships:
This is a hand gesture controlled synth, i an highkey into music and play a ukulele (coz i dont have a guitar), i saw exactly this on instagram once and never saw it again so i made it, turns out it was a very well documented project. I learnt a lot of things, like Opencv, this was my first time working with it and got me to learn a good load of stuff about it. IMPORTANT: Since this is a python script , i couldnt release it on github releases as it just wont support it, TO TEST IT PLEASE FOLLOW THE SETUP MENTIONED IN THE README, its very small process less than 5 minutes. Thank you...
|
1793156155.844145
|
1793242555.844145
|
|
54623
|
My_TechPad by @MoonRock | Stardance
|
MoonRock
|
0
|
14.66
|
0
|
[]
|
[{"post_id": 81220, "ts": "202 [{"post_id": 81220, "ts": "2026-10-20T10:49:46Z", "hours": 4.3033, "text": "Devlog #5: Final development update before I submit my project for review. I coded nonstop for four hours and have finally finished the firmware. I also organized everything, and it’s now ready for submission."}, {"post_id": 81100, "ts": "2026-10-19T21:22:20Z", "hours": 3.4397, "text": "devlog #4 :: completed cad desiging, and half bit work regarding firmware"}, {"post_id": 80758, "ts": "2026-10-18T18:25:05Z", "hours": 4.1617, "text": "devlog#3: Finalyy completed the entire pcb circuit. quite a feat. Will be starting main design from tommorrow"}, {"post_id": 80340, "ts": "2026-10-17T10:08:47Z", "hours": 0.4833, "text": "devlog#2: finally started with the schematic design for my Techpad.Built the switch matrix and figured out some stuff.(Nothing beats google)"}, {"post_id": 80213, "ts": "2026-10-16T19:21:16Z", "hours": 2.2769, "text": "devlog1:: Gathered my thoughts and began working on my new project. I read the complete guide, defined a clear goal and design, installed everything I needed, and started building the PCB."}]...
|
Title: My_TechPad by @MoonRock | Stardance
Devlog Title: My_TechPad by @MoonRock | Stardance
Devlogs:
devlog1:: Gathered my thoughts and began working on my new project. I read the complete guide, defined a clear goal and design, installed everything I needed, and started building the PCB.
devlog#2: finally started with the schematic design for my Techpad.Built the switch matrix and figured out some stuff.(Nothing beats google)
devlog#3: Finalyy completed the entire pcb circuit. quite a feat. Will be starting main design from tommorrow
devlog #4 :: completed cad desiging, and half bit work regarding firmware
Devlog #5: Final development update before I submit my project for review. I coded nonstop for four hours and have finally finished the firmware. I also organized everything, and it’s now ready for submission....
|
1792799233.1845396
|
1793404033.1845396
|
|
63792
|
PrepBS by @Labrez | Stardance
|
Labrez
|
1
|
42.09
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-02T07:38:40Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I am building a web app PrepBS, a dashboard to make a record of your study. If we take examples, if you are preparing for an Olympiad, while you are onboarding you can fill in the details regarding your exam, the date of the exams, your targeted study time, daily study time, and things more like that. When you fill that while onboarding, according to that data a specialized personalized dashboard has been created. You can use that dashboard as the main feature. The core feature of the dashboard is the focus sessions. In that there are three modes: Pomodoro, focus, and deep focus, and in each you have different timers. You can start your session and after that session is over, an automatic break timer is set up. After that is over you can start your session again and continue your preparation. It helps to manage your time and preparation and you can also see your records of how many study sessions you’ve had. If you select a targeted study time, like 3 hours, as the sessions are over, your target bar is also increasing. When you reach 3 hours you can see on the dashboard that your study target is completed. Add more cool features to my project and I’m proud of it. It is my first full-stack project and I deployed the frontend on Vercel and my backend on Render. Using Render is a new thing and I am also proud of it as it is the first time I have built and deployed my project. Very enthusiastic things happen to me.", "repo": "https://github.com/Labrez-2010/PrepBS", "demo": "https://prep-bs.vercel.app"}]...
|
[{"post_id": 81216, "ts": "202 [{"post_id": 81216, "ts": "2026-10-20T10:26:01Z", "hours": 3.7881, "text": "After a long time finally, my new theme is completed. I don’t know why I made the mistake in just a simple language, CSS. Even though I write the maximum code by myself, still for the responsiveness of the website I use ChatGPT. That’s the part I need to work on by myself. That project also helped me to know my skills and where I am lagging behind. now i only need to update Readme then i ready to ship….."}, {"post_id": 80450, "ts": "2026-10-17T17:37:52Z", "hours": 10.35, "text": "finally i completed my all pages now only dashboard is left that i do then newlook of PrepBS is ready"}, {"post_id": 79064, "ts": "2026-10-12T15:26:38Z", "hours": 8.4353, "text": "i successfully build my register ( create account) page and first page of onboarding ..in which i have a botton for lets starting ( basucally it is asking are you ready) and i feeling i am thinking about i taking too much time for writing css because i am slowly-slowly writes my css and i try to write faster for my upcoming pages …."}, {"post_id": 77043, "ts": "2026-10-05T13:57:09Z", "hours": 5.5206, "text": "Here is a new look of PrepBS. It gives a very nice vibe and also I changed the CSS code and I wrote it by myself. Then I observed one thing: my website is not responsive. What I did was I copied all the code and tried to set it to be responsive, the smallest one. i only said to ChatGPT than in code ChatGPT add limits are between my page load cards and all the components load, then my website is also built to be responsive. Now that’s the look of my login page."}, {"post_id": 76061, "ts": "2026-10-02T07:14:12Z", "hours": 0.6733, "text": "I’m ready my project for development. I changed the Some code Create .env and more….., and then I deployed my backend on Render and my frontend on the Vercel and I connected both of them. First time i deploying my project. I took help from ChatGPT to know how to implement the command. I need to run the command npm run build and do more thing then my web App go live on internet"}, {"post_id": 75960, "ts": "2026-10-01T18:56:57Z", "hours": 7.7631, "text": "i completed my MVP , i build complete my webapp in MERN stack and i am confuse abour whether i add more features or deploy i buided a complete AUTH aspect to my add connected to real time Database , build all pages and component , debug all needed Api and check their functionality …and more ……."}, {"post_id": 74927, "ts": "2026-09-28T16:38:11Z", "hours": 1.2411, "text": "Yahhh.. Today i complete my auth pages and System in which user can create profile and login if they already have a account . Next i do … work on onboarding page and dashboard ……."}, {"post_id": 74550, "ts": "2026-09-27T16:47:52Z", "hours": 3.8144, "text": "Today I completed my authentication system, in which I created the registration and login page i also created the frontend of Login Page, I need to connected the frontend to the backend through and APIs and then… I built 70% of the authentication system of my app."}, {"post_id": 70986, "ts": "2026-09-20T05:01:39Z", "hours": 0.4897, "text": "I am building PrepBS , A smart study management platform …. i spent some time a create a basic server …then i will start programming for my real WEBAPP"}]...
|
Title: PrepBS by @Labrez | Stardance
Devlogs:
I a Title: PrepBS by @Labrez | Stardance
Devlogs:
I am building PrepBS , A smart study management platform …. i spent some time a create a basic server …then i will start programming for my real WEBAPP
Today I completed my authentication system, in which I created the registration and login page i also created the frontend of Login Page, I need to connected the frontend to the backend through and APIs and then… I built 70% of the authentication system of my app.
Yahhh.. Today i complete my auth pages and System in which user can create profile and login if they already have a account . Next i do … work on onboarding page and dashboard …….
i completed my MVP , i build complete my webapp in MERN stack and i am confuse abour whether i add more features or deploy i buided a complete AUTH aspect to my add connected to real time Database , build all pages and component , debug all needed Api and check their functionality …and more …….
I’m ready my project for development. I changed the Some code Create .env and more….., and then I deployed my backend on Render and my frontend on the Vercel and I connected both of them. First time i deploying my project. I took help from ChatGPT to know how to implement the command. I need to run the command npm run build and do more thing then my web App go live on internet
Here is a new look of PrepBS. It gives a very nice vibe and also I changed the CSS code and I wrote it by myself. Then I observed one thing: my website is not responsive. What I did was I copied all the code and tried to set it to be responsive, the smallest one. i only said to ChatGPT than in code ChatGPT add limits are between my page load cards and all the components load, then my website is also built to be responsive. Now that’s the look of my login page.
i successfully build my register ( create account) page and first page of onboarding ..in which i have a botton for lets starting ( basucally it is asking are you ready) and i feeling i am thinking about i taking too much time for writing css because i am slowly-slowly writes my css and i try to write faster for my upcoming pages ….
finally i completed my all pages now only dashboard is left that i do then newlook of PrepBS is ready
After a long time finally, my new theme is completed. I don’t know why I made the mistake in just a simple language, CSS. Even though I write the maximum code by myself, still for the responsiveness of the website I use ChatGPT. That’s the part I need to work on by myself. That project also helped me to know my skills and where I am lagging behind. now i only need to update Readme then i ready to ship…..
Ships:
I am building a web app PrepBS, a dashboard to make a record of your study. If we take examples, if you are preparing for an Olympiad, while you are onboarding you can fill in the details regarding your exam, the date of the exams, your targeted study time, daily study time, and things more like that. When you fill that while onboarding, according to that data a specialized personalized dashboard has been created. You can use that dashboard as the main feature. The core feature of the dashboard is the focus sessions. In that there are three modes: Pomodoro, focus, and deep focus, and in each you have different timers. You can start your session and after that session is over, an automatic break timer is set up. After that is over you can start your session again and continue your preparation. It helps to manage your time and preparation and you can also see your records of how many study sessions you’ve had. If you select a targeted study time, like 3 hours, as the sessions are over, your target bar is also increasing. When you reach 3 hours you can see on the dashboard that your study target is completed. Add more cool features to my project and I’m proud of it. It is my first full-stack project and I deployed the frontend on Vercel and my backend on Render. Using Render is a new thing and I am also proud of it as it is the first time I have built and deployed my project. Very enthusiastic things happen to me....
|
1793213397.1585534
|
1793299797.1585534
|
|
70603
|
dance studio website by @darmigan2011 | Stardance
|
darmigan2011
|
1
|
9.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T10:28:25Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built this dance studio website because I wanted to try making something that looks and feels different from a basic website. I went with a warm colour palette, big typography and dance photos to give it more of an editorial style. It has sections for classes, dancers, events, about and contact. I’ve been working on the design and getting it deployed on GitHub Pages. One thing that gave me trouble was deployment. The homepage worked, but opening some pages directly led to a 404, even though GitHub Actions showed a successful build. I’m working on fixing that properly. I’m pretty happy with how the homepage has turned out so far. There’s still more I want to improve, but this project has helped me learn a lot by actually building and deploying something instead of just following tutorials.", "repo": "https://github.com/darmigan2011-ops/academy-dance-studio", "demo": "https://darmigan2011-ops.github.io/academy-dance-studio/"}]...
|
[{"post_id": 81215, "ts": "202 [{"post_id": 81215, "ts": "2026-10-20T10:17:14Z", "hours": 9.4436, "text": "Finally got the website looking how I wanted I’ve been working on my dance studio website and spent some time getting the overall look right. I wanted it to feel more like an actual dance studio brand instead of just another basic website template. I went with a clean, editorial style with large typography, warm colours and dance photography. I also worked on the navigation and different sections so people can explore the classes, dancers, events and other information. One thing I’m still sorting out is the GitHub Pages deployment. The homepage loads, but opening some routes directly gives me a 404 page, even though the GitHub Actions build and deploy both show as successful. So that’s the next thing I’m debugging. Still have things to improve, but it’s nice seeing the design come together and actually be live on the internet. I’ll keep working on the routing and testing the other pages."}]...
|
Title: dance studio website by @darmigan2011 | Sta Title: dance studio website by @darmigan2011 | Stardance
Devlogs:
Finally got the website looking how I wanted I’ve been working on my dance studio website and spent some time getting the overall look right. I wanted it to feel more like an actual dance studio brand instead of just another basic website template. I went with a clean, editorial style with large typography, warm colours and dance photography. I also worked on the navigation and different sections so people can explore the classes, dancers, events and other information. One thing I’m still sorting out is the GitHub Pages deployment. The homepage loads, but opening some routes directly gives me a 404 page, even though the GitHub Actions build and deploy both show as successful. So that’s the next thing I’m debugging. Still have things to improve, but it’s nice seeing the design come together and actually be live on the internet. I’ll keep working on the routing and testing the other pages.
Ships:
I built this dance studio website because I wanted to try making something that looks and feels different from a basic website. I went with a warm colour palette, big typography and dance photos to give it more of an editorial style. It has sections for classes, dancers, events, about and contact. I’ve been working on the design and getting it deployed on GitHub Pages. One thing that gave me trouble was deployment. The homepage worked, but opening some pages directly led to a 404, even though GitHub Actions showed a successful build. I’m working on fixing that properly. I’m pretty happy with how the homepage has turned out so far. There’s still more I want to improve, but this project has helped me learn a lot by actually building and deploying something instead of just following tutorials....
|
1793152340.0730028
|
1793238740.0730028
|
|
70524
|
hackpad by @aagam3023 | Stardance
|
aagam3023
|
0
|
2.52
|
0
|
[]
|
[{"post_id": 81211, "ts": "202 [{"post_id": 81211, "ts": "2026-10-20T09:51:27Z", "hours": 2.5186, "text": "Today, I worked on my Hackpad project by designing the enclosure in Onshape. I added the USB port opening and internal mounting points, and exported the 3D model as a STEP file. I also uploaded the CAD file to GitHub so my design is easy to access and review. Next, I’ll refine the enclosure and check that the PCB and components fit properly inside the case."}]...
|
Title: hackpad by @aagam3023 | Stardance
Devlogs: Title: hackpad by @aagam3023 | Stardance
Devlogs:
Today, I worked on my Hackpad project by designing the enclosure in Onshape. I added the USB port opening and internal mounting points, and exported the 3D model as a STEP file. I also uploaded the CAD file to GitHub so my design is easy to access and review. Next, I’ll refine the enclosure and check that the PCB and components fit properly inside the case....
|
1793033563.4704273
|
1793638363.4704273
|
|
66734
|
GothOS by @ojasthakur | Stardance
|
ojasthakur
|
2
|
33.0
|
33
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T18:06:48Z", "hours": 2.0, "multiplier": 15.47, "payout": 33, "blessing": "neutral", "text": "Since the last ship for WebOS1. I had already added alotta features which seemed like an overkill for the last one. This time, I’ve added 3 small features and a few bug fixes for WebOS2. Cursor following Bat-pet A better welcome page with animated text saying “Goth”. To-Do list.", "repo": "https://github.com/OjasQwQ/GothOS", "demo": "https://ojasqwq.github.io/GothOS/"}, {"ship_num": 2, "ts": "2026-10-12T10:54:25Z", "hours": 31.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I’ve made a Goth/Alt themed WebOS. I’ve made this because I’m fond of Rock Music and I really resonate with Goth Subculture. It has the following features:- Notes/Journal App Vinyl themed music player. A basic calculator “Now Playing” flyer. Music visualiser which reacts to the vinyl player. Google Search Bar with typewriting animation.", "repo": "https://github.com/OjasQwQ/GothOS", "demo": "https://ojasqwq.github.io/GothOS/"}]...
|
[{"post_id": 81209, "ts": "202 [{"post_id": 81209, "ts": "2026-10-20T09:24:25Z", "hours": 1.0547, "text": "Changed the unclean gif with a looping mp4 typewriter animated effect on the word “Goth”. Changed the position of the nametag and and added the click event to change webpages on the whole screen. The design looks way better and clean now."}, {"post_id": 81196, "ts": "2026-10-20T08:01:47Z", "hours": 1.0583, "text": "I just created this bat pet which follows the mouse cursor on the OS page. The bat image is an SVG and and the wings on the back are animated. Its able to flip to the right before catching up to the cursor when the its is dragged fast across the screen"}, {"post_id": 79004, "ts": "2026-10-12T09:48:17Z", "hours": 0.5125, "text": "I’ve fixed the majority of the bugs related to the calculator and the music visualiser. LETS SHIP THE PROJECT GNG!"}, {"post_id": 78992, "ts": "2026-10-12T08:48:57Z", "hours": 3.0678, "text": "Added a calculator to the OS but its really buggy rn. All the buttons are concentrated in the bottom right lol. I’ll fix this soon. I added a music visualiser aswell which reacts the the music from the media player in the OS."}, {"post_id": 78734, "ts": "2026-10-11T13:06:11Z", "hours": 4.1992, "text": "I just gave the search-bar a typewriter animation, made the header for music-window transparent, customized the taskbar and made it sleeker, changed all png logos to svgs, bug fixes related to screen initialisation. I also gave it a new feature of a “Now Playing” popup/flyer upon changing/starting the tracks."}, {"post_id": 78134, "ts": "2026-10-09T18:00:54Z", "hours": 4.4858, "text": "Ok so I’m pivoting the whole idea into a Goth/Alt theme and hence changed the named to GothOS. I’ve updated the homepage. The vinyl player works better and is more scalable now. I’ll be adding more songs to it. I’m thinking of adding a “Music Playing” flyout on the top left of the OS screen the music is changed."}, {"post_id": 77261, "ts": "2026-10-06T10:20:43Z", "hours": 1.38, "text": "Made this Vinyl player which plays My Own Summer (for now) for my webOS. I made this on css mainly and used js to make this functional. The disk rotates aswell as the tone-arm when a song is played. The slider is to adjust the volume."}, {"post_id": 76819, "ts": "2026-10-04T18:17:57Z", "hours": 3.5981, "text": "I’ve been looking for a better wallpaper but couldn’t find much :( Added those two “see this Angel?” images for I-don’t-know-why but I thought that maybe we can make them clickable and they change their position to a random location on the screen lol. Google searchbar works and Css patches."}, {"post_id": 76598, "ts": "2026-10-04T03:54:31Z", "hours": 3.3169, "text": "So the notes application’s functionality is nearly complete! (The design part is not). I also implemented a way to make change the index of windows upon click to bring them to the foreground. Icons on the taskbar become smaller when selected and comes back to their original size when exiting the window or selecting another window/icon."}, {"post_id": 76393, "ts": "2026-10-03T12:06:47Z", "hours": 4.3689, "text": "Started working on the first app- Notes 1.Implemented a draggable notes window with open/close functionality (guitar logo for now). 2.Updated taskbar logo with an ID for click animation. 3.Improved CSS styles and alignments for taskbar, logos, and notes window. [removed the space bw the logos and the taskbar boundary which was bothering me]"}, {"post_id": 75913, "ts": "2026-10-01T16:14:54Z", "hours": 1.7258, "text": "I made another page for the OS and connected it with the welcome screen. I decided to keep the tab on the bottom where I’ll find better icons to put thing. Can someone suggest me a better wallpaper? It needs alotta work. I made my nametag on the initial welcome screen movable while I was trying it out lol."}, {"post_id": 75667, "ts": "2026-09-30T17:58:27Z", "hours": 2.4381, "text": "Checked off quite a few things off my To-Do list. Hosted the pages, corrected allignments, dragable elements, added a README. Looked dope on my phone."}, {"post_id": 75512, "ts": "2026-09-30T10:21:30Z", "hours": 1.9194, "text": "I’ve just started to work on “RockOS” for all the music nerds out there! Lets see where this project takes me."}]...
|
Title: GothOS by @ojasthakur | Stardance
Devlogs: Title: GothOS by @ojasthakur | Stardance
Devlogs:
I’ve just started to work on “RockOS” for all the music nerds out there! Lets see where this project takes me.
Checked off quite a few things off my To-Do list. Hosted the pages, corrected allignments, dragable elements, added a README. Looked dope on my phone.
I made another page for the OS and connected it with the welcome screen. I decided to keep the tab on the bottom where I’ll find better icons to put thing. Can someone suggest me a better wallpaper? It needs alotta work. I made my nametag on the initial welcome screen movable while I was trying it out lol.
Started working on the first app- Notes 1.Implemented a draggable notes window with open/close functionality (guitar logo for now). 2.Updated taskbar logo with an ID for click animation. 3.Improved CSS styles and alignments for taskbar, logos, and notes window. [removed the space bw the logos and the taskbar boundary which was bothering me]
So the notes application’s functionality is nearly complete! (The design part is not). I also implemented a way to make change the index of windows upon click to bring them to the foreground. Icons on the taskbar become smaller when selected and comes back to their original size when exiting the window or selecting another window/icon.
I’ve been looking for a better wallpaper but couldn’t find much :( Added those two “see this Angel?” images for I-don’t-know-why but I thought that maybe we can make them clickable and they change their position to a random location on the screen lol. Google searchbar works and Css patches.
Made this Vinyl player which plays My Own Summer (for now) for my webOS. I made this on css mainly and used js to make this functional. The disk rotates aswell as the tone-arm when a song is played. The slider is to adjust the volume.
Ok so I’m pivoting the whole idea into a Goth/Alt theme and hence changed the named to GothOS. I’ve updated the homepage. The vinyl player works better and is more scalable now. I’ll be adding more songs to it. I’m thinking of adding a “Music Playing” flyout on the top left of the OS screen the music is changed.
I just gave the search-bar a typewriter animation, made the header for music-window transparent, customized the taskbar and made it sleeker, changed all png logos to svgs, bug fixes related to screen initialisation. I also gave it a new feature of a “Now Playing” popup/flyer upon changing/starting the tracks.
Added a calculator to the OS but its really buggy rn. All the buttons are concentrated in the bottom right lol. I’ll fix this soon. I added a music visualiser aswell which reacts the the music from the media player in the OS.
I’ve fixed the majority of the bugs related to the calculator and the music visualiser. LETS SHIP THE PROJECT GNG!
I just created this bat pet which follows the mouse cursor on the OS page. The bat image is an SVG and and the wings on the back are animated. Its able to flip to the right before catching up to the cursor when the its is dragged fast across the screen
Changed the unclean gif with a looping mp4 typewriter animated effect on the word “Goth”. Changed the position of the nametag and and added the click event to change webpages on the whole screen. The design looks way better and clean now.
Ships:
I’ve made a Goth/Alt themed WebOS. I’ve made this because I’m fond of Rock Music and I really resonate with Goth Subculture. It has the following features:- Notes/Journal App Vinyl themed music player. A basic calculator “Now Playing” flyer. Music visualiser which reacts to the vinyl player. Google Search Bar with typewriting animation.
Since the last ship for WebOS1. I had already added alotta features which seemed like an overkill for the last one. This time, I’ve added 3 small features and a few bug fixes for WebOS2. Cursor following Bat-pet A better welcome page with animated text saying “Goth”. To-Do list....
|
1793217003.1234019
|
1793303403.1234019
|
|
7614
|
UniScan by @dexrn | Stardance
|
dexrn
|
0
|
239.34
|
0
|
[]
|
[{"post_id": 81208, "ts": "202 [{"post_id": 81208, "ts": "2026-10-20T09:19:45Z", "hours": 9.0592, "text": "Coming in the next full update will also be UI modes This is so that the UI is optimized for every device and their input methods This is the Mobile one, and the main page will (when its finished) have all remotes including non-connected ones and a button to add more remotes and such."}, {"post_id": 80144, "ts": "2026-10-16T11:58:28Z", "hours": 3.9517, "text": "Working on settings…! After this there will be configuration on the serverside and then after that, audio streaming!"}, {"post_id": 79731, "ts": "2026-10-15T07:54:37Z", "hours": 6.7103, "text": "New logo! (credits at end) I intend to make the logo customizable by allowing you to change the color of various elements, and choose between different logos (since no other software ive seen does this) Maybe even change the color of the scanner display when someone is talking even… Thanks to Unomelon for the base, which I used to draw the scanner. Check out Unomelon here: https://bsky.app/profile/unomelon.bsky.social , and his very cool game Allumeria here: https://allumeria.com/ (wasnt asked to add this but I think the game is really cool and am somewhat active in the community)"}, {"post_id": 77782, "ts": "2026-10-08T08:12:30Z", "hours": 5.2025, "text": "Finally committed the latest Shiki changes, will release UniScan’s next commit tomorrow."}, {"post_id": 76647, "ts": "2026-10-04T07:57:18Z", "hours": 11.0072, "text": "Have been working on more Shiki refactors and a nice language system for servers in UniScan to provide language strings without being able to overwrite client language strings Reworked most of the TaskPipelineBuilder with many more accepting delegate types and have done some cleanup since Tomorrow I will finish up releasing the next Shiki version and then I think I will be able to release the next UniScan commit and then keep working for an alpha release."}, {"post_id": 73501, "ts": "2026-09-25T07:49:46Z", "hours": 9.2694, "text": "getting yelled at by starpheus because I haven’t made devlog yet spent all nighter last night refactoring shiki’s modulemanagement project and then today I refactored lots of shiki’s taskpipeline project, as well as some work being done on Shiki’s Result and family (shiki is the side project library with most of it’s code originating from UniScan, and UniScan heavily depends on it) Now the browser initialization is much cleaner (but not perfect of course) (first screenshot is new, second is old) Removed HostEnvironment because we usually only grab the parts from DI anyway"}, {"post_id": 73041, "ts": "2026-09-24T08:06:31Z", "hours": 11.4114, "text": "For funzies, here’s the dev build running inside a rooted Oculus Quest 2 (thanks to my friend for testing this) This is also a good test of the netcode over a long distance (they’re in Malaysia while I’m in the US) Getting close to committing this all alongside Shiki and such… Long cleanup process."}, {"post_id": 70021, "ts": "2026-09-18T09:20:00Z", "hours": 2.1572, "text": "Here’s a showcase of my Uniden SDS100 scanning, with UniScan showing the details in real time! I programmed in some garbage test channels so you won’t see any channels talking in this video. Everything shown here is sent by the server and updated by the server… Still somewhat far from complete as I have to figure out more stuff (mainly more stuff for the client to deal with, like hiding state display textblock on null bindings and more UI features/styling)."}, {"post_id": 69912, "ts": "2026-09-18T01:47:47Z", "hours": 10.1983, "text": "Okayyy so I was able to actually completely gut DeviceState and now it’s actually just a class which is also used to serialize individual states. This also means I can nuke reflection from the serialization process since I can just make IDeviceState forced to inherit IStateSerializer which will be much more dynamic!!! This means literally any states can be sent to the client and as long as the server or the module has the UI to render the states, it will work. This also allows states to be diffed and only the changed parts to be sent Second screenshot shows the UI sent by the server, note that the Volume: 0 is actually all being handled on the client via binding strings (where the server only sends the client the device states and the binding strings will look up those states itself)"}, {"post_id": 67990, "ts": "2026-09-14T10:18:38Z", "hours": 0.7964, "text": "And now we can finally start seeing the fruits of our labor"}, {"post_id": 67864, "ts": "2026-09-14T04:29:36Z", "hours": 7.07, "text": "IT FINALLY WORKS The UI shit I built on the server now syncs to the client correctly, and the flow isn’t actually too bad! Although this will be improved by also having a registry…registry…(yeah I know it’s weird) on the client so that UI elements can have values bind to them, and all the server has to do is send the client data to those registries"}, {"post_id": 65237, "ts": "2026-09-10T07:13:02Z", "hours": 3.4144, "text": "Went on a small side-tangent. Icons! (dw still working on the SSR device stuff)"}, {"post_id": 63401, "ts": "2026-09-07T06:50:20Z", "hours": 5.6181, "text": "Sorry, haven’t been super active due to life. Fixed a few bugs in the meantime and implemented most of the SSR binding stuff, but it’s far from finished, hell I haven’t even gotten to test it yet. Will be gone for a bit tomorrow, and the next day I will be at a different house for a few days albeit with my computer."}, {"post_id": 61349, "ts": "2026-09-04T07:02:15Z", "hours": 5.4761, "text": "While I didn’t get to scanner state displaying yet, I did refactor the classes that handle how remotes connect, disconnect, etc so that it’s not spread around the codebase. This fixes a few bugs related to state management due to how originally these viewmodels were constructed separately of eachother. Tomorrow I will be gone for a few hrs but should be back soon enough to hopefully make some more refactors and/or start on the remote display. Pictured is the new disconnect button in the remote on the sidebar"}, {"post_id": 60741, "ts": "2026-09-03T09:41:59Z", "hours": 2.8389, "text": "The client can now disconnect itself, and more styling has been added to the SSR UI (shown here is a Container which is centered and has a slight margin) tomorrow will be some more work on the SSR UI and then finally getting the scanner state to show on the client. I’m not too pleased with the idea that the server may change the look of the device pages on the clients, though… I still feel like there could be some better way to go about this."}, {"post_id": 60674, "ts": "2026-09-03T06:03:58Z", "hours": 7.28, "text": "I FINALLY GOT SSR WORKING MY GOD still too primitive to do anything atm, working on it."}, {"post_id": 59441, "ts": "2026-09-01T09:14:39Z", "hours": 2.6186, "text": "A friend of mine was able to test it on iOS, we got it working. Gonna have them send in the PR later and set up CI for it."}, {"post_id": 58714, "ts": "2026-08-31T07:59:18Z", "hours": 3.1222, "text": "Started working on state sync, will continue tomorrow probably States are synced now but I need to think about how to deal with scanner groups and channels and such because there are different types of channels (such as P25, conventional, etc) among other type issues and I want to reduce the need for any modules on the client if I can."}, {"post_id": 56408, "ts": "2026-08-28T05:18:41Z", "hours": 1.9061, "text": "UniScan Client v0.1.0, UniScan Server (Host) v0.1.1 Lots of changes, most of them are backend changes, but there are also a handful of frontend changes too! https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Client.App%2F0.1.0 Remotes are now stored per file instead of one large file, and the UI has been neatened up. The server now sends metadata containing a logo, various information, an MOTD, links, etc. The UI has been updated to display this information too. There are more changes than this, but there are too many to list here without hitting the 4000 char limit. Attached is a small video showing some of the new UI stuffs. By no means is it bug free, but the PR reached a point where it could be merged to allow for other important tasks to be focused on (like y’know, showing the actual scanner info)"}, {"post_id": 55440, "ts": "2026-08-27T08:29:55Z", "hours": 1.0639, "text": "I think this looks pretty nice apparently Avalonia has some nuget package that adds ItemsRepeater which does what I was originally trying to do in a cleaner way"}, {"post_id": 55410, "ts": "2026-08-27T06:57:46Z", "hours": 0.9983, "text": "Here’s the announcements UI, I think I’m almost done on this branch and then I’ll continue on main."}, {"post_id": 55287, "ts": "2026-08-27T00:47:49Z", "hours": 2.4511, "text": "Need opinions on this UI The server logo now shows where possible, so on the home view and in the sidebar In the remote view, there is a top ‘window’(?) that holds (from top to bottom): logo (to the side: title, description), server links and then the bottom floating window thing holds the server MOTD I still need to find a place to hold the server announcements… Alongside this were a ton of internal refactors, and the subscribe button now works (but the server still won’t properly send the current state) Been trying to post this since yesterday (I re-recorded the video today), but Hackatime has been down."}, {"post_id": 54227, "ts": "2026-08-25T03:48:43Z", "hours": 5.8811, "text": "Remotes are now stored per file instead of all inside one file. Additionally, server info is now properly cached! I had to rewrite most of the remote initialization flow, but now it’s much better. Adding and removing remotes automatically saves to disk because I can observe the list. This isn’t the end of this overhaul, but we’re getting closer… I think I want to refactor more of UniScanClient next. This is happening on another branch: https://github.com/UniScanProject/UniScan/tree/feat/use_server_provided_display_names After this branch is merged into main, I will make the available server info also show since we have the entire RemoteInfo being sent, which includes announcements, a description, a logo, etc."}, {"post_id": 53539, "ts": "2026-08-24T04:08:25Z", "hours": 3.6514, "text": "Working on dropping display names from client remotes As well as some refactor of the connection flow using my new TaskPipeline Once this is done, the server will be able to send branding, announcements, and other useful information on connect for the client to display!"}, {"post_id": 52159, "ts": "2026-08-22T07:56:54Z", "hours": 1.7483, "text": "Just released a new version, now you can make remotes from the UI finally. Here’s a video showing the creation flow. Note that the list is dynamic based on classes implementing IConnectionMethodFactoryViewModel with attribute ConnectionMethodFactoryViewModelAttribute"}, {"post_id": 52085, "ts": "2026-08-22T04:54:12Z", "hours": 2.8142, "text": "working on fixing the fact that you can’t really make remotes"}, {"post_id": 51645, "ts": "2026-08-21T13:05:32Z", "hours": 3.4047, "text": "FINALLY I GOT IT DONE IM SO TIRED New loading screen!!!! And OPFS file handles are now keyed by int im going to sleep now https://uniscan.dexrn.me"}, {"post_id": 51484, "ts": "2026-08-21T06:59:47Z", "hours": 0.3158, "text": "Much nicer loading screen"}, {"post_id": 51332, "ts": "2026-08-20T22:40:12Z", "hours": 2.3814, "text": "Alright I’ve committed and now you can access UniScan through https://uniscan.dexrn.me Note that since this is still an early version, you can’t really do much. You can also install it as a PWA on iOS, Android, and most desktop browsers. (pictured is UniScan as a PWA in ungoogled-chromium) Hopefully tomorrow I will fix the crash with adding remotes by making some sort of map of connection type -> UI widget to define the settings for them. (meant to post this yesterday, but GH was still working on some cert garbage)"}, {"post_id": 50726, "ts": "2026-08-20T02:11:03Z", "hours": 1.7997, "text": "UniScan now works in browser! I’ve also added a nice crash handler since unhandled exceptions act weird in the browser. Just polishing up now, will commit and set up Actions to host this. Once it’s up, the link will be https://uniscan.dexrn.me (The crash shown in the video is a real issue and will be fixed later.)"}, {"post_id": 50685, "ts": "2026-08-20T00:10:14Z", "hours": 2.6617, "text": "FINALLY I GOT OPFS WORKING GG"}, {"post_id": 50163, "ts": "2026-08-19T08:34:19Z", "hours": 0.6781, "text": "OK I GOT IT SOMEWHAT WORKING IN BROWSER FINALLY still need to keep implementing OPFS stuff though. serilog 01:32:29 [ERR | UniScan.Client.Core.Config.Remote.RemotesListFile] Failed to save remotes to remotes.json System.Exception: Entry not found at SpawnDev.SpawnJS.SpawnJSRuntime.<_InteropCallApplyAsync>d__132`1[[SpawnDev.SpawnJS.JSObjects.FileSystemSyncAccessHandle, SpawnDev.SpawnJS, Version=2.1.8.0, Culture=neutral, PublicKeyToken=null]].MoveNext()"}, {"post_id": 50120, "ts": "2026-08-19T06:14:18Z", "hours": 1.0522, "text": "I think this looks pretty good for a little loading screen. I’ll probably add a try/catch if possible and show an error dialog when some fatal exception is thrown… The “Loading…” text is temporary and is done in Avalonia, will make a proper loading screen there sometime later."}, {"post_id": 50073, "ts": "2026-08-19T03:53:07Z", "hours": 1.5272, "text": "Using this time to test out M3 web (even though it’s in maintenance mode) This is just for the loading screen while it downloads all the WASMs. The cell tower is temporary until I can either make my own logo or find someone who will make one for me."}, {"post_id": 49405, "ts": "2026-08-18T06:53:24Z", "hours": 0.5689, "text": "Waiting on a bug to be fixed in SpawnJS.WebWorkers and then hopefully next update will include web support + a website for y’all to test the client!!! Couldn’t do much today since I was so busy, however since I’m home now I can work on UniScan at a better time than 12 in the morning."}, {"post_id": 48708, "ts": "2026-08-17T06:57:16Z", "hours": 2.0306, "text": "Didn’t get to release last night, as a new bug popped up. 11>MessagePack.GeneratedMessagePackResolver.g.cs(74,74): Error CS0426 : The type name 'Shiki' does not exist in the type 'GeneratedMessagePackResolver'11>------- Finished building project: UniScan.Network. Succeeded: False. Errors: 1. Was able to fix it with some property in the AssemblyInfo. (see: github.com/MessagePack-CSharp/MessagePack-CSharp/issues/2133) I changed the Identifier to be a Slug instead for the devices. Working on browser stuff real quick and will commit sometime soon."}, {"post_id": 47901, "ts": "2026-08-16T05:27:47Z", "hours": 1.0794, "text": "Not fully happy with the manner in which this works, but the virtual scanner does work! Will publish some if not all of it tonight, but no version tag for this yet until I fix my refactoring."}, {"post_id": 47322, "ts": "2026-08-15T06:23:55Z", "hours": 1.4389, "text": "Working on a virtual scanner module to help development by simulating a scanner, hope to have it ready by tomorrow. This also means any future contributors will be able to start contributing even if they do not own a scanner!"}, {"post_id": 46716, "ts": "2026-08-14T05:00:44Z", "hours": 0.8869, "text": "spun up entire android emulator just to realize it was some debug code I forgot to remove that was causing it to throw and die because afaik currentdirectory is / for android apps? gonna release this and then start working on remote adding from UI I think"}, {"post_id": 46099, "ts": "2026-08-13T02:11:59Z", "hours": 5.3278, "text": "UniScan source is now up, you can view it at https://github.com/UniScanProject/UniScan UniScan Client & Server v0.0.2 https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Client.App%2F0.0.2 https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Server.Host%2F0.0.2 Added CI for UniScan.Server.Host UniScan.Client.Core Use DI for PacketRegistry Update RemoteFactory.Create to pass PacketRegistry instance from DI Breaking Changes Updated RemoteServer constructors to take an instance of PacketRegistry Removed InternalUniScanClientPacketConfigurator Packets are now registered from AssembliesPacketSource InternalUniScanClientModule no longer adds an IPacketConfigurator to DI as this class has been removed. UniScan.Network Breaking Changes Renamed ScannerInfoPacket -> ScannerRegistrationPacket The new ID for this packet is UniScan:packet/clientbound/device/registration This fixes a bug where there were two instances of the same packet ID used for different packets in the codebase Removed BuiltinPacketRegistrar Removed IPacketConfigurator Moved PacketRegistry and RegistryPacketAttribute to UniScan.Network.Registry Created IPacketSource and AssembliesPacketSource AssembliesPacketSource collects all classes that inherit IPacket and have the RegistryPacket attribute. Removed the singleton Instance property from PacketRegistry Created PacketRegistry.RegisterFromSource and PacketRegistry.RegisterFromSource<TPacketSource> PacketRegistry.RegisterFromSource takes a given IPacketSource and registers all the packets it provides. PacketRegistry.RegisterFromSource<TPacketSource> creates a new instance of the given TPacketSource type and passes it to PacketRegistry.RegisterFromSource UniScan.Server.Core SubscribePacketHandler now sends the newly renamed ScannerRegistrationPacket Breaking Changes Removed PacketRegistry.RegisterFromSource InternalUniScanServerModule no longer adds an IPacketConfigurator to DI as this class has been removed. Packets are now registered from AssembliesPacketSource UniScan.Server.Host Now creates its own PacketRegistry and passes it to the UniScanServer constructor. UniScan.Tests Now creates its own PacketRegistry and passes it to the ClientSocket constructor."}, {"post_id": 44449, "ts": "2026-08-10T06:23:32Z", "hours": 11.9661, "text": "Been working on cleaning up the codebase in preparation for the initial commit. (thanks @CT5 for some of the motivation) https://github.com/UniScanProject/UniScan will be the project’s home. This does NOT mean it is ready to use, it is far from so. However, it means I will be able to publish releases and such, and everyone will be able to read the code. I will also be working on a Module alongside the core project, which acts as a virtual scanner, for testing of course. My next steps will be getting the virtual scanner module good enough to use as testing, then figure out what to do about the UI, as I don’t really want to force modules onto users. My idea here is that we send a UI ‘definition’(?) to the client for it to render, and let modules hook into them. Means we can also have each button call to the server when pressed if it’s meant to perform a server-side action. I am also planning a scope increase to include SDRs and two-way radios in the distant future. Would like y’alls opinions."}, {"post_id": 28082, "ts": "2026-07-14T03:34:16Z", "hours": 15.6422, "text": "Doing better at Avalonia so I was able to fix some issues and make the Home screen actually contain something useful, with this being a list of all connected remotes and their devices in one place. Oh, and a ton of netcode setup which I forgot to post in this devlog, will show it in the next one."}, {"post_id": 18787, "ts": "2026-06-30T00:07:21Z", "hours": 34.5525, "text": "so far so good! I might want to make the Identifier text slightly smaller….. Now onto making “subscriptions” work, couldn’t come up with a better name than this though. It takes me so long to do anything because I constantly have the urge to refactor things, as well as trying to get stuff perfect the first time."}, {"post_id": 7411, "ts": "2026-06-12T10:42:10Z", "hours": 11.1469, "text": "FINALLY HOLY SHIT WHY IS IT SUCH PAIN TO DO ASYNC INIT IN AVALONIA I wouldnt need to do this if the browser wasnt so picky with OPFS and async………. UGH basically now during OnFrameworkInitializationCompleted I just run task in background that calls my async function at end of async function it sets Content of root view to newly created MainViewModel"}, {"post_id": 6029, "ts": "2026-06-10T03:40:35Z", "hours": 2.2417, "text": "Finally getting remotes closer to working Now you can add them from the GUI (but you can’t connect to them yet…)"}, {"post_id": 5432, "ts": "2026-06-09T06:21:20Z", "hours": 0.9203, "text": "didn’t notice at the time but I was writing out the length with the wrong endianness fixed it and now dotnetty doesn’t silently ignore it"}, {"post_id": 5404, "ts": "2026-06-09T04:53:56Z", "hours": 10.0017, "text": "testing the socket, seems like packets aren’t being handled just yet but at least we’re getting somewhere"}]...
|
Title: UniScan by @dexrn | Stardance
Devlogs:
tes Title: UniScan by @dexrn | Stardance
Devlogs:
testing the socket, seems like packets aren’t being handled just yet but at least we’re getting somewhere
didn’t notice at the time but I was writing out the length with the wrong endianness fixed it and now dotnetty doesn’t silently ignore it
Finally getting remotes closer to working Now you can add them from the GUI (but you can’t connect to them yet…)
FINALLY HOLY SHIT WHY IS IT SUCH PAIN TO DO ASYNC INIT IN AVALONIA I wouldnt need to do this if the browser wasnt so picky with OPFS and async………. UGH basically now during OnFrameworkInitializationCompleted I just run task in background that calls my async function at end of async function it sets Content of root view to newly created MainViewModel
so far so good! I might want to make the Identifier text slightly smaller….. Now onto making “subscriptions” work, couldn’t come up with a better name than this though. It takes me so long to do anything because I constantly have the urge to refactor things, as well as trying to get stuff perfect the first time.
Doing better at Avalonia so I was able to fix some issues and make the Home screen actually contain something useful, with this being a list of all connected remotes and their devices in one place. Oh, and a ton of netcode setup which I forgot to post in this devlog, will show it in the next one.
Been working on cleaning up the codebase in preparation for the initial commit. (thanks @CT5 for some of the motivation) https://github.com/UniScanProject/UniScan will be the project’s home. This does NOT mean it is ready to use, it is far from so. However, it means I will be able to publish releases and such, and everyone will be able to read the code. I will also be working on a Module alongside the core project, which acts as a virtual scanner, for testing of course. My next steps will be getting the virtual scanner module good enough to use as testing, then figure out what to do about the UI, as I don’t really want to force modules onto users. My idea here is that we send a UI ‘definition’(?) to the client for it to render, and let modules hook into them. Means we can also have each button call to the server when pressed if it’s meant to perform a server-side action. I am also planning a scope increase to include SDRs and two-way radios in the distant future. Would like y’alls opinions.
UniScan source is now up, you can view it at https://github.com/UniScanProject/UniScan UniScan Client & Server v0.0.2 https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Client.App%2F0.0.2 https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Server.Host%2F0.0.2 Added CI for UniScan.Server.Host UniScan.Client.Core Use DI for PacketRegistry Update RemoteFactory.Create to pass PacketRegistry instance from DI Breaking Changes Updated RemoteServer constructors to take an instance of PacketRegistry Removed InternalUniScanClientPacketConfigurator Packets are now registered from AssembliesPacketSource InternalUniScanClientModule no longer adds an IPacketConfigurator to DI as this class has been removed. UniScan.Network Breaking Changes Renamed ScannerInfoPacket -> ScannerRegistrationPacket The new ID for this packet is UniScan:packet/clientbound/device/registration This fixes a bug where there were two instances of the same packet ID used for different packets in the codebase Removed BuiltinPacketRegistrar Removed IPacketConfigurator Moved PacketRegistry and RegistryPacketAttribute to UniScan.Network.Registry Created IPacketSource and AssembliesPacketSource AssembliesPacketSource collects all classes that inherit IPacket and have the RegistryPacket attribute. Removed the singleton Instance property from PacketRegistry Created PacketRegistry.RegisterFromSource and PacketRegistry.RegisterFromSource<TPacketSource> PacketRegistry.RegisterFromSource takes a given IPacketSource and registers all the packets it provides. PacketRegistry.RegisterFromSource<TPacketSource> creates a new instance of the given TPacketSource type and passes it to PacketRegistry.RegisterFromSource UniScan.Server.Core SubscribePacketHandler now sends the newly renamed ScannerRegistrationPacket Breaking Changes Removed PacketRegistry.RegisterFromSource InternalUniScanServerModule no longer adds an IPacketConfigurator to DI as this class has been removed. Packets are now registered from AssembliesPacketSource UniScan.Server.Host Now creates its own PacketRegistry and passes it to the UniScanServer constructor. UniScan.Tests Now creates its own PacketRegistry and passes it to the ClientSocket constructor.
spun up entire android emulator just to realize it was some debug code I forgot to remove that was causing it to throw and die because afaik currentdirectory is / for android apps? gonna release this and then start working on remote adding from UI I think
Working on a virtual scanner module to help development by simulating a scanner, hope to have it ready by tomorrow. This also means any future contributors will be able to start contributing even if they do not own a scanner!
Not fully happy with the manner in which this works, but the virtual scanner does work! Will publish some if not all of it tonight, but no version tag for this yet until I fix my refactoring.
Didn’t get to release last night, as a new bug popped up. 11>MessagePack.GeneratedMessagePackResolver.g.cs(74,74): Error CS0426 : The type name 'Shiki' does not exist in the type 'GeneratedMessagePackResolver'11>------- Finished building project: UniScan.Network. Succeeded: False. Errors: 1. Was able to fix it with some property in the AssemblyInfo. (see: github.com/MessagePack-CSharp/MessagePack-CSharp/issues/2133) I changed the Identifier to be a Slug instead for the devices. Working on browser stuff real quick and will commit sometime soon.
Waiting on a bug to be fixed in SpawnJS.WebWorkers and then hopefully next update will include web support + a website for y’all to test the client!!! Couldn’t do much today since I was so busy, however since I’m home now I can work on UniScan at a better time than 12 in the morning.
Using this time to test out M3 web (even though it’s in maintenance mode) This is just for the loading screen while it downloads all the WASMs. The cell tower is temporary until I can either make my own logo or find someone who will make one for me.
I think this looks pretty good for a little loading screen. I’ll probably add a try/catch if possible and show an error dialog when some fatal exception is thrown… The “Loading…” text is temporary and is done in Avalonia, will make a proper loading screen there sometime later.
OK I GOT IT SOMEWHAT WORKING IN BROWSER FINALLY still need to keep implementing OPFS stuff though. serilog 01:32:29 [ERR | UniScan.Client.Core.Config.Remote.RemotesListFile] Failed to save remotes to remotes.json System.Exception: Entry not found at SpawnDev.SpawnJS.SpawnJSRuntime.<_InteropCallApplyAsync>d__132`1[[SpawnDev.SpawnJS.JSObjects.FileSystemSyncAccessHandle, SpawnDev.SpawnJS, Version=2.1.8.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
FINALLY I GOT OPFS WORKING GG
UniScan now works in browser! I’ve also added a nice crash handler since unhandled exceptions act weird in the browser. Just polishing up now, will commit and set up Actions to host this. Once it’s up, the link will be https://uniscan.dexrn.me (The crash shown in the video is a real issue and will be fixed later.)
Alright I’ve committed and now you can access UniScan through https://uniscan.dexrn.me Note that since this is still an early version, you can’t really do much. You can also install it as a PWA on iOS, Android, and most desktop browsers. (pictured is UniScan as a PWA in ungoogled-chromium) Hopefully tomorrow I will fix the crash with adding remotes by making some sort of map of connection type -> UI widget to define the settings for them. (meant to post this yesterday, but GH was still working on some cert garbage)
Much nicer loading screen
FINALLY I GOT IT DONE IM SO TIRED New loading screen!!!! And OPFS file handles are now keyed by int im going to sleep now https://uniscan.dexrn.me
working on fixing the fact that you can’t really make remotes
Just released a new version, now you can make remotes from the UI finally. Here’s a video showing the creation flow. Note that the list is dynamic based on classes implementing IConnectionMethodFactoryViewModel with attribute ConnectionMethodFactoryViewModelAttribute
Working on dropping display names from client remotes As well as some refactor of the connection flow using my new TaskPipeline Once this is done, the server will be able to send branding, announcements, and other useful information on connect for the client to display!
Remotes are now stored per file instead of all inside one file. Additionally, server info is now properly cached! I had to rewrite most of the remote initialization flow, but now it’s much better. Adding and removing remotes automatically saves to disk because I can observe the list. This isn’t the end of this overhaul, but we’re getting closer… I think I want to refactor more of UniScanClient next. This is happening on another branch: https://github.com/UniScanProject/UniScan/tree/feat/use_server_provided_display_names After this branch is merged into main, I will make the available server info also show since we have the entire RemoteInfo being sent, which includes announcements, a description, a logo, etc.
Need opinions on this UI The server logo now shows where possible, so on the home view and in the sidebar In the remote view, there is a top ‘window’(?) that holds (from top to bottom): logo (to the side: title, description), server links and then the bottom floating window thing holds the server MOTD I still need to find a place to hold the server announcements… Alongside this were a ton of internal refactors, and the subscribe button now works (but the server still won’t properly send the current state) Been trying to post this since yesterday (I re-recorded the video today), but Hackatime has been down.
Here’s the announcements UI, I think I’m almost done on this branch and then I’ll continue on main.
I think this looks pretty nice apparently Avalonia has some nuget package that adds ItemsRepeater which does what I was originally trying to do in a cleaner way
UniScan Client v0.1.0, UniScan Server (Host) v0.1.1 Lots of changes, most of them are backend changes, but there are also a handful of frontend changes too! https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Client.App%2F0.1.0 Remotes are now stored per file instead of one large file, and the UI has been neatened up. The server now sends metadata containing a logo, various information, an MOTD, links, etc. The UI has been updated to display this information too. There are more changes than this, but there are too many to list here without hitting the 4000 char limit. Attached is a small video showing some of the new UI stuffs. By no means is it bug free, but the PR reached a point where it could be merged to allow for other important tasks to be focused on (like y’know, showing the actual scanner info)
Started working on state sync, will continue tomorrow probably States are synced now but I need to think about how to deal with scanner groups and channels and such because there are different types of channels (such as P25, conventional, etc) among other type issues and I want to reduce the need for any modules on the client if I can.
A friend of mine was able to test it on iOS, we got it working. Gonna have them send in the PR later and set up CI for it.
I FINALLY GOT SSR WORKING MY GOD still too primitive to do anything atm, working on it.
The client can now disconnect itself, and more styling has been added to the SSR UI (shown here is a Container which is centered and has a slight margin) tomorrow will be some more work on the SSR UI and then finally getting the scanner state to show on the client. I’m not too pleased with the idea that the server may change the look of the device pages on the clients, though… I still feel like there could be some better way to go about this.
While I didn’t get to scanner state displaying yet, I did refactor the classes that handle how remotes connect, disconnect, etc so that it’s not spread around the codebase. This fixes a few bugs related to state management due to how originally these viewmodels were constructed separately of eachother. Tomorrow I will be gone for a few hrs but should be back soon enough to hopefully make some more refactors and/or start on the remote display. Pictured is the new disconnect button in the remote on the sidebar
Sorry, haven’t been super active due to life. Fixed a few bugs in the meantime and implemented most of the SSR binding stuff, but it’s far from finished, hell I haven’t even gotten to test it yet. Will be gone for a bit tomorrow, and the next day I will be at a different house for a few days albeit with my computer.
Went on a small side-tangent. Icons! (dw still working on the SSR device stuff)
IT FINALLY WORKS The UI shit I built on the server now syncs to the client correctly, and the flow isn’t actually too bad! Although this will be improved by also having a registry…registry…(yeah I know it’s weird) on the client so that UI elements can have values bind to them, and all the server has to do is send the client data to those registries
And now we can finally start seeing the fruits of our labor
Okayyy so I was able to actually completely gut DeviceState and now it’s actually just a class which is also used to serialize individual states. This also means I can nuke reflection from the serialization process since I can just make IDeviceState forced to inherit IStateSerializer which will be much more dynamic!!! This means literally any states can be sent to the client and as long as the server or the module has the UI to render the states, it will work. This also allows states to be diffed and only the changed parts to be sent Second screenshot shows the UI sent by the server, note that the Volume: 0 is actually all being handled on the client via binding strings (where the server only sends the client the device states and the binding strings will look up those states itself)
Here’s a showcase of my Uniden SDS100 scanning, with UniScan showing the details in real time! I programmed in some garbage test channels so you won’t see any channels talking in this video. Everything shown here is sent by the server and updated by the server… Still somewhat far from complete as I have to figure out more stuff (mainly more stuff for the client to deal with, like hiding state display textblock on null bindings and more UI features/styling).
For funzies, here’s the dev build running inside a rooted Oculus Quest 2 (thanks to my friend for testing this) This is also a good test of the netcode over a long distance (they’re in Malaysia while I’m in the US) Getting close to committing this all alongside Shiki and such… Long cleanup process.
getting yelled at by starpheus because I haven’t made devlog yet spent all nighter last night refactoring shiki’s modulemanagement project and then today I refactored lots of shiki’s taskpipeline project, as well as some work being done on Shiki’s Result and family (shiki is the side project library with most of it’s code originating from UniScan, and UniScan heavily depends on it) Now the browser initialization is much cleaner (but not perfect of course) (first screenshot is new, second is old) Removed HostEnvironment because we usually only grab the parts from DI anyway
Have been working on more Shiki refactors and a nice language system for servers in UniScan to provide language strings without being able to overwrite client language strings Reworked most of the TaskPipelineBuilder with many more accepting delegate types and have done some cleanup since Tomorrow I will finish up releasing the next Shiki version and then I think I will be able to release the next UniScan commit and then keep working for an alpha release.
Finally committed the latest Shiki changes, will release UniScan’s next commit tomorrow.
New logo! (credits at end) I intend to make the logo customizable by allowing you to change the color of various elements, and choose between different logos (since no other software ive seen does this) Maybe even change the color of the scanner display when someone is talking even… Thanks to Unomelon for the base, which I used to draw the scanner. Check out Unomelon here: https://bsky.app/profile/unomelon.bsky.social , and his very cool game Allumeria here: https://allumeria.com/ (wasnt asked to add this but I think the game is really cool and am somewhat active in the community)
Working on settings…! After this there will be configuration on the serverside and then after that, audio streaming!
Coming in the next full update will also be UI modes This is so that the UI is optimized for every device and their input methods This is the Mobile one, and the main page will (when its finished) have all remotes including non-connected ones and a button to add more remotes and such....
|
1792785158.047574
|
1793389958.047574
|
|
70272
|
ControlGS by @NeonGS | Stardance
|
NeonGS
|
0
|
5.27
|
0
|
[]
|
[{"post_id": 81206, "ts": "202 [{"post_id": 81206, "ts": "2026-10-20T09:09:54Z", "hours": 0.7981, "text": "Added Mouse clicks, most of the script is complete, now i’m going to design a GUI using PySide6(i don’t know how it works so i will watch some tutorials for it and maybe take some help from chatGPT) so users can easily map their keys instead of going through my messy code."}, {"post_id": 81076, "ts": "2026-10-19T19:42:07Z", "hours": 0.7439, "text": "Added right joystick controls, this joystick is used to move the player camera. It uses pygame’s mouse move to move the camera, the right joystick might not need to be mapped to something else. I tested it on the browser-based version of GTA Vice City, and it’s actually working!"}, {"post_id": 80910, "ts": "2026-10-19T07:15:05Z", "hours": 1.425, "text": "Today I worked on the joystick to W, A, S, D mapping, the positive and negative axis got mixed up at first because joystick up and down axis was -ve up, +ve down and -ve left, +ve right, why didn’t they mapped it like a coordinate plane but it’s done now."}, {"post_id": 80773, "ts": "2026-10-18T19:03:54Z", "hours": 0.8439, "text": "After working on input from the controller, I worked on the key simulation mapped to a button to check if the mapping actually simulates the key press or not, tested by mapping A on my controller to the space button and adding spaces between “this is” in Notepad. Tomorrow I’ll try mapping the joystick to W, A, S, D."}, {"post_id": 80609, "ts": "2026-10-18T09:27:28Z", "hours": 1.4572, "text": "Hello everyone! I’m working on a desktop application that lets users map their controller buttons to keyboard keys, so that users can play browser-based games directly with their Xbox 360 or other gaming controller. Today i worked on key detection for all 14 buttons."}]...
|
Title: ControlGS by @NeonGS | Stardance
Devlogs:
Title: ControlGS by @NeonGS | Stardance
Devlogs:
Hello everyone! I’m working on a desktop application that lets users map their controller buttons to keyboard keys, so that users can play browser-based games directly with their Xbox 360 or other gaming controller. Today i worked on key detection for all 14 buttons.
After working on input from the controller, I worked on the key simulation mapped to a button to check if the mapping actually simulates the key press or not, tested by mapping A on my controller to the space button and adding spaces between “this is” in Notepad. Tomorrow I’ll try mapping the joystick to W, A, S, D.
Today I worked on the joystick to W, A, S, D mapping, the positive and negative axis got mixed up at first because joystick up and down axis was -ve up, +ve down and -ve left, +ve right, why didn’t they mapped it like a coordinate plane but it’s done now.
Added right joystick controls, this joystick is used to move the player camera. It uses pygame’s mouse move to move the camera, the right joystick might not need to be mapped to something else. I tested it on the browser-based version of GTA Vice City, and it’s actually working!
Added Mouse clicks, most of the script is complete, now i’m going to design a GUI using PySide6(i don’t know how it works so i will watch some tutorials for it and maybe take some help from chatGPT) so users can easily map their keys instead of going through my messy code....
|
1792968760.797243
|
1793573560.797243
|
|
68214
|
oops! by @Al_Lee | Stardance
|
Al_Lee
|
1
|
27.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T09:11:42Z", "hours": 27.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Doodle Jump, and Rise inspired game, about a crow jumping on clouds and shooting obstacles to protect his daughter’s balloon from popping. I found RigidBody2D’s in Godot very challenging, as they had different ways to move than character and area2d’s. I had to rely on Ai to learn and make the code for that part, but once I got 1 rigid body done, most of them I did myself after learning from Ai. I’m proud of stepping out of my comfort zone, and making a unique game instead of a generic platformer. For people testing my project, PLEASE read the controls, and know that the game takes a few attempts to beat.", "repo": "https://github.com/alchoilee-lgtm/Oops", "demo": "https://inzpire.itch.io/oops"}]...
|
[{"post_id": 81204, "ts": "202 [{"post_id": 81204, "ts": "2026-10-20T08:44:28Z", "hours": 5.5825, "text": "Final Game Done I did a lot I think, mostly bug fixing. I made the player have more health, added music, and sound effects. The Yap: I spent a lot of time testing the game on web, because I KEPT FORGETTING TO DO THAT ONE THING. Also for some reason, the particles for player shoot and bomb explosion were being green in the web version, so my fix to this was to make there be NO hue variation. Hue Variation is how much the colour of the particle can vary from the set colour. Also the bird enemies rotation was messsed up, so I had to do some flip_v and flip_h to fix that Also, my friend said the game was TOO HARD, so I made the balloon have some more health. That wasn’t the move, cuz now you could beat the game WITHOUT EVEN SHOOTING…. Anyway I ended up only adding 10 more health instead of the intial 30. Also I added some Hit and Shoot sound effects from JSFXR, which sounds really good, but I dont really know if it is too loud or too soft."}, {"post_id": 79005, "ts": "2026-10-12T09:52:41Z", "hours": 4.065, "text": "Finished the story and like all the art Quick Summary Made story slides Made title screen Made a bunch of art for my game Adjusted difficulty THE YAP: That art took me like most of the day, even though it says it only took me 4 hours. This is because I have no idea how to connect Hackatime to Scratch, which is what I use for my art (pls tell me if you know). I know that scratch is a pretty bad art editor, but I have no idea how to use other engines. A downside of this is that when I import my SVG’s (the file type that scratch uses for Vector mode art), I need to increase the scale of it in the import tab. I neeed to to this for EVERY SINGLE PIECE OF ART I MAKE!!!! Also every time I update art, I need to do it again. Also Scratch’s built in Text doesnt show on Godot for some reason, so I need to A) go to google drawings and type my text in a text box, B) import it as an SVG file C) load it into scratch, and D) if the formatting doesnt work, repeat the process The art isnt the only tiring thing, as I need to make timers for each of my dialogue tell it when to run, because for some reason, I decided to VOICE ACT it… For example, for my first line of text “there was once a happy family of crows, free of troubles and doubts” (i think its something like that) I need to make a timer, attach it to my Sprite2D (it contains the slide art), and set a timer for when to run. I need to do this process for every single piece of dialogue, and I have like 10. It sounds pretty horrible too, but I’ll probably add a toggle for it cuz I spent so long on it. The menu also went through a iteration, cuz at first, I was gonna put a play button on my balloon, and I was gonna make the balloon fly away when clicked. I soon realized (after making it) that it looks ugly so I opted for a space bar approach instead In the next devlog, I’ll make a win screen and death screen, as well as that toggle for story and a skip for the story. Anyways, cya in the next one :D"}, {"post_id": 78857, "ts": "2026-10-11T19:48:04Z", "hours": 1.8739, "text": "Woops Well, I finished up the main game, although I might need to add more difficulty lol I just need to add: -Main Menu -Art -Story -Music In other words, I have like 10 more hours worth of coding left to do More Yap: I tried to make a balance scale with a bunch of obstacles on top, So I attached this long thin RigidBody2D to a StaticBody2D with a Pin Joint, but only after I added it, I realized that For the balance to work, it needs to be in the middle of the balloons path… And it cant move… Thats basically just a instakill machine, so I scrapped the idea. I also added a lot of Linear Drag to the Obstacles at (37 seconds) so that it wouldnt be as easy. Now, you need to hit the middle of the obstacles for it to be cleared, otherwise the balloon gets COOKED I might also need a way of getting ammo, as its too OP just to spam bullets. Oh yeah, and the attack at 18 seconds is unavoidable right now, so I will probably make the attack slower or make the attack spawn at slower intervals, or maybe both lol."}, {"post_id": 78536, "ts": "2026-10-11T03:48:53Z", "hours": 6.0222, "text": "OOps! Made the player a Crow, and made art for him Made some cloud art for the platforms Made some balloon art Also, Balloons take damage now In addition, I added a new “bomb” attack Oh yeah I added a progress bar for how high up you are, and a health bar for the Balloons"}, {"post_id": 78162, "ts": "2026-10-09T20:34:05Z", "hours": 9.5539, "text": "New Game called “oops” The story is about this crow girl who accidently lets go of her helium balloon, so you. as the dad, have jump on the clouds, and shoot off any obstacles that could pop it. I haven’t made any art so its all made out of the godot icon lol, but the premise of the game is basically “do doodle jump while protecting your balloon. I spent a lot of time getting the idea down, but I think it is pretty good :)"}]...
|
Title: oops! by @Al_Lee | Stardance
Devlogs:
New Title: oops! by @Al_Lee | Stardance
Devlogs:
New Game called “oops” The story is about this crow girl who accidently lets go of her helium balloon, so you. as the dad, have jump on the clouds, and shoot off any obstacles that could pop it. I haven’t made any art so its all made out of the godot icon lol, but the premise of the game is basically “do doodle jump while protecting your balloon. I spent a lot of time getting the idea down, but I think it is pretty good :)
OOps! Made the player a Crow, and made art for him Made some cloud art for the platforms Made some balloon art Also, Balloons take damage now In addition, I added a new “bomb” attack Oh yeah I added a progress bar for how high up you are, and a health bar for the Balloons
Woops Well, I finished up the main game, although I might need to add more difficulty lol I just need to add: -Main Menu -Art -Story -Music In other words, I have like 10 more hours worth of coding left to do More Yap: I tried to make a balance scale with a bunch of obstacles on top, So I attached this long thin RigidBody2D to a StaticBody2D with a Pin Joint, but only after I added it, I realized that For the balance to work, it needs to be in the middle of the balloons path… And it cant move… Thats basically just a instakill machine, so I scrapped the idea. I also added a lot of Linear Drag to the Obstacles at (37 seconds) so that it wouldnt be as easy. Now, you need to hit the middle of the obstacles for it to be cleared, otherwise the balloon gets COOKED I might also need a way of getting ammo, as its too OP just to spam bullets. Oh yeah, and the attack at 18 seconds is unavoidable right now, so I will probably make the attack slower or make the attack spawn at slower intervals, or maybe both lol.
Finished the story and like all the art Quick Summary Made story slides Made title screen Made a bunch of art for my game Adjusted difficulty THE YAP: That art took me like most of the day, even though it says it only took me 4 hours. This is because I have no idea how to connect Hackatime to Scratch, which is what I use for my art (pls tell me if you know). I know that scratch is a pretty bad art editor, but I have no idea how to use other engines. A downside of this is that when I import my SVG’s (the file type that scratch uses for Vector mode art), I need to increase the scale of it in the import tab. I neeed to to this for EVERY SINGLE PIECE OF ART I MAKE!!!! Also every time I update art, I need to do it again. Also Scratch’s built in Text doesnt show on Godot for some reason, so I need to A) go to google drawings and type my text in a text box, B) import it as an SVG file C) load it into scratch, and D) if the formatting doesnt work, repeat the process The art isnt the only tiring thing, as I need to make timers for each of my dialogue tell it when to run, because for some reason, I decided to VOICE ACT it… For example, for my first line of text “there was once a happy family of crows, free of troubles and doubts” (i think its something like that) I need to make a timer, attach it to my Sprite2D (it contains the slide art), and set a timer for when to run. I need to do this process for every single piece of dialogue, and I have like 10. It sounds pretty horrible too, but I’ll probably add a toggle for it cuz I spent so long on it. The menu also went through a iteration, cuz at first, I was gonna put a play button on my balloon, and I was gonna make the balloon fly away when clicked. I soon realized (after making it) that it looks ugly so I opted for a space bar approach instead In the next devlog, I’ll make a win screen and death screen, as well as that toggle for story and a skip for the story. Anyways, cya in the next one :D
Final Game Done I did a lot I think, mostly bug fixing. I made the player have more health, added music, and sound effects. The Yap: I spent a lot of time testing the game on web, because I KEPT FORGETTING TO DO THAT ONE THING. Also for some reason, the particles for player shoot and bomb explosion were being green in the web version, so my fix to this was to make there be NO hue variation. Hue Variation is how much the colour of the particle can vary from the set colour. Also the bird enemies rotation was messsed up, so I had to do some flip_v and flip_h to fix that Also, my friend said the game was TOO HARD, so I made the balloon have some more health. That wasn’t the move, cuz now you could beat the game WITHOUT EVEN SHOOTING…. Anyway I ended up only adding 10 more health instead of the intial 30. Also I added some Hit and Shoot sound effects from JSFXR, which sounds really good, but I dont really know if it is too loud or too soft.
Ships:
I made a Doodle Jump, and Rise inspired game, about a crow jumping on clouds and shooting obstacles to protect his daughter’s balloon from popping. I found RigidBody2D’s in Godot very challenging, as they had different ways to move than character and area2d’s. I had to rely on Ai to learn and make the code for that part, but once I got 1 rigid body done, most of them I did myself after learning from Ai. I’m proud of stepping out of my comfort zone, and making a unique game instead of a generic platformer. For people testing my project, PLEASE read the controls, and know that the game takes a few attempts to beat....
|
1793119823.499869
|
1793206223.499869
|
|
70466
|
ForgeS3 V1 by @izaanhussain | Stardance
|
izaanhussain
|
0
|
3.64
|
0
|
[]
|
[{"post_id": 81203, "ts": "202 [{"post_id": 81203, "ts": "2026-10-20T08:23:50Z", "hours": 3.6378, "text": "I have finished routing and other things fully and i think its ready to ship ,and note this project was earlier submitted to phantom but it didn’t get reviewed so i told to remove it from there thanks"}]...
|
Title: ForgeS3 V1 by @izaanhussain | Stardance
De Title: ForgeS3 V1 by @izaanhussain | Stardance
Devlogs:
I have finished routing and other things fully and i think its ready to ship ,and note this project was earlier submitted to phantom but it didn’t get reviewed so i told to remove it from there thanks...
|
1793011652.3355808
|
1793616452.3355808
|
|
46814
|
text to desmos by @z2 | Stardance
|
z2
|
1
|
46.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-23T22:59:30Z", "hours": 46.0, "multiplier": 13.32, "payout": 0, "blessing": "neutral", "text": "SHIP 🚢🚢🚢 Pretty proud of this. The UI is polished enough that I’d be happy using it when I need to, though I haven’t implemented all the features I wanted yet. The biggest challenge was probably figuring out how text shaping works, and how to use the unstable/underdocumented library I picked…", "repo": "https://github.com/lemonlime4/text-to-polygon", "demo": "https://lemonlime4.github.io/text-to-polygon/"}]...
|
[{"post_id": 81202, "ts": "202 [{"post_id": 81202, "ts": "2026-10-20T08:20:32Z", "hours": 2.1039, "text": "Implemented exporting and added text segment metrics. It’s 4 am here. This is my final devlog, goodbye 👋"}, {"post_id": 81174, "ts": "2026-10-20T05:57:42Z", "hours": 11.1444, "text": "Polished up everything. A lot of UI work and a few other changes I can’t remember. Anyways, we finally have something resembling a MVP :)"}, {"post_id": 79239, "ts": "2026-10-13T05:18:31Z", "hours": 7.4878, "text": "Finally embedded the actual calculator (which was surprisingly easy, thanks desmos team!) Also, I fixed a bug where control points were being rounded to a grid at small font sizes. I don’t think the current error metric for bezier curve flatness is good, since it’s a distance that depends on the size of the curve (which depends on font size). Maybe I could just scale the threshold by the font size, but I’d have to look more into it. That’s why in the new screenshot, there are way too many samples, even though I set the tolerance slider to the max. The sampling now happens in glyph space, which is at a way larger scale (1em = around 1000 units) compared to the output space, and I forgot to change the slider’s bounds. Also did a bunch of rewrites, and bumped the text shaping/font loading dependencies; their new API is so much simpler that I was able to get rid of a dependency I previously needed. It’s funny, but I regret that I had to deal with the old API."}, {"post_id": 70388, "ts": "2026-09-19T02:56:00Z", "hours": 1.5586, "text": "Implemented recursive subdivision sampling (why was this so easy?) Basically you split each cubic curve into two cub-curves at t=0.5, and repeat until the curve is approximately a line segment. Though I need to find error metrics that are easy to understand, the current one depends on font size. Image: sample points in black, control points in blue"}, {"post_id": 66194, "ts": "2026-09-11T21:13:10Z", "hours": 4.2167, "text": "Refactoring and cleaning up, in preparation for at least 2 more sampling options (fixed density and adaptive). Also removed duplicated code so that the debug view actually reflects the polygon output, instead of doing its own text shaping. Have random code screenshots now"}, {"post_id": 64570, "ts": "2026-09-09T02:34:21Z", "hours": 2.7386, "text": "Cleaned up the code and implemented a makeshift curve sampler. Currently I’m taking a fixed number of samples for each bezier segment in the glyph splines, so the resolution is inconsistent and there’s way more points than necessary in some places."}, {"post_id": 61702, "ts": "2026-09-04T18:59:18Z", "hours": 5.7539, "text": "Can now load .woff and .woff2 fonts, and the decompressed font & its shaper are stored globally instead of re-parsing every text update. I’m just outputting control points now, but soon I can finally implement the actual sampling. Also, something weird is going on with the Fira code variable font?"}, {"post_id": 50075, "ts": "2026-08-19T04:07:14Z", "hours": 8.8028, "text": "Drawing text to an svg path. Also set up a debug ui to make sure the text shaping (glyph layout, ligatures, etc) is being done properly. For that, I ended up using a recent HarfBuzz port with basically no docs, which was really fun and not at all hard to understand. I also spent a lot of time searching up browser apis on MDN, and figuring out how to work with async. Next up: keep the parsed font loaded on the Rust side detect and decompress .woff files actually convert it to polygon allow specifying fallback fonts find out how to allow more formatted text (italic/bold, line breaks, centering, etc)"}, {"post_id": 45325, "ts": "2026-08-11T18:19:47Z", "hours": 1.9942, "text": "First commit, I finished setting up the tooling and a template for svelte/wasm. Now time to go learn svelte"}]...
|
Title: text to desmos by @z2 | Stardance
Devlogs: Title: text to desmos by @z2 | Stardance
Devlogs:
First commit, I finished setting up the tooling and a template for svelte/wasm. Now time to go learn svelte
Drawing text to an svg path. Also set up a debug ui to make sure the text shaping (glyph layout, ligatures, etc) is being done properly. For that, I ended up using a recent HarfBuzz port with basically no docs, which was really fun and not at all hard to understand. I also spent a lot of time searching up browser apis on MDN, and figuring out how to work with async. Next up: keep the parsed font loaded on the Rust side detect and decompress .woff files actually convert it to polygon allow specifying fallback fonts find out how to allow more formatted text (italic/bold, line breaks, centering, etc)
Can now load .woff and .woff2 fonts, and the decompressed font & its shaper are stored globally instead of re-parsing every text update. I’m just outputting control points now, but soon I can finally implement the actual sampling. Also, something weird is going on with the Fira code variable font?
Cleaned up the code and implemented a makeshift curve sampler. Currently I’m taking a fixed number of samples for each bezier segment in the glyph splines, so the resolution is inconsistent and there’s way more points than necessary in some places.
Refactoring and cleaning up, in preparation for at least 2 more sampling options (fixed density and adaptive). Also removed duplicated code so that the debug view actually reflects the polygon output, instead of doing its own text shaping. Have random code screenshots now
Implemented recursive subdivision sampling (why was this so easy?) Basically you split each cubic curve into two cub-curves at t=0.5, and repeat until the curve is approximately a line segment. Though I need to find error metrics that are easy to understand, the current one depends on font size. Image: sample points in black, control points in blue
Finally embedded the actual calculator (which was surprisingly easy, thanks desmos team!) Also, I fixed a bug where control points were being rounded to a grid at small font sizes. I don’t think the current error metric for bezier curve flatness is good, since it’s a distance that depends on the size of the curve (which depends on font size). Maybe I could just scale the threshold by the font size, but I’d have to look more into it. That’s why in the new screenshot, there are way too many samples, even though I set the tolerance slider to the max. The sampling now happens in glyph space, which is at a way larger scale (1em = around 1000 units) compared to the output space, and I forgot to change the slider’s bounds. Also did a bunch of rewrites, and bumped the text shaping/font loading dependencies; their new API is so much simpler that I was able to get rid of a dependency I previously needed. It’s funny, but I regret that I had to deal with the old API.
Polished up everything. A lot of UI work and a few other changes I can’t remember. Anyways, we finally have something resembling a MVP :)
Implemented exporting and added text segment metrics. It’s 4 am here. This is my final devlog, goodbye 👋
Ships:
SHIP 🚢🚢🚢 Pretty proud of this. The UI is polished enough that I’d be happy using it when I need to, though I haven’t implemented all the features I wanted yet. The biggest challenge was probably figuring out how text shaping works, and how to use the unstable/underdocumented library I picked…...
|
1793155767.6558588
|
1793242167.6558588
|
|
68314
|
inkan by @Vensin | Stardance
|
Vensin
|
0
|
11.67
|
0
|
[]
|
[{"post_id": 81199, "ts": "202 [{"post_id": 81199, "ts": "2026-10-20T08:12:20Z", "hours": 3.8042, "text": "Hello again my little Stardancers ✨ inkan 0.8.0 is out. This one is less about new tricks and more about making inkan something you can actually build on without it shifting under you. The big one: the API is stable now. Every function is marked either stable or experimental. Stable stuff won’t just change or disappear anymore. If I rename something, the old name keeps working with a warning for at least two versions and six months. Before freezing it I had the whole API reviewed and cleaned up the things I would have regretted later, like time options that were seconds in one place and milliseconds in another, or two different names for the same origin setting. There’s also a test now that fails the moment the public types change by accident. Then storage. Until now every feature kept its own little store in memory, so jobs and logins only worked in one process. Now there’s one Store in the core, and four new packages that plug into it: redis, postgres, mongo and mysql. You pass in your own database client, so none of them add a dependency. With one of those, jobs, sessions, logins and rate limits work across several processes and servers. Each adapter has to pass the same test suite, and they’re all tested against real database servers, not fakes. They also got a security review. That found a few real things, like a way to inject SQL into MySQL under unusual server settings, and that my login protection had become weaker than before. All fixed. Smaller stuff: React hooks for live data in @inkanjs /query, so you can show job progress or websocket messages with one hook websockets now also run on uWebSockets.js async handlers got faster and are now as fast as plain node:http on the benchmark a fix where the dev inspector could be reached when it shouldn’t About speed, honestly: on the GitHub runner inkan scored 91.0 and Fastify 89.9. inkan was ahead in two runs and level in the third, so I’m calling it level to slightly ahead, not faster. At first 0.8 even looked slower than 0.7, so I measured the CPU time per request separately, and it’s exactly the same as 0.7. The difference was the test machine moving around. One bug I only found during the release: on Node 22 a websocket that gets refused never tells you, it just waits forever. That’s fixed in 0.8.1. Next: I want to make writing adapters for other servers easier, and I still want someone from Fastify and Hono to look at my benchmark code. See you next time ✨"}, {"post_id": 77878, "ts": "2026-10-08T17:10:32Z", "hours": 1.4211, "text": "Hello again my little Stardancers ✨inkan 0.6.0 is out, and this one was a big one. The plan was simple to say and hard to do: make inkan faster than Fastify on plain node:http, without generating code at runtime the way Fastify does with new Function. I wrote a plan with phases, measured main before touching anything, and then went through it step by step, keeping only what the numbers carried.First the fixed costs. Every request used to make about twenty little objects where six would do, and the request id came from a random UUID. Now the id comes from a counter, everything a route can work out ahead of time is worked out once at start, and a request with a body is only routed once. That alone saved about four percent of CPU per request. Then something odd happened: over HTTP, under full load, it was ten percent slower, even though it spent less CPU. I spent a good while hunting that down, measuring one change at a time against the last one, and it turned out to be fields I had made lazy. Filled on first use, they cost more under load than they saved. Made at once again, and the ten percent were back.Then the schemas. Every schema now checks through one function made once from its rules, which I call its stamp, instead of walking the schema tree on every request. To make sure nothing changed, a test builds every schema twice, once the old way and once the new, and compares two thousand random schemas and values. Same values, same messages, same paths.Writing answers was the lesson of the week. My first idea was a writer in plain JavaScript that writes only what the contract lists in one pass. It was clean, and it was almost twice as slow as the native JSON.stringify. So it went. What stayed: a plain object that holds exactly what the contract lists goes straight to the native writer, and anything else is copied with only the declared fields first. While pinning the old writer down with tests I also found five places where it wrote something it should not have, and two of them could let a key the contract never listed slip out. All five are fixed.And the honest result: on the bench inkan 0.6.0 scores 89.1 against Fastify’s 88.6, with node:http as 100. That is level, not ahead, because the runs overlap, so I am not calling it faster. It is 5.5 percent faster than 0.5, and with inkan seal a body of 50 objects is checked faster than by any server on the bench. Every number, phase by phase, is in the repository, including the ideas that did not work.There is more than speed in this one. The context can answer with text, html, a redirect or a 404 now, and the html tag escapes everything you put into it, so a name someone typed can never become a script on your page. Layouts work per scope, cookies are safe by default, and a handler can hand back rows straight from a database cursor: they go out as they are read, each one trimmed to the contract, as JSON or as one line per row. ctx.csv writes a million rows without holding them in memory, ctx.signal stops a query when the client leaves or the time is up, and a route can cache its answers and ask the database once when ten people ask at the same time.The website got a new logo too, 印 between braces, and the docs now have a real API section with every method and every option in one place.Next up is winning the scenarios where Fastify is still ahead: small requests, the router and middleware. I have a few ideas.See you next time ✨"}, {"post_id": 77789, "ts": "2026-10-08T08:47:47Z", "hours": 1.1386, "text": "Hello again my little Stardancers ✨ It’s devlog time, and this one comes with a confession: I moved a real app onto inkan. Not a todo list. A real one with 55 routes, file uploads, backups of a couple hundred MB, sessions and a mail setup. It ran on Express, and I wanted to know what happens when inkan has to do real work. Turns out: mostly fine. But not completely. And that “not completely” turned into inkan 0.5.0 The first problem was request bodies. inkan read every body into memory, with one 1 MB limit for the whole app. Fine for JSON, less fine for “hey, can I upload this 2 GB backup?” No ❤️ So I paused the migration and fixed the framework first. 0.5.0 brings t.binary() for files sent as the request body, and t.stream() for real streaming uploads: your handler gets the upload chunk by chunk, so the file never sits in memory. Limits are per route, so one endpoint can take 2 GB while the rest stays at 1 MB. On the way I found a fun bug: when a stream hit its limit, or the server answered 401 before the upload was done, the connection could just… hang. Fixed, the response arrives and the rest gets drained properly Then the frontend. Now there’s serveStatic(): hashed assets cached for a year, index.html never stuck in a cache, and unknown routes fall back to the SPA. Except /api, where a typo gets a real 404 instead of your entire frontend 💅 compress() does Brotli and gzip, streams included. In the app I migrated, the bundle went from 75 KB to 18 KB. There’s also ctx.ip for the login rate limiter (Bun and Deno too), per-route body limits and app.bodyFor() for adapter authors. And the benchmarks say no potato: every scenario stayed within ±4% of main on the same GitHub runner. And then something else happened: inkan got integrations 🧩 All in one repo at github.com/inkanjs/integrations. @inkanjs /vite runs your API inside the Vite dev server, so frontend and API share one port. No proxy, no second terminal, just npm run dev. The API reloads on every save, each reload counts as a fresh restart so your timers don’t multiply, the docs and inspector links show up in Vite’s banner, and a broken API shows up in Vite’s error overlay. @inkanjs /next turns an inkan app into Next.js route handlers with one line, works with the Pages Router too, and has direct(app): a typed client for Server Components that calls your API in the same process. CI builds and starts a real Next.js app, because “works on my machine” isn’t a testing strategy. @inkanjs /query is for TanStack Query: keys and types straight from the API paths, failed responses as errors with the problem document, and a retry() that won’t retry a 404 until the heat death of the universe. @inkanjs /uws runs inkan on uWebSockets.js, with graceful shutdown and HTTPS, and it’s the fastest way to run inkan. Nuxt, SvelteKit, Astro and Remix don’t even need a package: app.fetch is enough, and the repo has recipes. And the migration? All 55 routes run on inkan now, split into files by area instead of one 1300-line index.js. Every test passes, the frontend didn’t change a single line, and dev went from two processes, two ports and a proxy to npm run dev on one port. Express, compression and concurrently are gone, 74 packages fewer A real project is great at showing you where your framework doesn’t hold up. inkan had a few of those places. Now it has fewer. npm install @vxnsin / [email protected] See you next time, Stardancers 🌙"}, {"post_id": 77562, "ts": "2026-10-07T14:20:08Z", "hours": 2.1539, "text": "Hello again my little Stardancers ✨ inkan 0.4.0 is out, and I closed the entire milestone in one day. Every single issue. I don’t know who I am anymore either. The one I’m proudest of: npx @vxnsin /inkan learn. It’s a tutorial that lives in your terminal. It sets up a tiny tea shop, gives you twelve quests, and checks your work every time you hit save. Forgot a validation rule? It tells you. Stuck? Press h for a hint, press it again for a less subtle hint. By quest 12 you’ve built routes, contracts, auth, hooks, plugins, and you’ve broken a client on purpose (for science). No other web framework ships a tutorial inside itself, so I figured: why not be the first one. inkan also got grown-up stuff this time. Hooks, plugins and decorators, so you can bolt on your own things without touching the core, and a little rate limiter built on exactly those APIs to prove it works. Routes can now live in a folder tree, routes/teas/[id].ts and friends. And inkan finally leaves the house: app.fetch runs it on Bun, Deno and serverless, workers: “auto” uses every CPU core you own, and there’s an adapter for uWebSockets.js if you want to go absolutely feral. Then there’s inkan seal. It stamps your contracts into plain code ahead of time, so big requests get checked in about half the time. No eval, no runtime magic, just a file you can actually read. And if your contract changes and you forget to reseal, inkan notices and quietly ignores the stale seal. It’s basically a very responsible goldfish. Speed check, because I promised honest numbers: on a fair benchmark inkan beats Hono, by 0.4 points. I’m choosing to celebrate that like it’s 40. Fastify is still a bit ahead, Express is still Express. But put inkan on the uWS adapter and it’s a third faster than plain Node itself. Who’s the framework now. Also: inkan moved into its own home at github.com/inkanjs, and routes can now say who’s allowed in (security: “bearer”) and actually mean it."}, {"post_id": 77516, "ts": "2026-10-07T09:35:21Z", "hours": 2.4317, "text": "Hello again my little Stardancers ✨ inkan 0.3.0 is out, and it has learned to read the room. Specifically: it now notices when you’re about to break things for everyone who depends on you. Which is more than I can say for some group projects. The big one is inkan diff. You give it the OpenAPI document from your last release and your app as it is now, and it tells you exactly which changes would make your clients cry. A field that suddenly became required? Breaking. A route you “cleaned up”? Very breaking. A new optional field? Totally fine, go off. Put it in CI and your pipeline turns red before your users do. Also new: npx @vxnsin /inkan examples drops a whole explained project into your folder. Six of them, from “hello” to “deploy”, each with a README that tells you what to read first and a list of ways to break it on purpose, because honestly that’s how we all learn anyway. There’s a typed client now too: your frontend gets its types straight from the server routes, no codegen, no ritual sacrifices. Typo in a path? It doesn’t compile. Beautiful. And the rest of the goodie bag: server-sent events with a schema per event (even endless streams can be tests now, don’t ask how, it’s magic and also a counter), file uploads with size and type limits, examples that build on each other (“create a tea, then fetch it”), request ids in every log line and every error, a replay button in the inspector that turns real traffic into examples, and you can now edit requests right on the docs page. Huge thanks to AndrewCMD for dates, refinements and recursive schemas, inkan’s brain got noticeably bigger."}, {"post_id": 77381, "ts": "2026-10-06T18:46:55Z", "hours": 0.3147, "text": "Hello again my little Stardancers ✨ inkan 0.2.0 is out, and it has trust issues now, just like my ex. The difference is that inkan’s trust issues are actually helpful. The big one: inkan check now tells you what you forgot to test. If your route promises a 409 but none of your examples ever triggers it, inkan points at it and says “that one, nobody checked that one.” Add –strict and your CI refuses to go green until you write that example. Your docs page shows the same hint, so the lie gets caught twice. Browsers can finally talk to inkan from another origin too. There’s a little cors() middleware, and OPTIONS requests get answered automatically instead of a sad 405. The terminal got its colours, RinZ27’s lifecycle hooks made it in, and the CLI now has real tests of its own. Releasing is one click now as well: a GitHub release publishes to npm with a signed link back to the exact commit, so you can check that what you install is what’s on GitHub."}, {"post_id": 77348, "ts": "2026-10-06T17:02:27Z", "hours": 0.4039, "text": "Hello my little Stardancers ✨ Devlog time! No ship yet, but here’s what’s been cooking. inkan (印鑑) is an API server for Node where the docs can’t lie. Every route gets one contract, and from that inkan validates requests, types your handler, writes OpenAPI and serves docs. The fun part: every example in the docs also runs as a test, so if your code drifts away from what the docs promise, inkan check goes red before anyone reads a lie. Zero dependencies, so your node_modules can finally rest. This week I merged my first community PR 🎉 It adds lifecycle hooks for connecting your database on startup and closing it cleanly on Ctrl+C. Before merging I caught two sneaky bugs: a failing startup hook took the whole server down, and a stuck shutdown hook could keep the process alive forever, like a guest who won’t leave the party. Both are fixed and tested. Next up is better logging, and then the ship is coming soon™ 🫡"}]...
|
Title: inkan by @Vensin | Stardance
Devlogs:
Hell Title: inkan by @Vensin | Stardance
Devlogs:
Hello my little Stardancers ✨ Devlog time! No ship yet, but here’s what’s been cooking. inkan (印鑑) is an API server for Node where the docs can’t lie. Every route gets one contract, and from that inkan validates requests, types your handler, writes OpenAPI and serves docs. The fun part: every example in the docs also runs as a test, so if your code drifts away from what the docs promise, inkan check goes red before anyone reads a lie. Zero dependencies, so your node_modules can finally rest. This week I merged my first community PR 🎉 It adds lifecycle hooks for connecting your database on startup and closing it cleanly on Ctrl+C. Before merging I caught two sneaky bugs: a failing startup hook took the whole server down, and a stuck shutdown hook could keep the process alive forever, like a guest who won’t leave the party. Both are fixed and tested. Next up is better logging, and then the ship is coming soon™ 🫡
Hello again my little Stardancers ✨ inkan 0.2.0 is out, and it has trust issues now, just like my ex. The difference is that inkan’s trust issues are actually helpful. The big one: inkan check now tells you what you forgot to test. If your route promises a 409 but none of your examples ever triggers it, inkan points at it and says “that one, nobody checked that one.” Add –strict and your CI refuses to go green until you write that example. Your docs page shows the same hint, so the lie gets caught twice. Browsers can finally talk to inkan from another origin too. There’s a little cors() middleware, and OPTIONS requests get answered automatically instead of a sad 405. The terminal got its colours, RinZ27’s lifecycle hooks made it in, and the CLI now has real tests of its own. Releasing is one click now as well: a GitHub release publishes to npm with a signed link back to the exact commit, so you can check that what you install is what’s on GitHub.
Hello again my little Stardancers ✨ inkan 0.3.0 is out, and it has learned to read the room. Specifically: it now notices when you’re about to break things for everyone who depends on you. Which is more than I can say for some group projects. The big one is inkan diff. You give it the OpenAPI document from your last release and your app as it is now, and it tells you exactly which changes would make your clients cry. A field that suddenly became required? Breaking. A route you “cleaned up”? Very breaking. A new optional field? Totally fine, go off. Put it in CI and your pipeline turns red before your users do. Also new: npx @vxnsin /inkan examples drops a whole explained project into your folder. Six of them, from “hello” to “deploy”, each with a README that tells you what to read first and a list of ways to break it on purpose, because honestly that’s how we all learn anyway. There’s a typed client now too: your frontend gets its types straight from the server routes, no codegen, no ritual sacrifices. Typo in a path? It doesn’t compile. Beautiful. And the rest of the goodie bag: server-sent events with a schema per event (even endless streams can be tests now, don’t ask how, it’s magic and also a counter), file uploads with size and type limits, examples that build on each other (“create a tea, then fetch it”), request ids in every log line and every error, a replay button in the inspector that turns real traffic into examples, and you can now edit requests right on the docs page. Huge thanks to AndrewCMD for dates, refinements and recursive schemas, inkan’s brain got noticeably bigger.
Hello again my little Stardancers ✨ inkan 0.4.0 is out, and I closed the entire milestone in one day. Every single issue. I don’t know who I am anymore either. The one I’m proudest of: npx @vxnsin /inkan learn. It’s a tutorial that lives in your terminal. It sets up a tiny tea shop, gives you twelve quests, and checks your work every time you hit save. Forgot a validation rule? It tells you. Stuck? Press h for a hint, press it again for a less subtle hint. By quest 12 you’ve built routes, contracts, auth, hooks, plugins, and you’ve broken a client on purpose (for science). No other web framework ships a tutorial inside itself, so I figured: why not be the first one. inkan also got grown-up stuff this time. Hooks, plugins and decorators, so you can bolt on your own things without touching the core, and a little rate limiter built on exactly those APIs to prove it works. Routes can now live in a folder tree, routes/teas/[id].ts and friends. And inkan finally leaves the house: app.fetch runs it on Bun, Deno and serverless, workers: “auto” uses every CPU core you own, and there’s an adapter for uWebSockets.js if you want to go absolutely feral. Then there’s inkan seal. It stamps your contracts into plain code ahead of time, so big requests get checked in about half the time. No eval, no runtime magic, just a file you can actually read. And if your contract changes and you forget to reseal, inkan notices and quietly ignores the stale seal. It’s basically a very responsible goldfish. Speed check, because I promised honest numbers: on a fair benchmark inkan beats Hono, by 0.4 points. I’m choosing to celebrate that like it’s 40. Fastify is still a bit ahead, Express is still Express. But put inkan on the uWS adapter and it’s a third faster than plain Node itself. Who’s the framework now. Also: inkan moved into its own home at github.com/inkanjs, and routes can now say who’s allowed in (security: “bearer”) and actually mean it.
Hello again my little Stardancers ✨ It’s devlog time, and this one comes with a confession: I moved a real app onto inkan. Not a todo list. A real one with 55 routes, file uploads, backups of a couple hundred MB, sessions and a mail setup. It ran on Express, and I wanted to know what happens when inkan has to do real work. Turns out: mostly fine. But not completely. And that “not completely” turned into inkan 0.5.0 The first problem was request bodies. inkan read every body into memory, with one 1 MB limit for the whole app. Fine for JSON, less fine for “hey, can I upload this 2 GB backup?” No ❤️ So I paused the migration and fixed the framework first. 0.5.0 brings t.binary() for files sent as the request body, and t.stream() for real streaming uploads: your handler gets the upload chunk by chunk, so the file never sits in memory. Limits are per route, so one endpoint can take 2 GB while the rest stays at 1 MB. On the way I found a fun bug: when a stream hit its limit, or the server answered 401 before the upload was done, the connection could just… hang. Fixed, the response arrives and the rest gets drained properly Then the frontend. Now there’s serveStatic(): hashed assets cached for a year, index.html never stuck in a cache, and unknown routes fall back to the SPA. Except /api, where a typo gets a real 404 instead of your entire frontend 💅 compress() does Brotli and gzip, streams included. In the app I migrated, the bundle went from 75 KB to 18 KB. There’s also ctx.ip for the login rate limiter (Bun and Deno too), per-route body limits and app.bodyFor() for adapter authors. And the benchmarks say no potato: every scenario stayed within ±4% of main on the same GitHub runner. And then something else happened: inkan got integrations 🧩 All in one repo at github.com/inkanjs/integrations. @inkanjs /vite runs your API inside the Vite dev server, so frontend and API share one port. No proxy, no second terminal, just npm run dev. The API reloads on every save, each reload counts as a fresh restart so your timers don’t multiply, the docs and inspector links show up in Vite’s banner, and a broken API shows up in Vite’s error overlay. @inkanjs /next turns an inkan app into Next.js route handlers with one line, works with the Pages Router too, and has direct(app): a typed client for Server Components that calls your API in the same process. CI builds and starts a real Next.js app, because “works on my machine” isn’t a testing strategy. @inkanjs /query is for TanStack Query: keys and types straight from the API paths, failed responses as errors with the problem document, and a retry() that won’t retry a 404 until the heat death of the universe. @inkanjs /uws runs inkan on uWebSockets.js, with graceful shutdown and HTTPS, and it’s the fastest way to run inkan. Nuxt, SvelteKit, Astro and Remix don’t even need a package: app.fetch is enough, and the repo has recipes. And the migration? All 55 routes run on inkan now, split into files by area instead of one 1300-line index.js. Every test passes, the frontend didn’t change a single line, and dev went from two processes, two ports and a proxy to npm run dev on one port. Express, compression and concurrently are gone, 74 packages fewer A real project is great at showing you where your framework doesn’t hold up. inkan had a few of those places. Now it has fewer. npm install @vxnsin / [email protected] See you next time, Stardancers 🌙
Hello again my little Stardancers ✨inkan 0.6.0 is out, and this one was a big one. The plan was simple to say and hard to do: make inkan faster than Fastify on plain node:http, without generating code at runtime the way Fastify does with new Function. I wrote a plan with phases, measured main before touching anything, and then went through it step by step, keeping only what the numbers carried.First the fixed costs. Every request used to make about twenty little objects where six would do, and the request id came from a random UUID. Now the id comes from a counter, everything a route can work out ahead of time is worked out once at start, and a request with a body is only routed once. That alone saved about four percent of CPU per request. Then something odd happened: over HTTP, under full load, it was ten percent slower, even though it spent less CPU. I spent a good while hunting that down, measuring one change at a time against the last one, and it turned out to be fields I had made lazy. Filled on first use, they cost more under load than they saved. Made at once again, and the ten percent were back.Then the schemas. Every schema now checks through one function made once from its rules, which I call its stamp, instead of walking the schema tree on every request. To make sure nothing changed, a test builds every schema twice, once the old way and once the new, and compares two thousand random schemas and values. Same values, same messages, same paths.Writing answers was the lesson of the week. My first idea was a writer in plain JavaScript that writes only what the contract lists in one pass. It was clean, and it was almost twice as slow as the native JSON.stringify. So it went. What stayed: a plain object that holds exactly what the contract lists goes straight to the native writer, and anything else is copied with only the declared fields first. While pinning the old writer down with tests I also found five places where it wrote something it should not have, and two of them could let a key the contract never listed slip out. All five are fixed.And the honest result: on the bench inkan 0.6.0 scores 89.1 against Fastify’s 88.6, with node:http as 100. That is level, not ahead, because the runs overlap, so I am not calling it faster. It is 5.5 percent faster than 0.5, and with inkan seal a body of 50 objects is checked faster than by any server on the bench. Every number, phase by phase, is in the repository, including the ideas that did not work.There is more than speed in this one. The context can answer with text, html, a redirect or a 404 now, and the html tag escapes everything you put into it, so a name someone typed can never become a script on your page. Layouts work per scope, cookies are safe by default, and a handler can hand back rows straight from a database cursor: they go out as they are read, each one trimmed to the contract, as JSON or as one line per row. ctx.csv writes a million rows without holding them in memory, ctx.signal stops a query when the client leaves or the time is up, and a route can cache its answers and ask the database once when ten people ask at the same time.The website got a new logo too, 印 between braces, and the docs now have a real API section with every method and every option in one place.Next up is winning the scenarios where Fastify is still ahead: small requests, the router and middleware. I have a few ideas.See you next time ✨
Hello again my little Stardancers ✨ inkan 0.8.0 is out. This one is less about new tricks and more about making inkan something you can actually build on without it shifting under you. The big one: the API is stable now. Every function is marked either stable or experimental. Stable stuff won’t just change or disappear anymore. If I rename something, the old name keeps working with a warning for at least two versions and six months. Before freezing it I had the whole API reviewed and cleaned up the things I would have regretted later, like time options that were seconds in one place and milliseconds in another, or two different names for the same origin setting. There’s also a test now that fails the moment the public types change by accident. Then storage. Until now every feature kept its own little store in memory, so jobs and logins only worked in one process. Now there’s one Store in the core, and four new packages that plug into it: redis, postgres, mongo and mysql. You pass in your own database client, so none of them add a dependency. With one of those, jobs, sessions, logins and rate limits work across several processes and servers. Each adapter has to pass the same test suite, and they’re all tested against real database servers, not fakes. They also got a security review. That found a few real things, like a way to inject SQL into MySQL under unusual server settings, and that my login protection had become weaker than before. All fixed. Smaller stuff: React hooks for live data in @inkanjs /query, so you can show job progress or websocket messages with one hook websockets now also run on uWebSockets.js async handlers got faster and are now as fast as plain node:http on the benchmark a fix where the dev inspector could be reached when it shouldn’t About speed, honestly: on the GitHub runner inkan scored 91.0 and Fastify 89.9. inkan was ahead in two runs and level in the third, so I’m calling it level to slightly ahead, not faster. At first 0.8 even looked slower than 0.7, so I measured the CPU time per request separately, and it’s exactly the same as 0.7. The difference was the test machine moving around. One bug I only found during the release: on Node 22 a websocket that gets refused never tells you, it just waits forever. That’s fixed in 0.8.1. Next: I want to make writing adapters for other servers easier, and I still want someone from Fastify and Hono to look at my benchmark code. See you next time ✨...
|
1793119953.4862025
|
1793724753.4862025
|
|
70316
|
Cool Table Lamp with boxes. by @Raws | Stardance
|
Raws
|
0
|
2.19
|
0
|
[]
|
[{"post_id": 81194, "ts": "202 [{"post_id": 81194, "ts": "2026-10-20T07:55:07Z", "hours": 0.2917, "text": "Hi so I made changes as my reviewer asked me. Made few design fixes for the small case accommodating the battery and type-c charging module then made dimensions check. Updated the repo as per the design changes I made and updated the design in repo also. Added more clear information in the repo for the build and design ."}, {"post_id": 80701, "ts": "2026-10-18T15:39:14Z", "hours": 1.9008, "text": "So I made an cool table lamp with boxes . I focused on making something that is useful for all rather than something not needed or much useful high tech stuff which I or anyone will rarely use. Kept it simple made the schematic first then the pcb then designed the case made the repo gathered the links of parts I needed finished the repo . Will polish my repo soon"}]...
|
Title: Cool Table Lamp with boxes. by @Raws | Star Title: Cool Table Lamp with boxes. by @Raws | Stardance
Devlogs:
So I made an cool table lamp with boxes . I focused on making something that is useful for all rather than something not needed or much useful high tech stuff which I or anyone will rarely use. Kept it simple made the schematic first then the pcb then designed the case made the repo gathered the links of parts I needed finished the repo . Will polish my repo soon
Hi so I made changes as my reviewer asked me. Made few design fixes for the small case accommodating the battery and type-c charging module then made dimensions check. Updated the repo as per the design changes I made and updated the design in repo also. Added more clear information in the repo for the build and design ....
|
1792990379.3104131
|
1793595179.3104131
|
|
46626
|
CobraOS by @Prajwol_Gynawali | Stardance
|
Prajwol_Gynawali
|
1
|
5.74
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-13T06:25:00Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "CobraOS is a web-based desktop environment I built with HTML, CSS, and JavaScript, inspired by my Fedora GNOME setup. The biggest challenge was making the different apps, windows, and interactions work together, but I’m proud that I turned a simple WebOS idea into a desktop that feels like my own. I used AI mainly for JavaScript debugging, browser integration, CSS improvements, and solving problems along the way.", "repo": "https://github.com/SnaggingCobra/CobraOS", "demo": "https://snaggingcobra.github.io/CobraOS/"}]...
|
[{"post_id": 81193, "ts": "202 [{"post_id": 81193, "ts": "2026-10-20T07:43:09Z", "hours": 1.085, "text": "finally finished adding paints in the os its a basic paints where you can draaw erse and simple thing"}, {"post_id": 46382, "ts": "2026-08-13T15:39:04Z", "hours": 0.6572, "text": "problem on theme and file explorer fixed"}, {"post_id": 46173, "ts": "2026-08-13T06:20:54Z", "hours": 0.2825, "text": "done in this project live through github pages"}, {"post_id": 46161, "ts": "2026-08-13T05:46:09Z", "hours": 0.3728, "text": "first time writing so much big codes its gettig intresting working icons and much more"}, {"post_id": 45884, "ts": "2026-08-12T16:59:00Z", "hours": 1.0267, "text": "done makinng lot of application working window working but still need to make this actual working"}, {"post_id": 45808, "ts": "2026-08-12T15:06:26Z", "hours": 0.3739, "text": "added working broweser winow inmy webos but coudnt configure how to actually make the sites working can anyone help me"}, {"post_id": 45495, "ts": "2026-08-12T01:03:39Z", "hours": 1.0533, "text": "done making the prototype with real time date and time mac style dock that enlarge when hover added battery indicator but idk it didnt supported still need to make the icon working"}, {"post_id": 45256, "ts": "2026-08-11T16:33:12Z", "hours": 0.65, "text": "added some thing in my web os with a welcome page with a button hat leadds you to main screen also added a task bar at top"}, {"post_id": 45218, "ts": "2026-08-11T15:33:49Z", "hours": 0.3339, "text": "started the project my Webos named it Cobra os just started this im looking a yt vedio to understand how to do these"}]...
|
Title: CobraOS by @Prajwol_Gynawali | Stardance
D Title: CobraOS by @Prajwol_Gynawali | Stardance
Devlogs:
started the project my Webos named it Cobra os just started this im looking a yt vedio to understand how to do these
added some thing in my web os with a welcome page with a button hat leadds you to main screen also added a task bar at top
done making the prototype with real time date and time mac style dock that enlarge when hover added battery indicator but idk it didnt supported still need to make the icon working
added working broweser winow inmy webos but coudnt configure how to actually make the sites working can anyone help me
done makinng lot of application working window working but still need to make this actual working
first time writing so much big codes its gettig intresting working icons and much more
done in this project live through github pages
problem on theme and file explorer fixed
finally finished adding paints in the os its a basic paints where you can draaw erse and simple thing
Ships:
CobraOS is a web-based desktop environment I built with HTML, CSS, and JavaScript, inspired by my Fedora GNOME setup. The biggest challenge was making the different apps, windows, and interactions work together, but I’m proud that I turned a simple WebOS idea into a desktop that feels like my own. I used AI mainly for JavaScript debugging, browser integration, CSS improvements, and solving problems along the way....
|
1793119756.030186
|
1793206156.030186
|
|
63654
|
alarm clock by @Albert | Stardance
|
Albert
|
0
|
1.47
|
0
|
[]
|
[{"post_id": 81192, "ts": "202 [{"post_id": 81192, "ts": "2026-10-20T07:35:07Z", "hours": 1.4664, "text": "still working on this level"}]...
|
Title: alarm clock by @Albert | Stardance
Devlogs Title: alarm clock by @Albert | Stardance
Devlogs:
still working on this level...
|
1793054838.7767692
|
1793659638.7767692
|
|
64345
|
Roamly by @rudranil | Stardance
|
rudranil
|
0
|
0.71
|
0
|
[]
|
[{"post_id": 81189, "ts": "202 [{"post_id": 81189, "ts": "2026-10-20T07:25:48Z", "hours": 0.7125, "text": "Working on load testing and fixing bugs and the anti cheat engine"}]...
|
Title: Roamly by @rudranil | Stardance
Devlogs:
W Title: Roamly by @rudranil | Stardance
Devlogs:
Working on load testing and fixing bugs and the anti cheat engine...
|
1793062350.33683
|
1793667150.33683
|
|
70589
|
Matchday by @rudranil | Stardance
|
rudranil
|
0
|
3.83
|
0
|
[]
|
[{"post_id": 81187, "ts": "202 [{"post_id": 81187, "ts": "2026-10-20T07:20:25Z", "hours": 3.8264, "text": "UI UX for matchday"}]...
|
Title: Matchday by @rudranil | Stardance
Devlogs: Title: Matchday by @rudranil | Stardance
Devlogs:
UI UX for matchday...
|
1793138334.8340905
|
1793743134.8340905
|
|
38886
|
WEB APP FOR STUDENTS by @Uxyamo | Stardance
|
Uxyamo
|
3
|
76.0
|
621
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T06:40:42Z", "hours": 18.0, "multiplier": 8.4, "payout": 99, "blessing": "neutral", "text": "I’m going to continue improving my project with some others creatorsn and thanks you everyone for all the support I had!!! Good luck!!", "repo": "https://github.com/mbbs-iam/APP---FermatNote---Make-my-Grades", "demo": "https://cuentasfermat.web.app/"}, {"ship_num": 2, "ts": "2026-08-28T16:13:00Z", "hours": 4.0, "multiplier": 12.19, "payout": 43, "blessing": "neutral", "text": "Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app.", "repo": "https://github.com/mbbs-iam/APP---FermatNote---Make-my-Grades", "demo": "https://cuentasfermat.web.app/"}, {"ship_num": 3, "ts": "2026-08-16T08:22:09Z", "hours": 54.0, "multiplier": 10.6, "payout": 479, "blessing": "neutral", "text": "Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app. I am developing Fermat-Note, an application designed especially for high school and higher education students to centralize everything: class chat, shared homework management, self-help forums and collective organization. The app allows the class to be more organized and connected to improve class performance. Thanks you so much, I would like you to appreciate it, and if you would like to use it for your class, send me a message!! ❤️👌👌", "repo": "https://github.com/mbbs-iam/APP---FermatNote---Make-my-Grades", "demo": "https://cuentasfermat.web.app/"}]...
|
[{"post_id": 81181, "ts": "202 [{"post_id": 81181, "ts": "2026-10-20T06:39:31Z", "hours": 1.7442, "text": "I decided that because all students use discord, instagram and more I will transform my PWA into an app so they will can use that apps in my app"}, {"post_id": 76794, "ts": "2026-10-04T16:11:16Z", "hours": 15.7992, "text": "Some modifications…"}, {"post_id": 56718, "ts": "2026-08-28T16:12:12Z", "hours": 3.5033, "text": "Hi everyone, there is some students that want to help me the next year, I readed all the messages of my deploy and I decided that it will be international"}, {"post_id": 47987, "ts": "2026-08-16T08:17:36Z", "hours": 0.3178, "text": "I finished the project!! Thanks yo evryone that helped me and followed me in my project!!"}, {"post_id": 47541, "ts": "2026-08-15T14:48:56Z", "hours": 3.5642, "text": "Already finished the diaporama for the students that will use my app!! Take a look please, and say me what to improve!!"}, {"post_id": 46530, "ts": "2026-08-13T20:28:50Z", "hours": 5.1931, "text": "I already deployed the project to 12 firebase accounts to let the students use my project the next year and I would like it to help them. I alse send them to each delegue an email to say them what they have to do"}, {"post_id": 45816, "ts": "2026-08-12T15:19:22Z", "hours": 2.1239, "text": "Use the app now for free with all the hightschools above France!! Link: https://cuentasfermat.web.app/ The password is : ChromaFermat@2026 Have fun!! 😊😊"}, {"post_id": 45595, "ts": "2026-08-12T05:53:03Z", "hours": 1.1178, "text": "Best 12 Hightschools use my app. They’re happy with it Already finished !! I will do an audit to see if they’re is some bugs and I will deploy it !!"}, {"post_id": 45170, "ts": "2026-08-11T14:20:09Z", "hours": 4.26, "text": "There’s 12 Hightshools that will use my app. I already ended the app. Thanks you for all those who helped me, and followed me in my project❤️❤️❤️❤️ I’m sorry that the app is it in french, i will translate to english for the next version. If youre interested to use that app at your hightschool I can translate it to your language."}, {"post_id": 43311, "ts": "2026-08-08T14:38:46Z", "hours": 4.4058, "text": "I finished three sections of my app, I love it. I used the free API of lemonde.fr (french news) to have the news all days. I also finished and added some features on the chat section. And I writed a message to the best High school at France to use it. Finnaly, at the configuration section, I added the list of all the membres of the class (they’re bots)"}, {"post_id": 41494, "ts": "2026-08-05T18:52:57Z", "hours": 1.5481, "text": "Already 10 high schools are going to use my app! I created this app for high schools in France, and a big tech company will help me deploy it throughout France. I will translate it to English next day. I also created a form, and so many people have already responded! I really enjoyed setting it up to connect with everyone."}, {"post_id": 40272, "ts": "2026-08-03T18:13:14Z", "hours": 1.2458, "text": "I configurated the chat section, and it works well, I have some users that use it. I used Firebase with the free trial to connect all the user messages so we can talk together. I did it fast because I already started yesterday, also I added a lot of buttons that spoils all the features that the app will have. Please like my post to let other people se my project, and if they’re interested to use it in they’re class."}, {"post_id": 40025, "ts": "2026-08-03T11:28:39Z", "hours": 2.4278, "text": "I finished the PowerPoint that I will send to delegates from different hightschools in France. I don’t have a good english so I translated it in english with translator. Please tell me what you think about the project, and if you should recommend me to improve some things. Thankss!!"}, {"post_id": 39633, "ts": "2026-08-02T19:12:07Z", "hours": 8.9369, "text": "That’s amazing. Hello !! I’m working on a project for studentsss!!! I’m so motivated because a big tech company will help me giving me servers to deploy it on all France. I’m working a lot, I’ve contacted already some people of the best hightschools in France to use my app. I will improve all and add features. I’m sorry, it’s in French because I’m french and will be used by French people, but if I see that more people are interested I will translate it to english, and at the end of the project I will translate it to english if they’re people that want it"}, {"post_id": 34515, "ts": "2026-07-25T09:32:54Z", "hours": 19.0533, "text": "I’m working a lot, I would like to create a an app that is like the schools apps for see our degrees but for students. It will be fun, and in an Inthership with a big company of tech and they said that they will help me. That motivated me a lot 😊😊"}]...
|
Title: WEB APP FOR STUDENTS by @Uxyamo | Stardance Title: WEB APP FOR STUDENTS by @Uxyamo | Stardance
Devlogs:
I’m working a lot, I would like to create a an app that is like the schools apps for see our degrees but for students. It will be fun, and in an Inthership with a big company of tech and they said that they will help me. That motivated me a lot 😊😊
That’s amazing. Hello !! I’m working on a project for studentsss!!! I’m so motivated because a big tech company will help me giving me servers to deploy it on all France. I’m working a lot, I’ve contacted already some people of the best hightschools in France to use my app. I will improve all and add features. I’m sorry, it’s in French because I’m french and will be used by French people, but if I see that more people are interested I will translate it to english, and at the end of the project I will translate it to english if they’re people that want it
I finished the PowerPoint that I will send to delegates from different hightschools in France. I don’t have a good english so I translated it in english with translator. Please tell me what you think about the project, and if you should recommend me to improve some things. Thankss!!
I configurated the chat section, and it works well, I have some users that use it. I used Firebase with the free trial to connect all the user messages so we can talk together. I did it fast because I already started yesterday, also I added a lot of buttons that spoils all the features that the app will have. Please like my post to let other people se my project, and if they’re interested to use it in they’re class.
Already 10 high schools are going to use my app! I created this app for high schools in France, and a big tech company will help me deploy it throughout France. I will translate it to English next day. I also created a form, and so many people have already responded! I really enjoyed setting it up to connect with everyone.
I finished three sections of my app, I love it. I used the free API of lemonde.fr (french news) to have the news all days. I also finished and added some features on the chat section. And I writed a message to the best High school at France to use it. Finnaly, at the configuration section, I added the list of all the membres of the class (they’re bots)
There’s 12 Hightshools that will use my app. I already ended the app. Thanks you for all those who helped me, and followed me in my project❤️❤️❤️❤️ I’m sorry that the app is it in french, i will translate to english for the next version. If youre interested to use that app at your hightschool I can translate it to your language.
Best 12 Hightschools use my app. They’re happy with it Already finished !! I will do an audit to see if they’re is some bugs and I will deploy it !!
Use the app now for free with all the hightschools above France!! Link: https://cuentasfermat.web.app/ The password is : ChromaFermat@2026 Have fun!! 😊😊
I already deployed the project to 12 firebase accounts to let the students use my project the next year and I would like it to help them. I alse send them to each delegue an email to say them what they have to do
Already finished the diaporama for the students that will use my app!! Take a look please, and say me what to improve!!
I finished the project!! Thanks yo evryone that helped me and followed me in my project!!
Hi everyone, there is some students that want to help me the next year, I readed all the messages of my deploy and I decided that it will be international
Some modifications…
I decided that because all students use discord, instagram and more I will transform my PWA into an app so they will can use that apps in my app
Ships:
Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app. I am developing Fermat-Note, an application designed especially for high school and higher education students to centralize everything: class chat, shared homework management, self-help forums and collective organization. The app allows the class to be more organized and connected to improve class performance. Thanks you so much, I would like you to appreciate it, and if you would like to use it for your class, send me a message!! ❤️👌👌
Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app.
I’m going to continue improving my project with some others creatorsn and thanks you everyone for all the support I had!!! Good luck!!...
|
1793123760.510278
|
1793210160.510278
|
|
62916
|
Parry Sixte by @colgation | Stardance
|
colgation
|
0
|
5.72
|
0
|
[]
|
[{"post_id": 81177, "ts": "202 [{"post_id": 81177, "ts": "2026-10-20T06:07:45Z", "hours": 4.5328, "text": "Lots of updates, all culminating in one post: Spawning mechanics: At set intervals, waves of arrows are programmed to spawn in. Additionally, the size, speed and behaviour of the arrows change as time goes on. Second level in progress: With level one done, the next one is planned to introduce new mechanics and a shield? Stamina bar: A skill ceiling element in the game, this feature prevents mindless spamming and encourages well timed hits. A focal point background: I made this background so it directs attention the the player, increasing focus and engagement without clutter. Death, victory screens: GUI elements…. Finally, I made new arrow variants: Small, Towering, Speedy and Timed."}, {"post_id": 72908, "ts": "2026-09-24T00:28:29Z", "hours": 0.5689, "text": "added an arrow that moves towards the player in my game. Currently, it is just one node triggered on keypress, with no collision. Planning on adding blocking it next"}, {"post_id": 72897, "ts": "2026-09-23T23:48:13Z", "hours": 0.6194, "text": "Created the base slashing mechanism and sprites! The sword on the left is my stamina bar. I am a complete beginner to Godot and making this was challenging, especially understanding how progress bars worked and creating a tween."}]...
|
Title: Parry Sixte by @colgation | Stardance
Devl Title: Parry Sixte by @colgation | Stardance
Devlogs:
Created the base slashing mechanism and sprites! The sword on the left is my stamina bar. I am a complete beginner to Godot and making this was challenging, especially understanding how progress bars worked and creating a tween.
added an arrow that moves towards the player in my game. Currently, it is just one node triggered on keypress, with no collision. Planning on adding blocking it next
Lots of updates, all culminating in one post: Spawning mechanics: At set intervals, waves of arrows are programmed to spawn in. Additionally, the size, speed and behaviour of the arrows change as time goes on. Second level in progress: With level one done, the next one is planned to introduce new mechanics and a shield? Stamina bar: A skill ceiling element in the game, this feature prevents mindless spamming and encourages well timed hits. A focal point background: I made this background so it directs attention the the player, increasing focus and engagement without clutter. Death, victory screens: GUI elements…. Finally, I made new arrow variants: Small, Towering, Speedy and Timed....
|
1793047879.5151818
|
1793652679.5151818
|
|
70337
|
Prism Bot by @NexnReal | Stardance
|
NexnReal
|
0
|
3.48
|
0
|
[]
|
[{"post_id": 81173, "ts": "202 [{"post_id": 81173, "ts": "2026-10-20T05:57:07Z", "hours": 0.3206, "text": "Devlog 3 Added /prism-wiki : Display any wiki /prism-translate : Translate any english word to spanish (currently supported lang pack) /prism-quote : Display a random quote"}, {"post_id": 81168, "ts": "2026-10-20T05:30:09Z", "hours": 1.8558, "text": "Devlog 2 Added /prism-weather [city] : Displays weather information about that city /prism-country [country name] : Displays information about that country /prism-quote : Displays a quote /prism-wiki [wiki] : Displays that wiki /prism-shorten [url] : Shortens any URL /prism-crypto [cryptocurrency] : Displays info about the crypto"}, {"post_id": 80952, "ts": "2026-10-19T11:16:11Z", "hours": 1.3081, "text": "Devlog 1 Added /prism-define [word] : provide definition and use example of an English word 1/prism-summarize [link]`: will summarize a thread (need the link to the thread) !!! added from official guide !!! /prism-catfact : Say a fact about cats /prism-joke : Say a joke /prism-ping : check if bot is active and latency /prism-help : show all available commands"}]...
|
Title: Prism Bot by @NexnReal | Stardance
Devlogs Title: Prism Bot by @NexnReal | Stardance
Devlogs:
Devlog 1 Added /prism-define [word] : provide definition and use example of an English word 1/prism-summarize [link]`: will summarize a thread (need the link to the thread) !!! added from official guide !!! /prism-catfact : Say a fact about cats /prism-joke : Say a joke /prism-ping : check if bot is active and latency /prism-help : show all available commands
Devlog 2 Added /prism-weather [city] : Displays weather information about that city /prism-country [country name] : Displays information about that country /prism-quote : Displays a quote /prism-wiki [wiki] : Displays that wiki /prism-shorten [url] : Shortens any URL /prism-crypto [cryptocurrency] : Displays info about the crypto
Devlog 3 Added /prism-wiki : Display any wiki /prism-translate : Translate any english word to spanish (currently supported lang pack) /prism-quote : Display a random quote...
|
1793001140.80496
|
1793605940.80496
|
|
69440
|
Bamboo cutter by @Jango | Stardance
|
Jango
|
0
|
4.33
|
0
|
[]
|
[{"post_id": 81169, "ts": "202 [{"post_id": 81169, "ts": "2026-10-20T05:33:59Z", "hours": 4.3306, "text": "Finished it but forgot to post devlogs i did a bunch on terra though but its a clicking game with upgrade its simple but there are no visual srry"}]...
|
Title: Bamboo cutter by @Jango | Stardance
Devlog Title: Bamboo cutter by @Jango | Stardance
Devlogs:
Finished it but forgot to post devlogs i did a bunch on terra though but its a clicking game with upgrade its simple but there are no visual srry...
|
1792835415.6783261
|
1793440215.6783261
|
|
70575
|
JuniorOS by @danielkosar | Stardance
|
danielkosar
|
0
|
10.77
|
0
|
[]
|
[{"post_id": 81167, "ts": "202 [{"post_id": 81167, "ts": "2026-10-20T05:25:51Z", "hours": 10.7706, "text": "So i made a basic web OS, where you will get met up with the welcome screen and when you click welcome, you will get into the OS for now there is a working file system, notebook app, settings tab of the OS"}]...
|
Title: JuniorOS by @danielkosar | Stardance
Devlo Title: JuniorOS by @danielkosar | Stardance
Devlogs:
So i made a basic web OS, where you will get met up with the welcome screen and when you click welcome, you will get into the OS for now there is a working file system, notebook app, settings tab of the OS...
|
1793119678.7039661
|
1793724478.7039661
|
|
48213
|
Level Up by @Lalith | Stardance
|
Lalith
|
4
|
78.0
|
654
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T05:23:19Z", "hours": 9.0, "multiplier": 12.16, "payout": 112, "blessing": "neutral", "text": "Shipped LevelUp! It started as a way to make a long self-development video easier to read. Now it has 28 chapters, practical plans, habits, focus timers, and a daily mission system. You can save an idea from a chapter and actually try it instead of forgetting it five minutes later. Milo is the little companion that reacts to your reading and focus activity. Everything important works locally, without an account or trackers. There’s also an offline progress system called Nexus, which handles changes across tabs and lets you move progress using encrypted files. This update mostly brought the different parts together. I fixed mobile layouts, added larger text and a quick tutorial, and made backups include the newer features. Cloud chat still needs work, and the app could be simpler, but the full version is live now. Try it: https://hustlenix.github.io/LevelUp/", "repo": "https://github.com/Hustlenix/LevelUp", "demo": "https://hustlenix.github.io/LevelUp/"}, {"ship_num": 2, "ts": "2026-09-30T12:09:06Z", "hours": 11.0, "multiplier": 9.76, "payout": 103, "blessing": "neutral", "text": "This is my final ship for Level Up. Level Up originally started as a simple idea: turn a 20-hour self-improvement video into something I could actually read, search, understand, and use. It started as basically a local-first book. Over time I kept asking the same question: “How do I make this useful after someone finishes reading?” So I kept rebuilding it. Now Level Up is much closer to a complete self-improvement app. The main experience is built around Today — you open the app, see what you are working toward, get a clear next action, start a focus/study session, and track your progress instead of just consuming more content. I also added Goals, Progress, Study Mode, a daily planner, tutor/coach tools, local AI through Ollama, chapter search, quizzes, streaks, highlights, backups, restore, and a much more consistent UI across the app. The hardest part was making all of this work while keeping the original idea of Level Up: no account required, no cloud database, and your personal progress stays on your device. I had to rebuild a lot of the local state system, handle migrations and corrupted data, improve backup/restore, and make sure the app still works properly offline or without local AI installed. The thing I’m most proud of is that it no longer feels like a book with random features added around it. It finally feels like one connected product. If you test it, don’t just click around. Actually use it: Create a goal Open Today and follow the next action Start a focus/study session Read or study a chapter Check your Progress Refresh/reopen the app and see your data persist There are definitely things I could keep polishing forever, but I don’t want this project to become an endless cycle of “one more redesign.” This is the version I’m calling finished. Try it: https://hustlenix.github.io/LevelUp/ Source: https://github.com/Hustlenix/LevelUp Thanks to everyone who tested it, gave feedback, or followed the devlogs while this went from a small reading website into this. LEVEL UP. 🚀", "repo": "https://github.com/Hustlenix/LevelUp", "demo": "https://hustlenix.github.io/LevelUp/"}, {"ship_num": 3, "ts": "2026-09-20T07:44:58Z", "hours": 18.0, "multiplier": 8.6, "payout": 153, "blessing": "neutral", "text": "I upgraded my MVP called Level Up: transforming a local-first self-development book into a full-featured, Today-first operating system—still running 100% in your browser. The Motivation While Ship #1 proved that a 20-hour video transcript could become a searchable, evidence-graded web book, the feedback was clear: the UI/UX felt fragmented. Having deep individual features wasn’t enough if the home experience didn’t tell you what to do right now. I set out to redesign Level Up from a passive reading interface into an actionable personal operating system. What’s New: The Today-First OS & Local AI Instead of a crowded home screen, the app now centers on a streamlined /today/ hub that answers one core question: “What should I do next?” Today Shell Navigation: Simplified navigation down to Today, Learn, Goals, Progress, and More, placing your current focus front and center. On-Device Study Workspace: Integrated a dedicated Study Mode featuring an automated Daily Planner, a Local Coach, and an interactive Tutor mode to explain or practice any of the 28 chapters. Smart Local AI Integration: Added support for local LLMs via Ollama with full offline fallback, letting you generate study plans and ask questions without leaking private data to external servers. How We Upgraded It Typed Local State Boundary: Replaced fragmented localStorage usage with a single, typed local repository boundary managed via pure TypeScript modules and useSyncExternalStore. Data Diagnostics & Migrations: Hardened JSON schema validation, improved backup/restore transaction handling, and added local data health checks to ensure offline state never gets corrupted. UI/UX Consistency System: Standardized spacing, card hierarchies, buttons, forms, and empty states across all routes so every tool feels like part of a unified product. Into the Trenches (Challenges & Learnings) The Monolith vs. Workspaces Tradeoff: Moving from a multi-tool dashboard to a focused Today-first layout meant rethinking information architecture. We hid creation forms behind empty states and compressed secondary features like inbox items into compact panels to avoid visual clutter. Local AI Fallbacks: Integrating Ollama required explicit status checks and graceful local degradation so non-technical users or fully offline environments still get a clean UI without broken promises. What I’m Proud Of Coherent OS Feel: Level Up no longer feels like separate utilities tacked together; it operates as one smooth, self-contained habit driver. Privacy Preserved: Despite adding AI study tools and custom daily planners, everything remains zero-tracking, zero-backend, and fully functional on-device. Try it out: Live site: https://hustlenix.github.io/LevelUp/ Source code: https://github.com/Hustlenix/LevelUp Tech Stack: Next.js 16, Tailwind v4, TypeScript, node:sqlite, MiniSearch, Ollama / On-Device Local State, GitHub Pages", "repo": "https://github.com/Hustlenix/LevelUp", "demo": "https://hustlenix.github.io/LevelUp/"}, {"ship_num": 4, "ts": "2026-09-11T17:51:26Z", "hours": 40.0, "multiplier": 16.67, "payout": 286, "blessing": "neutral", "text": "I built a free MVP called Level Up : a 28-chapter self-development book built from a 20-hour video transcript, running entirely in your browser. The Motivation It started with a simple question: What if you could turn a 20-hour self-dev video into something you could actually read, search, and verify? Most online self-development content exists to sell courses, not to present evidence. I wanted something honest. So, I built a real book where every notable claim is graded against cited research. What It Is: Zero Tracking, 100% Local The result is roughly 32k words across four pillars, a 30-claim evidence audit (graded A–D/U), 13 testable protocols, and full-text search. The best part? Zero tracking. No accounts, no APIs, no cookies. Your reading progress, streaks, highlights, themes, and quiz scores live entirely in your browser’s localStorage . Nothing leaves your machine. How We Built It The original video transcript was ~20k lines. We tag-teamed Claude, Gemini, and Opencode to compress it. From there, we built the site in layers: The Content Pipeline: scripts/build-data.mjs compiles Markdown chapters into SQLite using node:sqlite , then emits JSON data and a 30KB MiniSearch index. The Frontend: Next.js 16 static export and Tailwind v4. We used useSyncExternalStore for reactive local state via pure TypeScript modules. The Deploy: Automated via GitHub Actions straight to GitHub Pages. Into the Trenches (Challenges & Learnings) The CI Spiral: We added a React 19 QuoteCard. It built flawlessly locally (22/22 tests green), but failed eight consecutive GitHub Actions runs with a phantom TS error. It wasn’t a code bug; it was an environment disagreement. Lesson: Sometimes a feature just isn’t ready. We deleted it rather than fighting the environment or shipping it broken. Turbopack’s Quiet Types: The dev server uses Turbopack, which skips full type-checking for speed. We shipped a PR that built locally but failed in CI. Lesson: Always run tsc locally, or CI will aggressively remind you of the difference between “builds” and “types.” Case Sensitivity: GitHub Pages serves paths case-sensitively. NEXT_PUBLIC_BASE_PATH=/LevelUp is fundamentally different from /levelup . We learned this the hard way. What I’m Proud Of Honest Grading: No invented citations. If a famous “5x flow” stat is folklore, the site tells you so. Backend-less Magic: Search, quizzes, highlights, streaks, and schema-validated JSON backup/restore—all completely offline-capable. The Architecture: The data layer isn’t just a pile of JSON; it’s a statically served, compiled artifact from Markdown. Try it out: Live site: https://hustlenix.github.io/LevelUp/ Source code: https://github.com/Hustlenix/LevelUp Tech Stack: Next.js 16, Tailwind v4, node:sqlite, MiniSearch, GitHub Pages", "repo": "https://github.com/Hustlenix/LevelUp", "demo": "https://hustlenix.github.io/LevelUp/"}]...
|
[{"post_id": 81165, "ts": "202 [{"post_id": 81165, "ts": "2026-10-20T05:15:28Z", "hours": 9.1767, "text": "Finishing touches, i think this is coming to and end, so i lokced in in these 10 hours and did some major changes, like used HCB APi key and give MILO an life so it can interact with you guys, and bumped up the UI/UX to and next level and: Milo Talk with offline guidance and explicit approval before saving suggested actions. Replayable walkthrough and app-wide text sizing up to 150%. Distinct Deep Work/Cyberpunk themes; preserved Light/Dark. Install guidance, offline support, refreshed screenshots, and technical documentation. Fixed Settings headings and Deep Work contrast. As per your reviews and real time feedback, thank you guys!"}, {"post_id": 75526, "ts": "2026-09-30T11:33:39Z", "hours": 8.6486, "text": "I tried making this the final boss of Self Improvement APP, i think i am finally over, longin and start LEVELING UPPP!!!!!!!!!!!"}, {"post_id": 72287, "ts": "2026-09-22T16:18:34Z", "hours": 1.9244, "text": "I think there is nothing to be upgraded in this, all i have to do now is add subscryptions and make money!!!!!!!!!!!!"}, {"post_id": 71049, "ts": "2026-09-20T07:44:31Z", "hours": 0.8897, "text": "I upgraded my MVP called Level Up: transforming a local-first self-development book into a full-featured, Today-first operating system—still running 100% in your browser.The Motivation While Ship #1 proved that a 20-hour video transcript could become a searchable, evidence-graded web book, the feedback was clear: the UI/UX felt fragmented. Having deep individual features wasn’t enough if the home experience didn’t tell you what to do right now. I set out to redesign Level Up from a passive reading interface into an actionable personal operating system.What’s New: The Today-First OS & Local AI Instead of a crowded home screen, the app now centers on a streamlined /today/ hub that answers one core question: “What should I do next?”Today Shell Navigation: Simplified navigation down to Today, Learn, Goals, Progress, and More, placing your current focus front and center.On-Device Study Workspace: Integrated a dedicated Study Mode featuring an automated Daily Planner, a Local Coach, and an interactive Tutor mode to explain or practice any of the 28 chapters.Smart Local AI Integration: Added support for local LLMs via Ollama with full offline fallback, letting you generate study plans and ask questions without leaking private data to external servers.How We Upgraded ItTyped Local State Boundary: Replaced fragmented localStorage usage with a single, typed local repository boundary managed via pure TypeScript modules and useSyncExternalStore.Data Diagnostics & Migrations: Hardened JSON schema validation, improved backup/restore transaction handling, and added local data health checks to ensure offline state never gets corrupted.UI/UX Consistency System: Standardized spacing, card hierarchies, buttons, forms, and empty states across all routes so every tool feels like part of a unified product.Into the Trenches (Challenges & Learnings)The Monolith vs. Workspaces Tradeoff: Moving from a multi-tool dashboard to a focused Today-first layout meant rethinking information architecture. We hid creation forms behind empty states and compressed secondary features like inbox items into compact panels to avoid visual clutter.Local AI Fallbacks: Integrating Ollama required explicit status checks and graceful local degradation so non-technical users or fully offline environments still get a clean UI without broken promises.What I’m Proud OfCoherent OS Feel: Level Up no longer feels like separate utilities tacked together; it operates as one smooth, self-contained habit driver.Privacy Preserved: Despite adding AI study tools and custom daily planners, everything remains zero-tracking, zero-backend, and fully functional on-device.Try it out:Live site: https://hustlenix.github.io/LevelUp/Source code: https://github.com/Hustlenix/LevelUpTech Stack: Next.js 16, Tailwind v4, TypeScript, node:sqlite, MiniSearch, Ollama / On-Device Local State, GitHub Pages"}, {"post_id": 70978, "ts": "2026-09-20T04:38:42Z", "hours": 5.0881, "text": "Till now for my app i have like genrated the overall Backend and front end, but the frontend UI/UX is kinda mid. so i am thinking of improving it and opt for te second ship. In UI/UX i am thinking of doind this: 1. Today-first operating system shell — recommended Make /today/ the clear home of the product. Changes: Simplify navigation to: Today Learn Goals Progress More Make Today answer one question: “What should I do next?” Replace the long stacked Today page with a priority layout: Current goal One next action Start session Progress signal Recovery option Move goal creation into a focused onboarding/empty state instead of displaying a large form immediately. Turn Inbox, patterns, and reminders into compact secondary sections. Keep Goals, Focus, Review, Portfolio, and Roadmap as deep workspaces. Apply the same card, spacing, button, form, and empty-state system across all routes. Keep the existing editorial chapter experience intact. Backend/local-state work: Add a single typed local repository boundary. Harden localStorage validation and migrations. Improve backup/restore transaction handling. Make Ollama status and fallback behavior clearer. Add local data health diagnostics. Preserve offline use. Tradeoff: largest visible improvement, but touches navigation and the main execution surfaces. Editorial workspace polish Keep the existing navigation and route structure, but improve every page individually. Changes: Refine each page’s spacing and hierarchy. Upgrade cards, forms, progress indicators, and empty states. Add shared page headers and breadcrumbs. Improve mobile behavior without changing information architecture. Backend/local-state work remains the same. Tradeoff: lowest risk, but the product may still feel like multiple separate tools rather than one coherent operating system. Dashboard-centric command center Make /dashboard/ the main product and move most functionality into a dense professional workspace. Changes: Dashboard becomes a multi-panel command center. Today, Goals, Focus, Review, and Progress become dashboard tabs or panels. More information is visible at once. Strong for desktop power users. Tradeoff: efficient for experienced users but heavier, more complex, and less approachable on mobile."}, {"post_id": 70451, "ts": "2026-09-19T07:02:36Z", "hours": 8.2389, "text": "I thought to keep this as a normal book website for a 20 hr video, until i didnt i wanted to somehow plan to make money out of this, so I am not planning to improve this to a full App and Add pricing and make money out of it. The app is gonna be about implementing the things for the 20 hr video effectively in my website for a lil $. For now everyone can try it our for free on https://hustlenix.github.io/LevelUp"}, {"post_id": 68897, "ts": "2026-09-16T00:04:43Z", "hours": 1.1653, "text": "Me corrently using my own app to study and finish my home work🤣🤣. Youto use it on https://hustlenix.github.io/LevelUp/ for free"}, {"post_id": 67964, "ts": "2026-09-14T09:11:00Z", "hours": 2.6825, "text": "Instead of making this website feel like a simple website like a book, i am on a mission to make this website a full stack website for self improvement and i am thinking of adding paywall and make some money, but stripe isnt working from INDIA someone please help. STAY HARD!!!!!!!!!!!!!!!"}, {"post_id": 66090, "ts": "2026-09-11T17:47:02Z", "hours": 13.0997, "text": "I built a free MVP called Level Up: a 28-chapter self-development book built from a 20-hour video transcript, running entirely in your browser.The Motivation It started with a simple question: What if you could turn a 20-hour self-dev video into something you could actually read, search, and verify? Most online self-development content exists to sell courses, not to present evidence. I wanted something honest. So, I built a real book where every notable claim is graded against cited research.What It Is: Zero Tracking, 100% Local The result is roughly 32k words across four pillars, a 30-claim evidence audit (graded A–D/U), 13 testable protocols, and full-text search.The best part? Zero tracking. No accounts, no APIs, no cookies. Your reading progress, streaks, highlights, themes, and quiz scores live entirely in your browser’s localStorage. Nothing leaves your machine.How We Built It The original video transcript was ~20k lines. We tag-teamed Claude, Gemini, and Opencode to compress it. From there, we built the site in layers:The Content Pipeline: scripts/build-data.mjs compiles Markdown chapters into SQLite using node:sqlite, then emits JSON data and a 30KB MiniSearch index.The Frontend: Next.js 16 static export and Tailwind v4. We used useSyncExternalStore for reactive local state via pure TypeScript modules.The Deploy: Automated via GitHub Actions straight to GitHub Pages.Into the Trenches (Challenges & Learnings)The CI Spiral: We added a React 19 QuoteCard. It built flawlessly locally (22/22 tests green), but failed eight consecutive GitHub Actions runs with a phantom TS error. It wasn’t a code bug; it was an environment disagreement. Lesson: Sometimes a feature just isn’t ready. We deleted it rather than fighting the environment or shipping it broken.Turbopack’s Quiet Types: The dev server uses Turbopack, which skips full type-checking for speed. We shipped a PR that built locally but failed in CI. Lesson: Always run tsc locally, or CI will aggressively remind you of the difference between “builds” and “types.“Case Sensitivity: GitHub Pages serves paths case-sensitively. NEXT_PUBLIC_BASE_PATH=/LevelUp is fundamentally different from /levelup. We learned this the hard way.What I’m Proud OfHonest Grading: No invented citations. If a famous “5x flow” stat is folklore, the site tells you so.Backend-less Magic: Search, quizzes, highlights, streaks, and schema-validated JSON backup/restore—all completely offline-capable.The Architecture: The data layer isn’t just a pile of JSON; it’s a statically served, compiled artifact from Markdown.Try it out:Live site: https://hustlenix.github.io/LevelUp/Source code: https://github.com/Hustlenix/LevelUpTech Stack: Next.js 16, Tailwind v4, node:sqlite, MiniSearch, GitHub Pages"}, {"post_id": 50297, "ts": "2026-08-19T13:37:53Z", "hours": 12.4239, "text": "So called Devlog, 3 The agenda today is to simplify the home page. I paid attention to it for 8 hours and ended up with two fewer things on screen than when I started lol😅✌🏻. After removing the large hero box and changing the chapter list to an accordion, the homepage appeared empty. I created a big wishlists of items to add: heatmaps, quote-generators, streak-trackers, quiz-cards, XP-counters, etc. Everything was built local-first on Next.js 16 (static export on GitHub Pages) using localStorage keys like levelup-streak-v1 no tracking or backend APIs. I constructed a QuoteCard component to retrieve data from /data/quotes.json. All 22 tests passed on my machine, but for some reason, GitHub Actions fails a phantom TS7006 type error 8+ times in a row because of that one CI error. I kept spamming commit messages like “force CI re-run”, “force CI re-re-re-run, and this time ts-ignore…”. It turned out to be a weird CI environment mismatch that ate half my day. I discarded the quote card to avoid clutter. In what was shipped was a simple PrivacyBadge (“100% Private · On-Device Storage Only”) along with a ThemeTimeShift script that alters the –hue CSS variable based off your clock. Next thing we must do is transition smoothly into the chapter! Stay techulated or smtg. STAY HARD GNG!"}, {"post_id": 47521, "ts": "2026-08-15T14:15:55Z", "hours": 0.4181, "text": "Finished writing the git hub repo, and used AI to organise the words cause it was full of gramatical mistakes and stuff. I am ready to ship this project GNG, what did I miss, please check this out and give some valid review please."}, {"post_id": 47501, "ts": "2026-08-15T13:29:22Z", "hours": 13.9158, "text": "This is my trust worthy, non tracked website for leveling up in your life but somehow works without any login or stuff, the tracking just works, inspired by this 20 hour video: https://www.youtube.com/watch?v=wvaY5bG5p7A&t=65s which is totally worth it. To build this I started by getting the transcript for making this website, and with that 20k lines transcript I pasted it into claude to compact this, and it ran out of tokens, and i tried gemini too sadly it too ran out of tokens, and lastly I tried Opencode few time and it finally gave me the summary for this and after few hours i finished the website and pushed the code to git hub, branched it real good, and finally build and in actions started a build and deploy workflow and got this running. STAY HARD GNG!!!!!!!!"}]...
|
Title: Level Up by @Lalith | Stardance
Devlogs:
T Title: Level Up by @Lalith | Stardance
Devlogs:
This is my trust worthy, non tracked website for leveling up in your life but somehow works without any login or stuff, the tracking just works, inspired by this 20 hour video: https://www.youtube.com/watch?v=wvaY5bG5p7A&t=65s which is totally worth it. To build this I started by getting the transcript for making this website, and with that 20k lines transcript I pasted it into claude to compact this, and it ran out of tokens, and i tried gemini too sadly it too ran out of tokens, and lastly I tried Opencode few time and it finally gave me the summary for this and after few hours i finished the website and pushed the code to git hub, branched it real good, and finally build and in actions started a build and deploy workflow and got this running. STAY HARD GNG!!!!!!!!
Finished writing the git hub repo, and used AI to organise the words cause it was full of gramatical mistakes and stuff. I am ready to ship this project GNG, what did I miss, please check this out and give some valid review please.
So called Devlog, 3 The agenda today is to simplify the home page. I paid attention to it for 8 hours and ended up with two fewer things on screen than when I started lol😅✌🏻. After removing the large hero box and changing the chapter list to an accordion, the homepage appeared empty. I created a big wishlists of items to add: heatmaps, quote-generators, streak-trackers, quiz-cards, XP-counters, etc. Everything was built local-first on Next.js 16 (static export on GitHub Pages) using localStorage keys like levelup-streak-v1 no tracking or backend APIs. I constructed a QuoteCard component to retrieve data from /data/quotes.json. All 22 tests passed on my machine, but for some reason, GitHub Actions fails a phantom TS7006 type error 8+ times in a row because of that one CI error. I kept spamming commit messages like “force CI re-run”, “force CI re-re-re-run, and this time ts-ignore…”. It turned out to be a weird CI environment mismatch that ate half my day. I discarded the quote card to avoid clutter. In what was shipped was a simple PrivacyBadge (“100% Private · On-Device Storage Only”) along with a ThemeTimeShift script that alters the –hue CSS variable based off your clock. Next thing we must do is transition smoothly into the chapter! Stay techulated or smtg. STAY HARD GNG!
I built a free MVP called Level Up: a 28-chapter self-development book built from a 20-hour video transcript, running entirely in your browser.The Motivation It started with a simple question: What if you could turn a 20-hour self-dev video into something you could actually read, search, and verify? Most online self-development content exists to sell courses, not to present evidence. I wanted something honest. So, I built a real book where every notable claim is graded against cited research.What It Is: Zero Tracking, 100% Local The result is roughly 32k words across four pillars, a 30-claim evidence audit (graded A–D/U), 13 testable protocols, and full-text search.The best part? Zero tracking. No accounts, no APIs, no cookies. Your reading progress, streaks, highlights, themes, and quiz scores live entirely in your browser’s localStorage. Nothing leaves your machine.How We Built It The original video transcript was ~20k lines. We tag-teamed Claude, Gemini, and Opencode to compress it. From there, we built the site in layers:The Content Pipeline: scripts/build-data.mjs compiles Markdown chapters into SQLite using node:sqlite, then emits JSON data and a 30KB MiniSearch index.The Frontend: Next.js 16 static export and Tailwind v4. We used useSyncExternalStore for reactive local state via pure TypeScript modules.The Deploy: Automated via GitHub Actions straight to GitHub Pages.Into the Trenches (Challenges & Learnings)The CI Spiral: We added a React 19 QuoteCard. It built flawlessly locally (22/22 tests green), but failed eight consecutive GitHub Actions runs with a phantom TS error. It wasn’t a code bug; it was an environment disagreement. Lesson: Sometimes a feature just isn’t ready. We deleted it rather than fighting the environment or shipping it broken.Turbopack’s Quiet Types: The dev server uses Turbopack, which skips full type-checking for speed. We shipped a PR that built locally but failed in CI. Lesson: Always run tsc locally, or CI will aggressively remind you of the difference between “builds” and “types.“Case Sensitivity: GitHub Pages serves paths case-sensitively. NEXT_PUBLIC_BASE_PATH=/LevelUp is fundamentally different from /levelup. We learned this the hard way.What I’m Proud OfHonest Grading: No invented citations. If a famous “5x flow” stat is folklore, the site tells you so.Backend-less Magic: Search, quizzes, highlights, streaks, and schema-validated JSON backup/restore—all completely offline-capable.The Architecture: The data layer isn’t just a pile of JSON; it’s a statically served, compiled artifact from Markdown.Try it out:Live site: https://hustlenix.github.io/LevelUp/Source code: https://github.com/Hustlenix/LevelUpTech Stack: Next.js 16, Tailwind v4, node:sqlite, MiniSearch, GitHub Pages
Instead of making this website feel like a simple website like a book, i am on a mission to make this website a full stack website for self improvement and i am thinking of adding paywall and make some money, but stripe isnt working from INDIA someone please help. STAY HARD!!!!!!!!!!!!!!!
Me corrently using my own app to study and finish my home work🤣🤣. Youto use it on https://hustlenix.github.io/LevelUp/ for free
I thought to keep this as a normal book website for a 20 hr video, until i didnt i wanted to somehow plan to make money out of this, so I am not planning to improve this to a full App and Add pricing and make money out of it. The app is gonna be about implementing the things for the 20 hr video effectively in my website for a lil $. For now everyone can try it our for free on https://hustlenix.github.io/LevelUp
Till now for my app i have like genrated the overall Backend and front end, but the frontend UI/UX is kinda mid. so i am thinking of improving it and opt for te second ship. In UI/UX i am thinking of doind this: 1. Today-first operating system shell — recommended Make /today/ the clear home of the product. Changes: Simplify navigation to: Today Learn Goals Progress More Make Today answer one question: “What should I do next?” Replace the long stacked Today page with a priority layout: Current goal One next action Start session Progress signal Recovery option Move goal creation into a focused onboarding/empty state instead of displaying a large form immediately. Turn Inbox, patterns, and reminders into compact secondary sections. Keep Goals, Focus, Review, Portfolio, and Roadmap as deep workspaces. Apply the same card, spacing, button, form, and empty-state system across all routes. Keep the existing editorial chapter experience intact. Backend/local-state work: Add a single typed local repository boundary. Harden localStorage validation and migrations. Improve backup/restore transaction handling. Make Ollama status and fallback behavior clearer. Add local data health diagnostics. Preserve offline use. Tradeoff: largest visible improvement, but touches navigation and the main execution surfaces. Editorial workspace polish Keep the existing navigation and route structure, but improve every page individually. Changes: Refine each page’s spacing and hierarchy. Upgrade cards, forms, progress indicators, and empty states. Add shared page headers and breadcrumbs. Improve mobile behavior without changing information architecture. Backend/local-state work remains the same. Tradeoff: lowest risk, but the product may still feel like multiple separate tools rather than one coherent operating system. Dashboard-centric command center Make /dashboard/ the main product and move most functionality into a dense professional workspace. Changes: Dashboard becomes a multi-panel command center. Today, Goals, Focus, Review, and Progress become dashboard tabs or panels. More information is visible at once. Strong for desktop power users. Tradeoff: efficient for experienced users but heavier, more complex, and less approachable on mobile.
I upgraded my MVP called Level Up: transforming a local-first self-development book into a full-featured, Today-first operating system—still running 100% in your browser.The Motivation While Ship #1 proved that a 20-hour video transcript could become a searchable, evidence-graded web book, the feedback was clear: the UI/UX felt fragmented. Having deep individual features wasn’t enough if the home experience didn’t tell you what to do right now. I set out to redesign Level Up from a passive reading interface into an actionable personal operating system.What’s New: The Today-First OS & Local AI Instead of a crowded home screen, the app now centers on a streamlined /today/ hub that answers one core question: “What should I do next?”Today Shell Navigation: Simplified navigation down to Today, Learn, Goals, Progress, and More, placing your current focus front and center.On-Device Study Workspace: Integrated a dedicated Study Mode featuring an automated Daily Planner, a Local Coach, and an interactive Tutor mode to explain or practice any of the 28 chapters.Smart Local AI Integration: Added support for local LLMs via Ollama with full offline fallback, letting you generate study plans and ask questions without leaking private data to external servers.How We Upgraded ItTyped Local State Boundary: Replaced fragmented localStorage usage with a single, typed local repository boundary managed via pure TypeScript modules and useSyncExternalStore.Data Diagnostics & Migrations: Hardened JSON schema validation, improved backup/restore transaction handling, and added local data health checks to ensure offline state never gets corrupted.UI/UX Consistency System: Standardized spacing, card hierarchies, buttons, forms, and empty states across all routes so every tool feels like part of a unified product.Into the Trenches (Challenges & Learnings)The Monolith vs. Workspaces Tradeoff: Moving from a multi-tool dashboard to a focused Today-first layout meant rethinking information architecture. We hid creation forms behind empty states and compressed secondary features like inbox items into compact panels to avoid visual clutter.Local AI Fallbacks: Integrating Ollama required explicit status checks and graceful local degradation so non-technical users or fully offline environments still get a clean UI without broken promises.What I’m Proud OfCoherent OS Feel: Level Up no longer feels like separate utilities tacked together; it operates as one smooth, self-contained habit driver.Privacy Preserved: Despite adding AI study tools and custom daily planners, everything remains zero-tracking, zero-backend, and fully functional on-device.Try it out:Live site: https://hustlenix.github.io/LevelUp/Source code: https://github.com/Hustlenix/LevelUpTech Stack: Next.js 16, Tailwind v4, TypeScript, node:sqlite, MiniSearch, Ollama / On-Device Local State, GitHub Pages
I think there is nothing to be upgraded in this, all i have to do now is add subscryptions and make money!!!!!!!!!!!!
I tried making this the final boss of Self Improvement APP, i think i am finally over, longin and start LEVELING UPPP!!!!!!!!!!!
Finishing touches, i think this is coming to and end, so i lokced in in these 10 hours and did some major changes, like used HCB APi key and give MILO an life so it can interact with you guys, and bumped up the UI/UX to and next level and: Milo Talk with offline guidance and explicit approval before saving suggested actions. Replayable walkthrough and app-wide text sizing up to 150%. Distinct Deep Work/Cyberpunk themes; preserved Light/Dark. Install guidance, offline support, refreshed screenshots, and technical documentation. Fixed Settings headings and Deep Work contrast. As per your reviews and real time feedback, thank you guys!
Ships:
I built a free MVP called Level Up : a 28-chapter self-development book built from a 20-hour video transcript, running entirely in your browser. The Motivation It started with a simple question: What if you could turn a 20-hour self-dev video into something you could actually read, search, and verify? Most online self-development content exists to sell courses, not to present evidence. I wanted something honest. So, I built a real book where every notable claim is graded against cited research. What It Is: Zero Tracking, 100% Local The result is roughly 32k words across four pillars, a 30-claim evidence audit (graded A–D/U), 13 testable protocols, and full-text search. The best part? Zero tracking. No accounts, no APIs, no cookies. Your reading progress, streaks, highlights, themes, and quiz scores live entirely in your browser’s localStorage . Nothing leaves your machine. How We Built It The original video transcript was ~20k lines. We tag-teamed Claude, Gemini, and Opencode to compress it. From there, we built the site in layers: The Content Pipeline: scripts/build-data.mjs compiles Markdown chapters into SQLite using node:sqlite , then emits JSON data and a 30KB MiniSearch index. The Frontend: Next.js 16 static export and Tailwind v4. We used useSyncExternalStore for reactive local state via pure TypeScript modules. The Deploy: Automated via GitHub Actions straight to GitHub Pages. Into the Trenches (Challenges & Learnings) The CI Spiral: We added a React 19 QuoteCard. It built flawlessly locally (22/22 tests green), but failed eight consecutive GitHub Actions runs with a phantom TS error. It wasn’t a code bug; it was an environment disagreement. Lesson: Sometimes a feature just isn’t ready. We deleted it rather than fighting the environment or shipping it broken. Turbopack’s Quiet Types: The dev server uses Turbopack, which skips full type-checking for speed. We shipped a PR that built locally but failed in CI. Lesson: Always run tsc locally, or CI will aggressively remind you of the difference between “builds” and “types.” Case Sensitivity: GitHub Pages serves paths case-sensitively. NEXT_PUBLIC_BASE_PATH=/LevelUp is fundamentally different from /levelup . We learned this the hard way. What I’m Proud Of Honest Grading: No invented citations. If a famous “5x flow” stat is folklore, the site tells you so. Backend-less Magic: Search, quizzes, highlights, streaks, and schema-validated JSON backup/restore—all completely offline-capable. The Architecture: The data layer isn’t just a pile of JSON; it’s a statically served, compiled artifact from Markdown. Try it out: Live site: https://hustlenix.github.io/LevelUp/ Source code: https://github.com/Hustlenix/LevelUp Tech Stack: Next.js 16, Tailwind v4, node:sqlite, MiniSearch, GitHub Pages
I upgraded my MVP called Level Up: transforming a local-first self-development book into a full-featured, Today-first operating system—still running 100% in your browser. The Motivation While Ship #1 proved that a 20-hour video transcript could become a searchable, evidence-graded web book, the feedback was clear: the UI/UX felt fragmented. Having deep individual features wasn’t enough if the home experience didn’t tell you what to do right now. I set out to redesign Level Up from a passive reading interface into an actionable personal operating system. What’s New: The Today-First OS & Local AI Instead of a crowded home screen, the app now centers on a streamlined /today/ hub that answers one core question: “What should I do next?” Today Shell Navigation: Simplified navigation down to Today, Learn, Goals, Progress, and More, placing your current focus front and center. On-Device Study Workspace: Integrated a dedicated Study Mode featuring an automated Daily Planner, a Local Coach, and an interactive Tutor mode to explain or practice any of the 28 chapters. Smart Local AI Integration: Added support for local LLMs via Ollama with full offline fallback, letting you generate study plans and ask questions without leaking private data to external servers. How We Upgraded It Typed Local State Boundary: Replaced fragmented localStorage usage with a single, typed local repository boundary managed via pure TypeScript modules and useSyncExternalStore. Data Diagnostics & Migrations: Hardened JSON schema validation, improved backup/restore transaction handling, and added local data health checks to ensure offline state never gets corrupted. UI/UX Consistency System: Standardized spacing, card hierarchies, buttons, forms, and empty states across all routes so every tool feels like part of a unified product. Into the Trenches (Challenges & Learnings) The Monolith vs. Workspaces Tradeoff: Moving from a multi-tool dashboard to a focused Today-first layout meant rethinking information architecture. We hid creation forms behind empty states and compressed secondary features like inbox items into compact panels to avoid visual clutter. Local AI Fallbacks: Integrating Ollama required explicit status checks and graceful local degradation so non-technical users or fully offline environments still get a clean UI without broken promises. What I’m Proud Of Coherent OS Feel: Level Up no longer feels like separate utilities tacked together; it operates as one smooth, self-contained habit driver. Privacy Preserved: Despite adding AI study tools and custom daily planners, everything remains zero-tracking, zero-backend, and fully functional on-device. Try it out: Live site: https://hustlenix.github.io/LevelUp/ Source code: https://github.com/Hustlenix/LevelUp Tech Stack: Next.js 16, Tailwind v4, TypeScript, node:sqlite, MiniSearch, Ollama / On-Device Local State, GitHub Pages
This is my final ship for Level Up. Level Up originally started as a simple idea: turn a 20-hour self-improvement video into something I could actually read, search, understand, and use. It started as basically a local-first book. Over time I kept asking the same question: “How do I make this useful after someone finishes reading?” So I kept rebuilding it. Now Level Up is much closer to a complete self-improvement app. The main experience is built around Today — you open the app, see what you are working toward, get a clear next action, start a focus/study session, and track your progress instead of just consuming more content. I also added Goals, Progress, Study Mode, a daily planner, tutor/coach tools, local AI through Ollama, chapter search, quizzes, streaks, highlights, backups, restore, and a much more consistent UI across the app. The hardest part was making all of this work while keeping the original idea of Level Up: no account required, no cloud database, and your personal progress stays on your device. I had to rebuild a lot of the local state system, handle migrations and corrupted data, improve backup/restore, and make sure the app still works properly offline or without local AI installed. The thing I’m most proud of is that it no longer feels like a book with random features added around it. It finally feels like one connected product. If you test it, don’t just click around. Actually use it: Create a goal Open Today and follow the next action Start a focus/study session Read or study a chapter Check your Progress Refresh/reopen the app and see your data persist There are definitely things I could keep polishing forever, but I don’t want this project to become an endless cycle of “one more redesign.” This is the version I’m calling finished. Try it: https://hustlenix.github.io/LevelUp/ Source: https://github.com/Hustlenix/LevelUp Thanks to everyone who tested it, gave feedback, or followed the devlogs while this went from a small reading website into this. LEVEL UP. 🚀
Shipped LevelUp! It started as a way to make a long self-development video easier to read. Now it has 28 chapters, practical plans, habits, focus timers, and a daily mission system. You can save an idea from a chapter and actually try it instead of forgetting it five minutes later. Milo is the little companion that reacts to your reading and focus activity. Everything important works locally, without an account or trackers. There’s also an offline progress system called Nexus, which handles changes across tabs and lets you move progress using encrypted files. This update mostly brought the different parts together. I fixed mobile layouts, added larger text and a quick tutorial, and made backups include the newer features. Cloud chat still needs work, and the app could be simpler, but the full version is live now. Try it: https://hustlenix.github.io/LevelUp/...
|
1793148477.9418578
|
1793234877.9418578
|
|
2693
|
Stitch-Craft by @Peneroni | Stardance
|
Peneroni
|
1
|
44.0
|
798
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T04:42:02Z", "hours": 44.0, "multiplier": 17.93, "payout": 798, "blessing": "neutral", "text": "#Welcome to Stitch-Craft! Work in a dying costume shop with Dennis the costume designer as you build, pull, and buy new costumes. There are many ways to house and attain costumes, and it’s your job to do just that! This is my passion project that I’ve been working on for the past several and I’m ver excited to share the beginnings of it with you all! My mom gave me the idea because she works in a costume shop, and we both thought it would be a fun game to play. One thing to note that this is an early ship of the MVP I set for myself. Most of the assets are placeholders, you can’t fully make costumes and submit them for a show yet, and not all features that I plan to add are in the game yet. I wanted to ship what I have so far, which is the system of how you gain costumes in the dysfunctional costume shop of yours. Currently you can go through the tutorial with Dennis, play the sewing minigame for costumes, buy costumes, and store your costumes in the storage. This is what I shipped, and I hope you enjoy!", "repo": "https://github.com/Penn-the-Great/Stitch-Craft", "demo": "https://peneroni.itch.io/stitch-craft"}]...
|
[{"post_id": 81159, "ts": "202 [{"post_id": 81159, "ts": "2026-10-20T04:29:34Z", "hours": 1.5197, "text": "Build bugs and ship I know I said the last devlog would be the last one, but as expected there were a few last bugs, especially with rendering. There were lots of sizing bugs and technical Unity bugs, and I also had to get the Unity web building package and configure it to how I wanted. BUT, the biggest change is that I got my game on Itch, and I finally shipped! Main changes: Optimization and sizing bugs Added game to Itch.io SHIPPED"}, {"post_id": 81141, "ts": "2026-10-20T02:13:05Z", "hours": 3.3975, "text": "Tutorial and finishing touches The tutorial was created, and you can go around each of the rooms where Dennis will explain each of the features. The tutorial dialogue will also only appear ONCE, which took me forever to figure out. I also added some actual words to the end of the timer/weeks, and its just a thank you message to all who played the beta/demo with some buttons to return to title or quit. Some other smaller changes is I added some text to the Slamazon website to be a placeholder logo, I also changed the chapter select background, which used to be the picture of that cat eating chips in the distance of the windows xp wallpaper. I’m so excited because I think I have an MVP to ship, and it has been a very long journey. One thing I had to accept before shipping was that I was never going to get the full chapter 1 shipped in time for Stardance like I wanted it to be, which is okay. I was hoping for all the assets to be done in time, but there was still so much to do and no time to do it, and unfortunately the submission part of my game relied on having all of the mannequin assets done. My solution to this was to just have the demo be about exploring the clothing system and exploring the costume shop, and like someone once told me, it doesn’t have to look good to be good. However, I will not stop working on Stitch-Craft after Stardance is over, and I fully intend to keep adding and improving the game as much as I can. Thank you to all who have liked my devlogs and shown your support for my game and its progress. Main changes: Tutorial added that shows player around the shop Slight cosmetic changes to placeholders and other missing assets Completed MVP"}, {"post_id": 81089, "ts": "2026-10-19T20:37:54Z", "hours": 2.4767, "text": "Dialogue, cleaning, and more The dialogue system is finally in place! The player can now go down different dialogue “paths”, allowing them to choose between 2 options. I was also going back and cleaning up some of my older codes a little bit when I realized that not a single one had been commented. It was at that moment that I hated my entire existence and this whole project because I made one of the biggest mistakes of this whole thing. I had also not learned about commenting at all until I took a computer programming class this year, and that my video game development teacher last year did not teach us about commenting, and now I can’t remember how half of the code works. If any of you have any suggestions on how to go about this, that would be very helpful! There have also been small updates to assets as I am getting ready to ship. There are just a few things left to do to get the MVP since most finalized assets will not be finished by the time I ship, so I think the demo will just be an exploration of the clothing system. I’m expecting one more devlog, and the stitchcraft demo will be shipped! Main changes: Dialogue system with options and branching dialogue Code has been cleaned a little Final touches for shipping"}, {"post_id": 63920, "ts": "2026-09-07T23:26:53Z", "hours": 4.2289, "text": "Mannequin Assets! New assets for the mannequin, money/time labels, info panel, and other buttons. There were bugs, bugs, and many more bugs, especially with getting the sprites to show up, which was somewhat caused by me trying to use SVGs, but ultimately falling back to PNGs for now. Special thanks to my amazing mother for helping me create the mannequin assets, and my amazing father for teaching me how to use Figma. The tops now have basic assets (to be updated and more added later) that snap onto the mannequin, and can be taken off in a similar fashion (hehe, fashion) to the storage room. Some other bug fixes were making sure the purchasing system works completely, and slamazon looks good. Main changes: The clothing pieces have assets and are aligned with the mannequin New UI assets all around Slamazon delivery system bug fixes"}, {"post_id": 63687, "ts": "2026-09-07T16:52:49Z", "hours": 3.8639, "text": "Settings Overhaul I changed the settings’ visual look. Before, there was mostly placeholder images, placeholder sliders, and placeholder fonts. So I did some work in Figma, and lots of troubleshooting with the code to create the spinning pattern. My biggest challenge was that I was originally going to have the pattern slowly moving off screen to look like an infinite stream of icons, but I decided not to and to just have them spin slowly in place. This is the finished product, and more visual updates to all other screens to come! Main changes: Spinning icon pattern in the background of the settings New font chosen for most of the game UI style chosen and developed final settings UI"}, {"post_id": 30341, "ts": "2026-07-17T20:20:26Z", "hours": 4.4286, "text": "Submission system created Now you can submit costumes to the required amount for a chapter. You can put costumes on, and take them off with very similar logic as the storage system. You can only submit when the minimum requirement of a top and bottom, or full piece, is met. The image below is the layout of the UI. Everything is currently placeholders, which the rest of the project will be mostly a lot of drawing assets, so the demo is close to being ready! Main changes: Requirement costume amount added Clothing pieces can be placed as a child of the mannequin Clothing pieces can be sumitted towards the final costume count"}, {"post_id": 12889, "ts": "2026-06-21T03:34:51Z", "hours": 2.4853, "text": "Cosmetic minigame updates I made some cosmetic minigame updates to really finalize it. The different phases now slide into each other making a really nice looking transition. I also did tons of bug fixes around the actual creation of the final clothing piece, especially with canvases and canvas types. My main bug I had to fix was the workspace canvas being visible, but setting it as inactive made the hanger object spawn on the wrong canvas die to incorrect references, however, the problem was solved by using alpha values instead of setting the worspace canvas as inactive. The minigames look plain right now, but I will put animated backgrounds to show the different settings (like cutting out fabric, sewing, and ironing). Main changes: Sliding transitions between minigame phases Workspace canvas disappears during minigames Clothing piece confirmed to spawn after minigames with correct grade"}, {"post_id": 12221, "ts": "2026-06-19T22:59:05Z", "hours": 2.6964, "text": "Minigame updates! I made some updates to the minigame system. I mostly added things to the version from the last devlog. The line renderer shows up now, but I had to make it disconnected from the accuracy, so it’s purely cosmetic. The second phase is a timing minigame where you have to click the slider at the right time, and I changed it from a horizontal orientation to vertical. The buttons in phase 3 got a slight timing update and little steam puffs, which the video below is of that working. The last thing I updated was make the flow of starting and ending the minigame nice with the start minigame button. Main updates: Line renderer fixed Small cosmetic changes to phases 2 and 3 Minigames can be started with the start minigame button"}, {"post_id": 11410, "ts": "2026-06-18T17:53:30Z", "hours": 3.8108, "text": "Remade the minigame system. It comes in 3 phases still, and accuracy can be calculated. I had to take a pretty long break after the first attempt at the minigames because I got so burnt out from how badly the last one turned out, but I persist. My main struggle with this update was trying to get the line renderer to work, which I am still working on. The picture below is a look at what the first phase will look like, I’ll probably add more cosmetic changes later when I’m focusing on assets near the end of the game. Main changes Remade base minigames system 3 phases can be played, and accuracy is deducted Added a few more placeholder assets"}, {"post_id": 2556, "ts": "2026-06-05T03:19:02Z", "hours": 3.45, "text": "First minigame system I created a sewing system with a series of 3 mini games to cut, sew, and press costumes. Unfortunately it doesn’t run very smoothly, and I am unable to get a screenshot of it working. I am going to overhaul it later, but it’s good for getting the idea of what I want the mini games to be. The image below is what the main pattern picking UI will look like. Main changes: Made fabric a currency to use in sewing Made sewing draft games Made a few new assets"}, {"post_id": 2361, "ts": "2026-06-04T20:18:29Z", "hours": 2.135, "text": "Currency system I created a currency system for my game! It includes a storefront that refreshes every week to buy clothing pieces and fabric (which will come into play later) which get delivered to your storage after the amount of weeks it takes to deliver. The deliveries also show up in a calendar on the desk. Once again, it was a little bit of a struggle to get items to keep references across scenes and on start, but I figured it out. Everything is mostly placeholders right now, but that will change in the future. Main changes: Currency system created using unity gaming services Storefront created to refresh with new clothes to buy every week Calendar shows pending deliveries Completed deliveries get sent to the storage as a draggable hanger object to use Budget for each chapter gets set at the beginning, which players use to spend"}, {"post_id": 1797, "ts": "2026-06-04T00:26:59Z", "hours": 2.9922, "text": "Storage system I made a storage system for my hanger objects with a sorting system. The hardest part was making the hangers move from one canvas to another canvas on another scene. The hangers also kept spawning in all the wrong places, and there was a lot of scene management bugs. But, it works smoothly now as seen in the demo below. Main changes : Created storage system that moves hangers from player’s canvas to storage canvas in separate scene Hangers keep their properties when stored, and stay in storage when player loads and unloads scene Sorting system sorts the clothes in storage by attributes"}, {"post_id": 1280, "ts": "2026-06-03T05:15:27Z", "hours": 6.6208, "text": "Timer system I added a timer system in weeks for each chapter. I also updated my navigation system to support additive scenes rather than single scenes to preserve references. I also made sure that the timer worked for free play mode as well as the chapters. I ran into a lot of bugs with the scene logic, especially trying to get additive scenes to unload. However, I figured it out and it works nicely."}, {"post_id": 428, "ts": "2026-06-01T20:38:44Z", "hours": 0.3897, "text": "First official devlog! My progress before this includes a design document, I made most scenes that I anticipate will be used, made a navigation logic with a fader for smooth transitions, a few icons and visuals (I attached the title for now to this devlog), and a system to create hangers with data like clothing type, material, color, etc. There was a lot of unnecessary bugs that could’ve been avoided easily, but I learned a lot from them. All this to say that updates will be more recorded from now on."}]...
|
Title: Stitch-Craft by @Peneroni | Stardance
Devl Title: Stitch-Craft by @Peneroni | Stardance
Devlogs:
First official devlog! My progress before this includes a design document, I made most scenes that I anticipate will be used, made a navigation logic with a fader for smooth transitions, a few icons and visuals (I attached the title for now to this devlog), and a system to create hangers with data like clothing type, material, color, etc. There was a lot of unnecessary bugs that could’ve been avoided easily, but I learned a lot from them. All this to say that updates will be more recorded from now on.
Timer system I added a timer system in weeks for each chapter. I also updated my navigation system to support additive scenes rather than single scenes to preserve references. I also made sure that the timer worked for free play mode as well as the chapters. I ran into a lot of bugs with the scene logic, especially trying to get additive scenes to unload. However, I figured it out and it works nicely.
Storage system I made a storage system for my hanger objects with a sorting system. The hardest part was making the hangers move from one canvas to another canvas on another scene. The hangers also kept spawning in all the wrong places, and there was a lot of scene management bugs. But, it works smoothly now as seen in the demo below. Main changes : Created storage system that moves hangers from player’s canvas to storage canvas in separate scene Hangers keep their properties when stored, and stay in storage when player loads and unloads scene Sorting system sorts the clothes in storage by attributes
Currency system I created a currency system for my game! It includes a storefront that refreshes every week to buy clothing pieces and fabric (which will come into play later) which get delivered to your storage after the amount of weeks it takes to deliver. The deliveries also show up in a calendar on the desk. Once again, it was a little bit of a struggle to get items to keep references across scenes and on start, but I figured it out. Everything is mostly placeholders right now, but that will change in the future. Main changes: Currency system created using unity gaming services Storefront created to refresh with new clothes to buy every week Calendar shows pending deliveries Completed deliveries get sent to the storage as a draggable hanger object to use Budget for each chapter gets set at the beginning, which players use to spend
First minigame system I created a sewing system with a series of 3 mini games to cut, sew, and press costumes. Unfortunately it doesn’t run very smoothly, and I am unable to get a screenshot of it working. I am going to overhaul it later, but it’s good for getting the idea of what I want the mini games to be. The image below is what the main pattern picking UI will look like. Main changes: Made fabric a currency to use in sewing Made sewing draft games Made a few new assets
Remade the minigame system. It comes in 3 phases still, and accuracy can be calculated. I had to take a pretty long break after the first attempt at the minigames because I got so burnt out from how badly the last one turned out, but I persist. My main struggle with this update was trying to get the line renderer to work, which I am still working on. The picture below is a look at what the first phase will look like, I’ll probably add more cosmetic changes later when I’m focusing on assets near the end of the game. Main changes Remade base minigames system 3 phases can be played, and accuracy is deducted Added a few more placeholder assets
Minigame updates! I made some updates to the minigame system. I mostly added things to the version from the last devlog. The line renderer shows up now, but I had to make it disconnected from the accuracy, so it’s purely cosmetic. The second phase is a timing minigame where you have to click the slider at the right time, and I changed it from a horizontal orientation to vertical. The buttons in phase 3 got a slight timing update and little steam puffs, which the video below is of that working. The last thing I updated was make the flow of starting and ending the minigame nice with the start minigame button. Main updates: Line renderer fixed Small cosmetic changes to phases 2 and 3 Minigames can be started with the start minigame button
Cosmetic minigame updates I made some cosmetic minigame updates to really finalize it. The different phases now slide into each other making a really nice looking transition. I also did tons of bug fixes around the actual creation of the final clothing piece, especially with canvases and canvas types. My main bug I had to fix was the workspace canvas being visible, but setting it as inactive made the hanger object spawn on the wrong canvas die to incorrect references, however, the problem was solved by using alpha values instead of setting the worspace canvas as inactive. The minigames look plain right now, but I will put animated backgrounds to show the different settings (like cutting out fabric, sewing, and ironing). Main changes: Sliding transitions between minigame phases Workspace canvas disappears during minigames Clothing piece confirmed to spawn after minigames with correct grade
Submission system created Now you can submit costumes to the required amount for a chapter. You can put costumes on, and take them off with very similar logic as the storage system. You can only submit when the minimum requirement of a top and bottom, or full piece, is met. The image below is the layout of the UI. Everything is currently placeholders, which the rest of the project will be mostly a lot of drawing assets, so the demo is close to being ready! Main changes: Requirement costume amount added Clothing pieces can be placed as a child of the mannequin Clothing pieces can be sumitted towards the final costume count
Settings Overhaul I changed the settings’ visual look. Before, there was mostly placeholder images, placeholder sliders, and placeholder fonts. So I did some work in Figma, and lots of troubleshooting with the code to create the spinning pattern. My biggest challenge was that I was originally going to have the pattern slowly moving off screen to look like an infinite stream of icons, but I decided not to and to just have them spin slowly in place. This is the finished product, and more visual updates to all other screens to come! Main changes: Spinning icon pattern in the background of the settings New font chosen for most of the game UI style chosen and developed final settings UI
Mannequin Assets! New assets for the mannequin, money/time labels, info panel, and other buttons. There were bugs, bugs, and many more bugs, especially with getting the sprites to show up, which was somewhat caused by me trying to use SVGs, but ultimately falling back to PNGs for now. Special thanks to my amazing mother for helping me create the mannequin assets, and my amazing father for teaching me how to use Figma. The tops now have basic assets (to be updated and more added later) that snap onto the mannequin, and can be taken off in a similar fashion (hehe, fashion) to the storage room. Some other bug fixes were making sure the purchasing system works completely, and slamazon looks good. Main changes: The clothing pieces have assets and are aligned with the mannequin New UI assets all around Slamazon delivery system bug fixes
Dialogue, cleaning, and more The dialogue system is finally in place! The player can now go down different dialogue “paths”, allowing them to choose between 2 options. I was also going back and cleaning up some of my older codes a little bit when I realized that not a single one had been commented. It was at that moment that I hated my entire existence and this whole project because I made one of the biggest mistakes of this whole thing. I had also not learned about commenting at all until I took a computer programming class this year, and that my video game development teacher last year did not teach us about commenting, and now I can’t remember how half of the code works. If any of you have any suggestions on how to go about this, that would be very helpful! There have also been small updates to assets as I am getting ready to ship. There are just a few things left to do to get the MVP since most finalized assets will not be finished by the time I ship, so I think the demo will just be an exploration of the clothing system. I’m expecting one more devlog, and the stitchcraft demo will be shipped! Main changes: Dialogue system with options and branching dialogue Code has been cleaned a little Final touches for shipping
Tutorial and finishing touches The tutorial was created, and you can go around each of the rooms where Dennis will explain each of the features. The tutorial dialogue will also only appear ONCE, which took me forever to figure out. I also added some actual words to the end of the timer/weeks, and its just a thank you message to all who played the beta/demo with some buttons to return to title or quit. Some other smaller changes is I added some text to the Slamazon website to be a placeholder logo, I also changed the chapter select background, which used to be the picture of that cat eating chips in the distance of the windows xp wallpaper. I’m so excited because I think I have an MVP to ship, and it has been a very long journey. One thing I had to accept before shipping was that I was never going to get the full chapter 1 shipped in time for Stardance like I wanted it to be, which is okay. I was hoping for all the assets to be done in time, but there was still so much to do and no time to do it, and unfortunately the submission part of my game relied on having all of the mannequin assets done. My solution to this was to just have the demo be about exploring the clothing system and exploring the costume shop, and like someone once told me, it doesn’t have to look good to be good. However, I will not stop working on Stitch-Craft after Stardance is over, and I fully intend to keep adding and improving the game as much as I can. Thank you to all who have liked my devlogs and shown your support for my game and its progress. Main changes: Tutorial added that shows player around the shop Slight cosmetic changes to placeholders and other missing assets Completed MVP
Build bugs and ship I know I said the last devlog would be the last one, but as expected there were a few last bugs, especially with rendering. There were lots of sizing bugs and technical Unity bugs, and I also had to get the Unity web building package and configure it to how I wanted. BUT, the biggest change is that I got my game on Itch, and I finally shipped! Main changes: Optimization and sizing bugs Added game to Itch.io SHIPPED
Ships:
#Welcome to Stitch-Craft! Work in a dying costume shop with Dennis the costume designer as you build, pull, and buy new costumes. There are many ways to house and attain costumes, and it’s your job to do just that! This is my passion project that I’ve been working on for the past several and I’m ver excited to share the beginnings of it with you all! My mom gave me the idea because she works in a costume shop, and we both thought it would be a fun game to play. One thing to note that this is an early ship of the MVP I set for myself. Most of the assets are placeholders, you can’t fully make costumes and submit them for a show yet, and not all features that I plan to add are in the game yet. I wanted to ship what I have so far, which is the system of how you gain costumes in the dysfunctional costume shop of yours. Currently you can go through the tutorial with Dennis, play the sewing minigame for costumes, buy costumes, and store your costumes in the storage. This is what I shipped, and I hope you enjoy!...
|
1793199092.4540892
|
1793285492.4540892
|
|
55524
|
Oi Site by @oishani | Stardance
|
oishani
|
0
|
2.73
|
0
|
[]
|
[{"post_id": 81158, "ts": "202 [{"post_id": 81158, "ts": "2026-10-20T04:22:46Z", "hours": 2.7278, "text": "First I was just making a simple link tree, then started playing around and adding new style elements. I plan to make it more of a real personal website now too, adding like a bio and interests and actual stuff about me."}]...
|
Title: Oi Site by @oishani | Stardance
Devlogs:
F Title: Oi Site by @oishani | Stardance
Devlogs:
First I was just making a simple link tree, then started playing around and adding new style elements. I plan to make it more of a real personal website now too, adding like a bio and interests and actual stuff about me....
|
1793166623.8213415
|
1793771423.8213415
|
|
70132
|
Custom Pet by @DragonDev_27i | Stardance
|
DragonDev_27i
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-21T00:31:15Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Desktop pet that takes the sprite of Sans the Skelton from Undertale as my playground project and it was fun to make. The challenges that I experienced during the production of the project, not knowing how to interpret parts of the code, because some of it didn’t make sense. For example if I wanted to add functionality; I didn’t know that I could use a function such as _unhandled_input to handle inputs such as performing a certain action if a key is pressed. Thankfully, after reading the Godot documentation, and watching a couple of YouTube videos alongside a couple google searches I was able to overcome my challenges. Finally, I would say that I am proud because I was able to make a desktop pet, and now I get to see sans walk across my Desktop.", "repo": "https://github.com/JohhnyTech27i/DeskPet", "demo": "https://firedragon-27i.itch.io/sans-desktop-pet"}]...
|
[{"post_id": 81148, "ts": "202 [{"post_id": 81148, "ts": "2026-10-20T03:04:23Z", "hours": 1.0581, "text": "Devlog 2 Final devlog: I have worked on the pet and have decided that this will be the final devlog for stardance. I will continue to update the program, but due to time constraints I can’t keep making devlogs for this project in star dance. Great news is that I was able to add a menu that allows you to quit the game. Figured out how the @onready works how to handle inputs and other things; code seems a bit more oraganzied now. Sans now has a timer that says, I’m sans."}, {"post_id": 80745, "ts": "2026-10-18T18:08:50Z", "hours": 2.3864, "text": "Dev 1: In this devlog I was able to change the sprite to sans, changed the movement so that it only went in one direction. The guide was right it was supposed to be Vector2(1,0) not Vector(1,1) so that it could move smoothly in one direction instead of going off in all directions. Next, Sans can tell the user the time based on their own PC time when left clicked on. Also, sounds makes his iconic noise eeee when left clicked on. Now for the next devlog, the goals will to optimize the code in a way that it allows for sans to do more actions such as fall onto the taskbar, or create a popup screen that allows to quit the program or that could maybe change the sprite to Chara or any another Undertale characters."}, {"post_id": 80686, "ts": "2026-10-18T14:48:33Z", "hours": 1.6467, "text": "Just working to see how the DeskPet will work, so this will be the prototype. By following the guide I was able to get to the part where the sprite can move all across. There was some issues with following the code because, I had to change direction to Vector2(1,1) instead of keeping it at Vector2(1,0), so that the sprite can move in all directions. Hopefully for the next devlog I am able to move the sprite more gracefully, and there is interaction when I click on it or drag it. As I plan, to make, characters like sans or Chara, fight or do other animations."}]...
|
Title: Custom Pet by @DragonDev_27i | Stardance
D Title: Custom Pet by @DragonDev_27i | Stardance
Devlogs:
Just working to see how the DeskPet will work, so this will be the prototype. By following the guide I was able to get to the part where the sprite can move all across. There was some issues with following the code because, I had to change direction to Vector2(1,1) instead of keeping it at Vector2(1,0), so that the sprite can move in all directions. Hopefully for the next devlog I am able to move the sprite more gracefully, and there is interaction when I click on it or drag it. As I plan, to make, characters like sans or Chara, fight or do other animations.
Dev 1: In this devlog I was able to change the sprite to sans, changed the movement so that it only went in one direction. The guide was right it was supposed to be Vector2(1,0) not Vector(1,1) so that it could move smoothly in one direction instead of going off in all directions. Next, Sans can tell the user the time based on their own PC time when left clicked on. Also, sounds makes his iconic noise eeee when left clicked on. Now for the next devlog, the goals will to optimize the code in a way that it allows for sans to do more actions such as fall onto the taskbar, or create a popup screen that allows to quit the program or that could maybe change the sprite to Chara or any another Undertale characters.
Devlog 2 Final devlog: I have worked on the pet and have decided that this will be the final devlog for stardance. I will continue to update the program, but due to time constraints I can’t keep making devlogs for this project in star dance. Great news is that I was able to add a menu that allows you to quit the game. Figured out how the @onready works how to handle inputs and other things; code seems a bit more oraganzied now. Sans now has a timer that says, I’m sans.
Ships:
I made a Desktop pet that takes the sprite of Sans the Skelton from Undertale as my playground project and it was fun to make. The challenges that I experienced during the production of the project, not knowing how to interpret parts of the code, because some of it didn’t make sense. For example if I wanted to add functionality; I didn’t know that I could use a function such as _unhandled_input to handle inputs such as performing a certain action if a key is pressed. Thankfully, after reading the Godot documentation, and watching a couple of YouTube videos alongside a couple google searches I was able to overcome my challenges. Finally, I would say that I am proud because I was able to make a desktop pet, and now I get to see sans walk across my Desktop....
|
1793199122.4734063
|
1793285522.4734063
|
|
67744
|
A custom cybersecurity oriented cyberdeck. by @mat A custom cybersecurity oriented cyberdeck. by @matthieu_obyrne | Stardance...
|
matthieu_obyrne
|
0
|
9.06
|
0
|
[]
|
[{"post_id": 81147, "ts": "202 [{"post_id": 81147, "ts": "2026-10-20T02:57:49Z", "hours": 0.9139, "text": "I finally added an up-to-date readme and cleared up my github"}, {"post_id": 81057, "ts": "2026-10-19T18:12:28Z", "hours": 0.8217, "text": "I updated my pcb back to the old fold version, and placed everything back on it, i think I am finally ready to print it, I also made a quick cad of the pcb that will allow me to make and design the case."}, {"post_id": 78901, "ts": "2026-10-11T23:24:19Z", "hours": 1.6881, "text": "Added a rough draft of the opensource proxmark 3 into my pcb integrated inside"}, {"post_id": 77728, "ts": "2026-10-08T03:19:34Z", "hours": 5.6342, "text": "I started working on the pcb and placing all the parts e"}]...
|
Title: A custom cybersecurity oriented cyberdeck. Title: A custom cybersecurity oriented cyberdeck. by @matthieu_obyrne | Stardance
Devlogs:
I started working on the pcb and placing all the parts e
Added a rough draft of the opensource proxmark 3 into my pcb integrated inside
I updated my pcb back to the old fold version, and placed everything back on it, i think I am finally ready to print it, I also made a quick cad of the pcb that will allow me to make and design the case.
I finally added an up-to-date readme and cleared up my github...
|
1793112896.473352
|
1793717696.473352
|
|
4994
|
Tamagochi pet by @S0l4Ce | Stardance
|
S0l4Ce
|
1
|
52.03
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T05:08:22Z", "hours": 45.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a tamagotchi pet (i am aware that throughout the project, the spelling of it has been inconsistent) But anyway, what i found most challenging was having to look through the loop constantly making adjustments based off minor errors during each test run and incorrect wiring making me feel like i had the code wrong. I am proud that I learned surprisingly a lot. The screenshot is merely just part of it and you should check it out yourself! both the source for the software and hardware is in there. The latest software build is in a separate branch and you may need to scope around for the latest hardware build. PLEASE note that all of the hardware additions - if you truly want to build it yourself, is pushing the limits of the esp32 so please run it while using a powerful cable.", "repo": "https://github.com/mootonlee/tamagotchi-", "demo": ""}]...
|
[{"post_id": 81143, "ts": "202 [{"post_id": 81143, "ts": "2026-10-20T02:14:13Z", "hours": 1.0578, "text": "spent this hour troubleshooting and figuring out how to add wires. was super unsucessful and wasted my time. im pretty annoyed"}, {"post_id": 80851, "ts": "2026-10-19T00:50:55Z", "hours": 2.3, "text": "Finished adding modules like the LEDs, resistors, etc. All i need now is the wiring which i heard is tedious"}, {"post_id": 80585, "ts": "2026-10-18T07:04:57Z", "hours": 1.4167, "text": "Im very proud of my work! i finished up the screen, fixed misalignments, ensured precision, and in the end, everything fit perfectly!"}, {"post_id": 80513, "ts": "2026-10-17T22:48:45Z", "hours": 2.26, "text": "got mad countless times. Im doing my CAD for my project because youll now get permanently rejected if you miss it and i never knew. Im making the screen myself because i cant find it online. Below is a picture of how its assembled so far, and i would post the part im making right now but this just looks better. Also, does the CAD have to be fully accurate? ive never done a CAD before so parts i make myself may look off but ill try my best to make the measurements right."}, {"post_id": 70980, "ts": "2026-09-20T04:48:45Z", "hours": 6.0014, "text": "finally finished the 2nd personality. will be shipping my project. only thing left to do is fix bugs (i already scanned software and hardware for bugs. though the code seems somewhat contradictory to itself, it still works but please report bugs under this one’s comment and check out my submission and the demo video!"}, {"post_id": 63407, "ts": "2026-09-07T07:10:06Z", "hours": 1.4625, "text": "im starting work on the radiobuttons for interchangable personality to wrap up the project. im using placeholders so the face looks red if the radiobuttons are selected so it would look unpleasant to see but yeah"}, {"post_id": 59986, "ts": "2026-09-02T02:11:14Z", "hours": 2.4203, "text": "Got back on track, finally! It now gets visibly dim below 50 value on light, and dark below 25, along with squint and sleep. Im now going to begin working on the other expressions after I finish adding the dim to smile and alone faces. This thing is ending soon so idk if i will be able to add the computer control functions as promised :( I also switched to cachyos so Idk how that would go either. Check out the hardware version on my page though! its finished"}, {"post_id": 52633, "ts": "2026-08-22T21:16:19Z", "hours": 0.5211, "text": "My windows OS broke, not sure how, so im running on my second SSD and my most recent work has been erased! (software version) random thumbnail ig but im gonna be re-doing whatever has been erased.."}, {"post_id": 41108, "ts": "2026-08-05T03:07:48Z", "hours": 3.4297, "text": "finally added a sleep system, dimming system, and a fully fixed and functional lonely system. when lights are at or below 50, the lights will go dim, and below 25, they will go even dimmer, and it will sleep (software) I will the face variants next, and then actual interactive computer controls. shy and moody are still not ready yet"}, {"post_id": 34593, "ts": "2026-07-25T13:29:57Z", "hours": 2.5967, "text": "added lonely, smile, and neutral, also added placeholders for the soon to be added personalities and a brightness slider. Both are unfunctional and i only have the 3 faces for now. go check out my hardware version, its fully functional"}, {"post_id": 32247, "ts": "2026-07-21T09:09:49Z", "hours": 1.2072, "text": "working on a software version of my project 🔥 I main micropython but I’m adjusting to python for this and learning the different ways things are written, and figuring out how to make faces. Can anyone tell me if theres a designer that gives you the code when you draw something on a canvas? similar to lopaka?? The software version is projected to have more features for computer control than the hardware version. After finishing the faces and overall logic, I will add the additional side controls for it, like light and stuff"}, {"post_id": 32144, "ts": "2026-07-21T03:23:42Z", "hours": 9.8794, "text": "built an extension for the pet. It connects to the pet using gnd and 4 labeled gpio pins, though the 4th one connects to 0 and not 40. It works somewhat like a stream deck; It opens 2 games, 2 code editors, a browser, and shuts off or closes tabs on my computer without needing special permissions, it is built for windows though. Most of the hours logged came from trial and error. Most of the time the buttons wouldnt register, spam the same commands, double clicks wouldnt register, and it was a mess for hours. did some bugfixes involving screen bugs during personality swaps, and the pet “forgetting” its personality. please suggest additional ideas."}, {"post_id": 30476, "ts": "2026-07-18T02:37:34Z", "hours": 1.7375, "text": "Rewired to remove clutter. Back isn’t looking too good but the front is, when I run out of ideas ill probably build a shell for it please make recommendations"}, {"post_id": 30124, "ts": "2026-07-17T13:22:42Z", "hours": 2.4481, "text": "Added another personality, shy. added “cores” that determine the personality when plugged in, red for moody and blue for shy. unplug for normal. The shy personality features new unique faces. led colors and shaken face remain same"}, {"post_id": 29977, "ts": "2026-07-17T06:07:54Z", "hours": 1.6644, "text": "Ignore devlog: Tried making online demo but i pressed a button and all my tabs refreshed all at once and reset my work. Im publishing the devlog because i still did the work and i dont want it to go to waste (IGNORE THIS DEVLOG)"}, {"post_id": 29812, "ts": "2026-07-16T23:08:57Z", "hours": 3.2333, "text": "Added extra personality. If you plug a red LED in, it will get a more of a moody personality. It will look angry, sleep angry, and will usually just be angry (shaken face does not change.) unplugging the red LED will make it instantly revert to default personality let me know other interchangeable personalities I should add, or other software and hardware suggestions. Thanks."}, {"post_id": 28868, "ts": "2026-07-15T13:02:50Z", "hours": 2.6472, "text": "Added a gyroscope so the pet can become dizzy when shook. It features a red backlight, and remains dizzy for about 5 seconds. It was really a 20-30 minute setup after learning how to code and use one, and installing the libraries, but that extra addition turned into hours of additional troubleshooting since I was unfamiliar with the hardware. I eventually got it working after plenty of trial and error, and the real issue was just a couple lines of code. I’m unfortunately not getting much views, which is discouraging, but if you do come across this and decide to click on it, please suggest something in the comments. Thanks."}, {"post_id": 28151, "ts": "2026-07-14T08:19:06Z", "hours": 0.6217, "text": "Added status lights; finishing off full basic functionality for the pet. any additional features would be improvements, hardware additions, and wiring. full explanation of functions below: The “pet” is a TFT resistive touchscreen. Its face, as you can see, is a simple white and black pixelated look. 4 functions (for now): lonely - after 30 seconds of no interaction, after waking up or not being pet, it will become lonely, which is a sad face of course. The backlight glows a gloomy blue, slightly purple. neutral - base face, the pet is neutral when it isn’t lonely, had just woken up, and had recently been pet. the 3 other moods can occur when it is neutral. the backlight is white. sleeping - when the ambient light is low enough the pet will sleep. It cannot be disturbed and cannot become lonely until woken up. This is what i personally thought was a nice addition to the pet and would bring more realism and life to the pet. This is done by having a photocell near the face for most light accuracy. the backlight features a light purple blue. happy - when you pet it (or interact with the screen), it will smile. the blush being blue and not red was both intentional and unintentional feature. The color system is inverted same with the screen rotation. I did not know how to correct it but i felt the blue looked different and I kinda liked it so I didn’t spend extra time troubleshooting. the backlight features a bright hot pink color. PLEASE add any suggestions and I will likely consider, like adding a thermistor, weather, USB OTG, etc. When i feel like it, I may add a USB mode where it can do things on my computer when plugged in, like opening an app or powering off my computer. (the 35 minutes logged was for fixing the code and adding the lights. Not the full code itself.)"}, {"post_id": 27970, "ts": "2026-07-13T22:34:39Z", "hours": 3.7561, "text": "added functionality to the pet and added made a separate smaller one. It now has multiple moods with the ability to sleep when lights are dimmed enough."}, {"post_id": 16541, "ts": "2026-06-26T22:02:40Z", "hours": 1.0939, "text": "working on the wiring of the tomogachi pet n stuff no coding yet has a touchscreen now"}]...
|
Title: Tamagochi pet by @S0l4Ce | Stardance
Devlo Title: Tamagochi pet by @S0l4Ce | Stardance
Devlogs:
working on the wiring of the tomogachi pet n stuff no coding yet has a touchscreen now
added functionality to the pet and added made a separate smaller one. It now has multiple moods with the ability to sleep when lights are dimmed enough.
Added status lights; finishing off full basic functionality for the pet. any additional features would be improvements, hardware additions, and wiring. full explanation of functions below: The “pet” is a TFT resistive touchscreen. Its face, as you can see, is a simple white and black pixelated look. 4 functions (for now): lonely - after 30 seconds of no interaction, after waking up or not being pet, it will become lonely, which is a sad face of course. The backlight glows a gloomy blue, slightly purple. neutral - base face, the pet is neutral when it isn’t lonely, had just woken up, and had recently been pet. the 3 other moods can occur when it is neutral. the backlight is white. sleeping - when the ambient light is low enough the pet will sleep. It cannot be disturbed and cannot become lonely until woken up. This is what i personally thought was a nice addition to the pet and would bring more realism and life to the pet. This is done by having a photocell near the face for most light accuracy. the backlight features a light purple blue. happy - when you pet it (or interact with the screen), it will smile. the blush being blue and not red was both intentional and unintentional feature. The color system is inverted same with the screen rotation. I did not know how to correct it but i felt the blue looked different and I kinda liked it so I didn’t spend extra time troubleshooting. the backlight features a bright hot pink color. PLEASE add any suggestions and I will likely consider, like adding a thermistor, weather, USB OTG, etc. When i feel like it, I may add a USB mode where it can do things on my computer when plugged in, like opening an app or powering off my computer. (the 35 minutes logged was for fixing the code and adding the lights. Not the full code itself.)
Added a gyroscope so the pet can become dizzy when shook. It features a red backlight, and remains dizzy for about 5 seconds. It was really a 20-30 minute setup after learning how to code and use one, and installing the libraries, but that extra addition turned into hours of additional troubleshooting since I was unfamiliar with the hardware. I eventually got it working after plenty of trial and error, and the real issue was just a couple lines of code. I’m unfortunately not getting much views, which is discouraging, but if you do come across this and decide to click on it, please suggest something in the comments. Thanks.
Added extra personality. If you plug a red LED in, it will get a more of a moody personality. It will look angry, sleep angry, and will usually just be angry (shaken face does not change.) unplugging the red LED will make it instantly revert to default personality let me know other interchangeable personalities I should add, or other software and hardware suggestions. Thanks.
Ignore devlog: Tried making online demo but i pressed a button and all my tabs refreshed all at once and reset my work. Im publishing the devlog because i still did the work and i dont want it to go to waste (IGNORE THIS DEVLOG)
Added another personality, shy. added “cores” that determine the personality when plugged in, red for moody and blue for shy. unplug for normal. The shy personality features new unique faces. led colors and shaken face remain same
Rewired to remove clutter. Back isn’t looking too good but the front is, when I run out of ideas ill probably build a shell for it please make recommendations
built an extension for the pet. It connects to the pet using gnd and 4 labeled gpio pins, though the 4th one connects to 0 and not 40. It works somewhat like a stream deck; It opens 2 games, 2 code editors, a browser, and shuts off or closes tabs on my computer without needing special permissions, it is built for windows though. Most of the hours logged came from trial and error. Most of the time the buttons wouldnt register, spam the same commands, double clicks wouldnt register, and it was a mess for hours. did some bugfixes involving screen bugs during personality swaps, and the pet “forgetting” its personality. please suggest additional ideas.
working on a software version of my project 🔥 I main micropython but I’m adjusting to python for this and learning the different ways things are written, and figuring out how to make faces. Can anyone tell me if theres a designer that gives you the code when you draw something on a canvas? similar to lopaka?? The software version is projected to have more features for computer control than the hardware version. After finishing the faces and overall logic, I will add the additional side controls for it, like light and stuff
added lonely, smile, and neutral, also added placeholders for the soon to be added personalities and a brightness slider. Both are unfunctional and i only have the 3 faces for now. go check out my hardware version, its fully functional
finally added a sleep system, dimming system, and a fully fixed and functional lonely system. when lights are at or below 50, the lights will go dim, and below 25, they will go even dimmer, and it will sleep (software) I will the face variants next, and then actual interactive computer controls. shy and moody are still not ready yet
My windows OS broke, not sure how, so im running on my second SSD and my most recent work has been erased! (software version) random thumbnail ig but im gonna be re-doing whatever has been erased..
Got back on track, finally! It now gets visibly dim below 50 value on light, and dark below 25, along with squint and sleep. Im now going to begin working on the other expressions after I finish adding the dim to smile and alone faces. This thing is ending soon so idk if i will be able to add the computer control functions as promised :( I also switched to cachyos so Idk how that would go either. Check out the hardware version on my page though! its finished
im starting work on the radiobuttons for interchangable personality to wrap up the project. im using placeholders so the face looks red if the radiobuttons are selected so it would look unpleasant to see but yeah
finally finished the 2nd personality. will be shipping my project. only thing left to do is fix bugs (i already scanned software and hardware for bugs. though the code seems somewhat contradictory to itself, it still works but please report bugs under this one’s comment and check out my submission and the demo video!
got mad countless times. Im doing my CAD for my project because youll now get permanently rejected if you miss it and i never knew. Im making the screen myself because i cant find it online. Below is a picture of how its assembled so far, and i would post the part im making right now but this just looks better. Also, does the CAD have to be fully accurate? ive never done a CAD before so parts i make myself may look off but ill try my best to make the measurements right.
Im very proud of my work! i finished up the screen, fixed misalignments, ensured precision, and in the end, everything fit perfectly!
Finished adding modules like the LEDs, resistors, etc. All i need now is the wiring which i heard is tedious
spent this hour troubleshooting and figuring out how to add wires. was super unsucessful and wasted my time. im pretty annoyed
Ships:
I made a tamagotchi pet (i am aware that throughout the project, the spelling of it has been inconsistent) But anyway, what i found most challenging was having to look through the loop constantly making adjustments based off minor errors during each test run and incorrect wiring making me feel like i had the code wrong. I am proud that I learned surprisingly a lot. The screenshot is merely just part of it and you should check it out yourself! both the source for the software and hardware is in there. The latest software build is in a separate branch and you may need to scope around for the latest hardware build. PLEASE note that all of the hardware additions - if you truly want to build it yourself, is pushing the limits of the esp32 so please run it while using a powerful cable....
|
1793148797.2933943
|
1793235197.2933943
|
|
70073
|
last surprise project by @amateur_tech_guy | Stard last surprise project by @amateur_tech_guy | Stardance...
|
amateur_tech_guy
|
0
|
0.55
|
0
|
[]
|
[{"post_id": 81139, "ts": "202 [{"post_id": 81139, "ts": "2026-10-20T01:21:44Z", "hours": 0.5511, "text": "devlog #1: working on a surprise new project! I wont tell anyone what it is yet, try to guess, heres a hint"}]...
|
Title: last surprise project by @amateur_tech_guy Title: last surprise project by @amateur_tech_guy | Stardance
Devlogs:
devlog #1: working on a surprise new project! I wont tell anyone what it is yet, try to guess, heres a hint...
|
1792958012.9325871
|
1793562812.9325871
|