|
59497
|
Noctalia Battery Graph by @FraI3mega | Stardance
|
FraI3mega
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T17:28:15Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "The project was a a nice and (relatively) quick solution to my problem. The README link that stardance shows is wrong, the correct one is in in the plugin folder, although I it a bit lacking to fit the PR requirements. If you use Noctalia you can easily test it by adding it in the settings", "repo": "https://github.com/FraI3mega/community-plugins/tree/battery-graph/battery-graph", "demo": "https://noctalia.dev/plugins/community/battery-graph"}]...
|
[{"post_id": 63709, "ts": "202 [{"post_id": 63709, "ts": "2026-09-07T17:24:26Z", "hours": 6.79, "text": "Noctalia Battery Graph This project was originally made for Anvil, so please excuse the lack of devlogs. The plugin uses upowerd to read the historic battery charge (in a period set by the user) and then displays it with a set granularity (also given by the user)"}]...
|
Title: Noctalia Battery Graph by @FraI3mega | Star Title: Noctalia Battery Graph by @FraI3mega | Stardance
Devlogs:
Noctalia Battery Graph This project was originally made for Anvil, so please excuse the lack of devlogs. The plugin uses upowerd to read the historic battery charge (in a period set by the user) and then displays it with a set granularity (also given by the user)
Ships:
The project was a a nice and (relatively) quick solution to my problem. The README link that stardance shows is wrong, the correct one is in in the plugin folder, although I it a bit lacking to fit the PR requirements. If you use Noctalia you can easily test it by adding it in the settings...
|
1793134254.5500984
|
1793220654.5500984
|
|
55337
|
My own site! by @deadbeef404 | Stardance
|
deadbeef404
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T17:00:22Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my personal site I made. It honestly came out really good. I didn’t really expect it would turn out this good. I really like it and I also hope that you as well like it :)", "repo": "https://github.com/Loml-1989/ps-site", "demo": "https://tuxotaku.tech/"}]...
|
[{"post_id": 63675, "ts": "202 [{"post_id": 63675, "ts": "2026-09-07T16:36:20Z", "hours": 4.6356, "text": "oh I actually didn’t know that I had to do this TT Idk I’m sorry I genuinely didn’t know that I had to post logs TT"}]...
|
Title: My own site! by @deadbeef404 | Stardance
D Title: My own site! by @deadbeef404 | Stardance
Devlogs:
oh I actually didn’t know that I had to do this TT Idk I’m sorry I genuinely didn’t know that I had to post logs TT
Ships:
This is my personal site I made. It honestly came out really good. I didn’t really expect it would turn out this good. I really like it and I also hope that you as well like it :)...
|
1793145136.6542754
|
1793231536.6542754
|
|
25672
|
NeoOS by @WilGulf | Stardance
|
WilGulf
|
1
|
130.63
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T16:36:40Z", "hours": 118.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So I made my own os “NeoOS”, this project was started not long after the release of the macbook neo and cause of that the os got it’s name. Testing is pretty easy, just make sure you have qemu installed with the correct cpu architecture. The project has become much bigger than I thought when I started it, I just could not stop implementing more features. And the most challenging part must be the hardware interaction, like reading from a disk by sending commands in hex. The documentation found for how cpus/ata disks/ram and all works are so hard to understand but that may be because it is not a simple thing. So when testing I want you to know that even though there aren’t many commands the kernel is still doing so much work not seen and the kernel is also what took most hours on this project. Lastly I hope that someone with all documentation provided writes their own program for NeoOS, I would love to see what other people could do with my OS.", "repo": "https://github.com/WilGulf/NeoOS", "demo": "https://github.com/WilGulf/NeoOS/releases/tag/1.1.0"}]...
|
[{"post_id": 74057, "ts": "202 [{"post_id": 74057, "ts": "2026-09-26T16:34:52Z", "hours": 9.7725, "text": "Devblog 22 The review of NeoOS found some problems with the filesystem commands and I took some time to fix them. Now the commands know where they are run and you can move around with cd. The second thing for this devblog is that I got multi disk support so now you can have up to 4 harddrives attached with writing/reading working on all of them , and that took some interractions with the ata ports but I finally got it working. –WilGulf"}, {"post_id": 69740, "ts": "2026-09-17T18:05:34Z", "hours": 2.8608, "text": "Devblog 21 The review is taking ages, and I couldn’t leave NeoOS. So I of course continued with fixes and features. The big new thing in this devblog is the filesystem: NeoFS, I have done major changes to the design like how a free block is found which greatly improves performance. And many safeguards were added to reading/writing to the filesystem. I also updated the host fstools used to create the filesystem on a drive to support arguments with options, easier to use now. – WilGulf"}, {"post_id": 63661, "ts": "2026-09-07T16:18:42Z", "hours": 1.5858, "text": "Devblog 20 Final touches and logging the remaining time before shipping. I hope I have fixed all small bugs and made the libraries easy to use in new C programs. I also created some small new programs to show all functions in the kernel. Thats all for now and I hope to get to ship soon. –WilGulf"}, {"post_id": 63163, "ts": "2026-09-06T20:16:36Z", "hours": 1.6142, "text": "Devblog 19 Not as big of a update now, but I just wanted to show of my new readdir implementation. That is then used by list with some coloring, all are green cause there is only executables in /execs. – WilGulf"}, {"post_id": 63079, "ts": "2026-09-06T17:50:19Z", "hours": 9.9825, "text": "Devblog 18 So close to going over 10h however I managed to fix the bug. So a missing feature has been writing to the disk and not only read it. But the current file system was fat16 and the attempts I have made to implement writing has failed. What is the logical thing to do in this scenario, well I wrote my own filesystem: NeoFS. It is not feature rich compared to fat16 but that was why I could make it write. And the performance may be horibble when having larger files. But if it works I will keep it! So the test just shows writing/reading of a file. – WilGulf"}, {"post_id": 60414, "ts": "2026-09-02T18:32:35Z", "hours": 3.4125, "text": "Devblog 17 I have developed my own ramfs. The old filesystem only supported fat16 with only reading capabilities which maded it feel very limited with what you could do with it. So the first step I dicided to do with adding reading was to implement filesystem that lives in ram which is really easy to write to. Now the D: drive is used for the ramfs (D as in dev used by linux). In the screenshot test.elf creates a file: D:/test.txt and writes HELLO FROM RAMFS to it. Then read.elf (linux cat) can read that file. – WilGulf"}, {"post_id": 58085, "ts": "2026-08-30T13:12:46Z", "hours": 7.1003, "text": "Devblog 16 I wanted more programs for NeoOS but I felt really limited to just the print and getkey functions. So I rewrite ncurses (not with all ncurses functions) into my own curses for NeoOS. This allowed me to write programs that update the terminal like a screen. Here I shouw the NeoOS logo being displayed with a CRT-screen effect. Now I am In the decision of what game to make with this new library. – WilGulf"}, {"post_id": 56739, "ts": "2026-08-28T16:47:26Z", "hours": 4.86, "text": "Devblog 15 I have now added colored printing that I showcase here in the fetch program. The printing made me redo how the writer works to support the decoding of the default ascii sequence used to change color: \\033[xxm , where xx is the color. It follows the standard C way which makes it pretty easy to use colored printing. – WilGulf"}, {"post_id": 53943, "ts": "2026-08-24T17:27:07Z", "hours": 13.1097, "text": "Devblog 14 I have worked on multiple commands for the shell but the one that i want to showcase now is the process management. Running.elf lists all running processes (including itself) with their name, pid and privilege level. Then I execute kill.elf with “1” as a argument which is the id of the shell. That kills the shell which leaves the os with just the blinking underscore cause there is no longer a shell running. Other commands are the sysinfo (uname) and updating fetch.elf with some new info."}, {"post_id": 49143, "ts": "2026-08-17T19:33:20Z", "hours": 9.0397, "text": "Devblog 13 Not much to show on the screen, however in the background i have worked on a security feature. So it is kind of like the pledge feature in open-bsd: so the kernel first need to know from the program what it wants to do, like print to the screen. Not until it has told what it will do it won’t be able to do anything. And if the program ever does anything it hasn’t told it would do the kernel will just kill the process. The program promise to not use any other functions except the one it has specified. And the kernel won’t let it break it’s promise. That is why the c function is called promise. –WilGulf"}, {"post_id": 48037, "ts": "2026-08-16T10:16:51Z", "hours": 9.1672, "text": "Devblog 12 A shell This is the first shell for NeoOS, it only has the clear command and a fetch program to display the logo. It took some time implementing all syscalls it needed, i needed to make many kernel functions available in the userprogram and that took most my time. I have yet to implement a way to terminate the program so now when fetch is called it never ends and you never get back to the shell again. – WilGulf"}, {"post_id": 46769, "ts": "2026-08-14T08:19:44Z", "hours": 4.0228, "text": "Devblog 11 NeoOS has now got ps2 keyboard drivers! So now I have implemented a driver for the US layout on ps2 keyboards. I am also looking into changing it to support my keyboards (Swedish layout), but that would take some time to map the right keys to the right number when the US layout can be found right on the os dev wiki. So this keyboard writing is also done the real way, the kernel boots, the kernel starts a program, that program asks for keyboard input, when it gets a input it asks the kernel to print that input. Now you can see how this could later change into a shell: you write the name of a command and it runs it. –WilGulf"}, {"post_id": 44096, "ts": "2026-08-09T17:04:23Z", "hours": 7.8719, "text": "Devblog 10 Now a binary file is able to be loaded AND executed. So from that qemu picture you can see the “Hello from a binary program” message, that message is printed by that print.s code. This is a huge milestone. There are still some functions to implement. But after that it is just writing all the userland programs. I must say none of this was easy, and choosing to develop a OS for stardance has so far been a really big challange. And now I need to push through coding the last bit so i can get this shipped before the end of stardance. –WilGulf"}, {"post_id": 43351, "ts": "2026-08-08T15:42:07Z", "hours": 7.6778, "text": "Devblog 9 I found a course for os development to follow and it really helped me with this. With the course explaining, I got my kernel to read a fat16 disk and print the content of hello.txt. This was a lot of debugging, first the file did open but couldn’t be read, then later the file was read but the data was just wierd characters. Now this is a huge step, the reading is done and now I only need it to be able to understand executables and read them. – WilGulf"}, {"post_id": 42494, "ts": "2026-08-07T08:16:16Z", "hours": 3.1131, "text": "Devblog 8 The real malloc and free is implemented. And if you know C you may understand what is going on in the image. All ptr are allocated using malloc and the first one is free’d before allocating ptr4, that is why their values are the same: ptr4 reuses ptr1 because ptr1 is free’d. Now that I don’t only have the allocation but also freeing which means I can safely implement a filesystem driver without worrying about the memory overflowing. – WilGulf"}, {"post_id": 42122, "ts": "2026-08-06T18:15:14Z", "hours": 4.8756, "text": "Devblog 7 I got to usermode, there I could run all the programs like a shell. But when jumping to usermode you need somewhere to land, some address where the cpu can start executing code. I don’t have that. So the next thing would be to implement a filesystem driver to read a disk and execute an executable. But my memory management is to simple to do it in a good way, I can only allocate and never delocate. So now I am going to revamp my memory management. –WilGulf"}, {"post_id": 26450, "ts": "2026-07-11T08:03:23Z", "hours": 11.1347, "text": "10h I don’t have anything to show right now, but as you can see i have 11 more hours on this project. I have both been working on fixes and some new things needed for the next big thing being: getting to ring 3/usermode. –WilGulf"}, {"post_id": 24029, "ts": "2026-07-07T09:45:52Z", "hours": 4.8494, "text": "Now we got progress! The kernel now has my implementation of paging working. If you don’t know what paging is, it is basically a way of managing the memory that is used by most x86 operating systems. The paging implementation took some C files and some updates to the assembly files but now it is done! Now I have many ways to go with what to implement next. We’ll see what i choose. –WilGulf"}, {"post_id": 19092, "ts": "2026-06-30T09:33:07Z", "hours": 7.1717, "text": "IDT Done! Now I got the IDT working. You can see it is working cause when that “Divide By Zero” message appears the kernel does a division with a zero. Normally that would make the kernel start bootlooping but now the interrupt handler handles the divide by zero and stops the kernel instead. Interrupt handling does not only stop crashes but also allow keyboards or syscalls to invoke interrupts that the kernel can process. Next step may be to use that interrupt handler to implement syscalls. – WilGulf"}, {"post_id": 18225, "ts": "2026-06-29T09:29:17Z", "hours": 2.5817, "text": "Hello Yes we got it, hello world on the screen. Turns out the loading of the kernel set up the stack wrong. One line of assembly was in the wrong section. I also continued with the GDT. It isnt something you can see but in the background the GDT has been initialized. That is my progress so far, now after GDT comes some interrupt handling. –WilGulf"}, {"post_id": 17849, "ts": "2026-06-28T19:51:48Z", "hours": 3.3697, "text": "HELP What is wrong? Well as I said, I would continue with getting Hello World on the screen. Well that wasn’t hard to do the “simple” way, just pasting several lines for each letter. But I wanted to do it the real way, implement a writer function. I started with making a function to clear the framebuffer from that “Booting…” message. And also moving the cursor to the start. Then I continued with the writer. The writer took two parameters: (char *buf, unsigned int len). Both arguments needed. The function i began testing with calling it from kmain like this: writer(“hello”, 5) . Then in the function i processed it like this: unsigned char *bytes = (unsigned char *)buf; for (unsigned int i = 0; i < len; i++) { fb_write_cell(pos * 2, bytes[i], 0x0F, 0x00); pos++; } But thats where it went wrong. When compiling and booting after adding that function content it wouldn’t boot. And that is wierd cause when i removed the bytes[i] line it booted. Somehow my kernel cant handle it. I don’t know what could currently be causing this. What now? Well i will of course try to solve this myself or find a way to make the writer work. And if you have any knowledge in C and os development please help me. The projects current code can be found on my github. – WilGulf"}, {"post_id": 15860, "ts": "2026-06-25T19:46:32Z", "hours": 1.8089, "text": "I got my OS booting without entering a bootloop!!! I wanted to leave assembly and start to use C. But to do that I need to call the main function in C from assembly. Much googling and testing later I got it to actually use the main functions while loop to keep itself from bootlooping. Never thought i would be so happy about completing the first and easiest task in os development. I will comeback with another post when i get ‘hello world’ on the screen."}]...
|
Title: NeoOS by @WilGulf | Stardance
Devlogs:
I g Title: NeoOS by @WilGulf | Stardance
Devlogs:
I got my OS booting without entering a bootloop!!! I wanted to leave assembly and start to use C. But to do that I need to call the main function in C from assembly. Much googling and testing later I got it to actually use the main functions while loop to keep itself from bootlooping. Never thought i would be so happy about completing the first and easiest task in os development. I will comeback with another post when i get ‘hello world’ on the screen.
HELP What is wrong? Well as I said, I would continue with getting Hello World on the screen. Well that wasn’t hard to do the “simple” way, just pasting several lines for each letter. But I wanted to do it the real way, implement a writer function. I started with making a function to clear the framebuffer from that “Booting…” message. And also moving the cursor to the start. Then I continued with the writer. The writer took two parameters: (char *buf, unsigned int len). Both arguments needed. The function i began testing with calling it from kmain like this: writer(“hello”, 5) . Then in the function i processed it like this: unsigned char *bytes = (unsigned char *)buf; for (unsigned int i = 0; i < len; i++) { fb_write_cell(pos * 2, bytes[i], 0x0F, 0x00); pos++; } But thats where it went wrong. When compiling and booting after adding that function content it wouldn’t boot. And that is wierd cause when i removed the bytes[i] line it booted. Somehow my kernel cant handle it. I don’t know what could currently be causing this. What now? Well i will of course try to solve this myself or find a way to make the writer work. And if you have any knowledge in C and os development please help me. The projects current code can be found on my github. – WilGulf
Hello Yes we got it, hello world on the screen. Turns out the loading of the kernel set up the stack wrong. One line of assembly was in the wrong section. I also continued with the GDT. It isnt something you can see but in the background the GDT has been initialized. That is my progress so far, now after GDT comes some interrupt handling. –WilGulf
IDT Done! Now I got the IDT working. You can see it is working cause when that “Divide By Zero” message appears the kernel does a division with a zero. Normally that would make the kernel start bootlooping but now the interrupt handler handles the divide by zero and stops the kernel instead. Interrupt handling does not only stop crashes but also allow keyboards or syscalls to invoke interrupts that the kernel can process. Next step may be to use that interrupt handler to implement syscalls. – WilGulf
Now we got progress! The kernel now has my implementation of paging working. If you don’t know what paging is, it is basically a way of managing the memory that is used by most x86 operating systems. The paging implementation took some C files and some updates to the assembly files but now it is done! Now I have many ways to go with what to implement next. We’ll see what i choose. –WilGulf
10h I don’t have anything to show right now, but as you can see i have 11 more hours on this project. I have both been working on fixes and some new things needed for the next big thing being: getting to ring 3/usermode. –WilGulf
Devblog 7 I got to usermode, there I could run all the programs like a shell. But when jumping to usermode you need somewhere to land, some address where the cpu can start executing code. I don’t have that. So the next thing would be to implement a filesystem driver to read a disk and execute an executable. But my memory management is to simple to do it in a good way, I can only allocate and never delocate. So now I am going to revamp my memory management. –WilGulf
Devblog 8 The real malloc and free is implemented. And if you know C you may understand what is going on in the image. All ptr are allocated using malloc and the first one is free’d before allocating ptr4, that is why their values are the same: ptr4 reuses ptr1 because ptr1 is free’d. Now that I don’t only have the allocation but also freeing which means I can safely implement a filesystem driver without worrying about the memory overflowing. – WilGulf
Devblog 9 I found a course for os development to follow and it really helped me with this. With the course explaining, I got my kernel to read a fat16 disk and print the content of hello.txt. This was a lot of debugging, first the file did open but couldn’t be read, then later the file was read but the data was just wierd characters. Now this is a huge step, the reading is done and now I only need it to be able to understand executables and read them. – WilGulf
Devblog 10 Now a binary file is able to be loaded AND executed. So from that qemu picture you can see the “Hello from a binary program” message, that message is printed by that print.s code. This is a huge milestone. There are still some functions to implement. But after that it is just writing all the userland programs. I must say none of this was easy, and choosing to develop a OS for stardance has so far been a really big challange. And now I need to push through coding the last bit so i can get this shipped before the end of stardance. –WilGulf
Devblog 11 NeoOS has now got ps2 keyboard drivers! So now I have implemented a driver for the US layout on ps2 keyboards. I am also looking into changing it to support my keyboards (Swedish layout), but that would take some time to map the right keys to the right number when the US layout can be found right on the os dev wiki. So this keyboard writing is also done the real way, the kernel boots, the kernel starts a program, that program asks for keyboard input, when it gets a input it asks the kernel to print that input. Now you can see how this could later change into a shell: you write the name of a command and it runs it. –WilGulf
Devblog 12 A shell This is the first shell for NeoOS, it only has the clear command and a fetch program to display the logo. It took some time implementing all syscalls it needed, i needed to make many kernel functions available in the userprogram and that took most my time. I have yet to implement a way to terminate the program so now when fetch is called it never ends and you never get back to the shell again. – WilGulf
Devblog 13 Not much to show on the screen, however in the background i have worked on a security feature. So it is kind of like the pledge feature in open-bsd: so the kernel first need to know from the program what it wants to do, like print to the screen. Not until it has told what it will do it won’t be able to do anything. And if the program ever does anything it hasn’t told it would do the kernel will just kill the process. The program promise to not use any other functions except the one it has specified. And the kernel won’t let it break it’s promise. That is why the c function is called promise. –WilGulf
Devblog 14 I have worked on multiple commands for the shell but the one that i want to showcase now is the process management. Running.elf lists all running processes (including itself) with their name, pid and privilege level. Then I execute kill.elf with “1” as a argument which is the id of the shell. That kills the shell which leaves the os with just the blinking underscore cause there is no longer a shell running. Other commands are the sysinfo (uname) and updating fetch.elf with some new info.
Devblog 15 I have now added colored printing that I showcase here in the fetch program. The printing made me redo how the writer works to support the decoding of the default ascii sequence used to change color: \033[xxm , where xx is the color. It follows the standard C way which makes it pretty easy to use colored printing. – WilGulf
Devblog 16 I wanted more programs for NeoOS but I felt really limited to just the print and getkey functions. So I rewrite ncurses (not with all ncurses functions) into my own curses for NeoOS. This allowed me to write programs that update the terminal like a screen. Here I shouw the NeoOS logo being displayed with a CRT-screen effect. Now I am In the decision of what game to make with this new library. – WilGulf
Devblog 17 I have developed my own ramfs. The old filesystem only supported fat16 with only reading capabilities which maded it feel very limited with what you could do with it. So the first step I dicided to do with adding reading was to implement filesystem that lives in ram which is really easy to write to. Now the D: drive is used for the ramfs (D as in dev used by linux). In the screenshot test.elf creates a file: D:/test.txt and writes HELLO FROM RAMFS to it. Then read.elf (linux cat) can read that file. – WilGulf
Devblog 18 So close to going over 10h however I managed to fix the bug. So a missing feature has been writing to the disk and not only read it. But the current file system was fat16 and the attempts I have made to implement writing has failed. What is the logical thing to do in this scenario, well I wrote my own filesystem: NeoFS. It is not feature rich compared to fat16 but that was why I could make it write. And the performance may be horibble when having larger files. But if it works I will keep it! So the test just shows writing/reading of a file. – WilGulf
Devblog 19 Not as big of a update now, but I just wanted to show of my new readdir implementation. That is then used by list with some coloring, all are green cause there is only executables in /execs. – WilGulf
Devblog 20 Final touches and logging the remaining time before shipping. I hope I have fixed all small bugs and made the libraries easy to use in new C programs. I also created some small new programs to show all functions in the kernel. Thats all for now and I hope to get to ship soon. –WilGulf
Devblog 21 The review is taking ages, and I couldn’t leave NeoOS. So I of course continued with fixes and features. The big new thing in this devblog is the filesystem: NeoFS, I have done major changes to the design like how a free block is found which greatly improves performance. And many safeguards were added to reading/writing to the filesystem. I also updated the host fstools used to create the filesystem on a drive to support arguments with options, easier to use now. – WilGulf
Devblog 22 The review of NeoOS found some problems with the filesystem commands and I took some time to fix them. Now the commands know where they are run and you can move around with cd. The second thing for this devblog is that I got multi disk support so now you can have up to 4 harddrives attached with writing/reading working on all of them , and that took some interractions with the ata ports but I finally got it working. –WilGulf
Ships:
So I made my own os “NeoOS”, this project was started not long after the release of the macbook neo and cause of that the os got it’s name. Testing is pretty easy, just make sure you have qemu installed with the correct cpu architecture. The project has become much bigger than I thought when I started it, I just could not stop implementing more features. And the most challenging part must be the hardware interaction, like reading from a disk by sending commands in hex. The documentation found for how cpus/ata disks/ram and all works are so hard to understand but that may be because it is not a simple thing. So when testing I want you to know that even though there aren’t many commands the kernel is still doing so much work not seen and the kernel is also what took most hours on this project. Lastly I hope that someone with all documentation provided writes their own program for NeoOS, I would love to see what other people could do with my OS....
|
1793148628.2809644
|
1793235028.2809644
|
|
59057
|
QDesk by @threatsentinels | Stardance
|
threatsentinels
|
1
|
5.13
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T16:33:58Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "QDesk is a queue and token management system I built to make the whole token process simpler and less chaotic. The idea came from seeing how manual queues can get during events, offices, health camps and other crowded places, where people have to keep asking what token is being served. With QDesk, an organization can create an event, set up counters, generate tokens, call the next person, mark them as finished, and keep track of the queue from one dashboard. I also added a public display so people can see which token is currently being served without having to stand around and ask. It’s a pretty simple idea, but I wanted to actually build something that could be used in a real situation instead of just making another project for a portfolio. I built the backend with Django and used HTMX for the live queue updates, and after a lot of debugging, I finally got it deployed at qdesk.ggsrclub.com.", "repo": "https://github.com/threatsentinels/QDesk", "demo": "https://dashingdev33.pythonanywhere.com"}]...
|
[{"post_id": 66120, "ts": "202 [{"post_id": 66120, "ts": "2026-09-11T18:48:27Z", "hours": 0.3656, "text": "basic fixes like typos , images and urls ."}, {"post_id": 64255, "ts": "2026-09-08T15:02:27Z", "hours": 0.7669, "text": "I had already shipped my project but reviewer wanted me to add more custom features so i added one new function to print tickets direct from the webpage , i designed the ticket layout and added lil bit of code in backend ."}, {"post_id": 63631, "ts": "2026-09-07T15:37:57Z", "hours": 1.8353, "text": "Completed writing the frontend structure , wrote all the html structure now i will work on design part . Thinking of using beige colour and soft theme . Trying to make it look asthetic lol"}, {"post_id": 63414, "ts": "2026-09-07T07:27:38Z", "hours": 1.5394, "text": "I completed writing all the backend code required , logic is working well , now i need to work on templated and frontend . For frontend i am thinking of using tailwind and js"}, {"post_id": 63044, "ts": "2026-09-06T16:47:34Z", "hours": 1.0194, "text": "I completed writing code for basic foundation of the project , I did the setup of django in my machine , created projects and apps and completed writing the code for models . Now i will work on urls and views along with some settings.py changes"}]...
|
Title: QDesk by @threatsentinels | Stardance
Devl Title: QDesk by @threatsentinels | Stardance
Devlogs:
I completed writing code for basic foundation of the project , I did the setup of django in my machine , created projects and apps and completed writing the code for models . Now i will work on urls and views along with some settings.py changes
I completed writing all the backend code required , logic is working well , now i need to work on templated and frontend . For frontend i am thinking of using tailwind and js
Completed writing the frontend structure , wrote all the html structure now i will work on design part . Thinking of using beige colour and soft theme . Trying to make it look asthetic lol
I had already shipped my project but reviewer wanted me to add more custom features so i added one new function to print tickets direct from the webpage , i designed the ticket layout and added lil bit of code in backend .
basic fixes like typos , images and urls .
Ships:
QDesk is a queue and token management system I built to make the whole token process simpler and less chaotic. The idea came from seeing how manual queues can get during events, offices, health camps and other crowded places, where people have to keep asking what token is being served. With QDesk, an organization can create an event, set up counters, generate tokens, call the next person, mark them as finished, and keep track of the queue from one dashboard. I also added a public display so people can see which token is currently being served without having to stand around and ask. It’s a pretty simple idea, but I wanted to actually build something that could be used in a real situation instead of just making another project for a portfolio. I built the backend with Django and used HTMX for the live queue updates, and after a lot of debugging, I finally got it deployed at qdesk.ggsrclub.com....
|
1793116264.1384199
|
1793202664.1384199
|
|
55267
|
Portfolio Website by @ibrahimthegoat | Stardance
|
ibrahimthegoat
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T16:33:45Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a personal portfolio website to showcase my elder brother’s video editing work in one place. The most challenging part was setting up custom CMS bindings for my editing showcase, getting the embedded video players to load smoothly without layout shifts, and fixing the responsive layout issues on different screens.", "repo": "https://github.com/ibrahimahsan954-eng/portfolio-website", "demo": "https://editsbyebad.freebuff.app"}]...
|
[{"post_id": 63666, "ts": "202 [{"post_id": 63666, "ts": "2026-09-07T16:30:03Z", "hours": 0.3, "text": "let’s make the typography look premium and rich as 🤑"}, {"post_id": 60126, "ts": "2026-09-02T09:22:39Z", "hours": 0.9611, "text": "Adding Security Features & Video Editing Keywords So The Site Gets More Views"}]...
|
Title: Portfolio Website by @ibrahimthegoat | Star Title: Portfolio Website by @ibrahimthegoat | Stardance
Devlogs:
Adding Security Features & Video Editing Keywords So The Site Gets More Views
let’s make the typography look premium and rich as 🤑
Ships:
I built a personal portfolio website to showcase my elder brother’s video editing work in one place. The most challenging part was setting up custom CMS bindings for my editing showcase, getting the embedded video players to load smoothly without layout shifts, and fixing the responsive layout issues on different screens....
|
1793145122.7165048
|
1793231522.7165048
|
|
32611
|
smth tab by @Christianlikes67_Bobbpheus | Stardanc smth tab by @Christianlikes67_Bobbpheus | Stardance...
|
Christianlikes67_Bobbpheus
|
2
|
4.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T15:43:20Z", "hours": 1.0, "multiplier": 1.13, "payout": 1, "blessing": "neutral", "text": "I made a basic website weak css and not that much special things but it has a clock and some buttons that send you to different websites so not that much but i originally had made another projects but then i lost most of it and needed to rework it all", "repo": "https://github.com/Christianlikes67/smth-tab", "demo": "https://christianlikes67.github.io/smth-tab/"}, {"ship_num": 2, "ts": "2026-07-10T11:13:29Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "🐱🚀 AstroCat Explorer AstroCat Explorer is a fun and interactive web app that lets you explore NASA’s Astronomy Picture of the Day (APOD) with a unique space-cat theme. Instead of creating a standard NASA gallery, this project combines space exploration, animated visuals, and a playful personality to create a more engaging experience. ✨ Features 🌌 NASA Astronomy Picture of the Day API 📅 Search for a specific date 🎲 Random Mission button 🐱 Random Space Cat facts 🏆 Mission counter ⭐ XP system with Space Cat ranks ☄️ Animated shooting stars 🪐 Floating planets 🚀 Rocket cursor 💎 Glassmorphism UI 📱 Responsive design 🎨 Custom space-themed interface ⚡ Smooth animations and transitions 🛠️ Built With HTML5 CSS3 JavaScript (ES6) NASA APOD API You can get a free API key from: https://api.nasa.gov/ 📂 Project Structure AstroCat Explorer/ │ ├── index.html ├── style.css ├── script.js └── README.md 🎮 Inspiration This project is inspired by: Space exploration Cats 🐱 Modern gaming-inspired UI NASA’s Astronomy Picture of the Day 📸 Main Features View NASA’s daily space image. Explore images from previous dates. Launch random space missions. Earn Space Cat XP as you explore. Unlock new Space Cat ranks. Enjoy animated cosmic effects. 💡 Future Improvements ❤️ Favorite missions 🎥 Support NASA APOD videos 🌍 Dark/Light mode 🔍 Search by keywords 🚀 More achievements 🔊 Optional sound effects 👨💻 Author Made with ❤️ by Christianlikes67.", "repo": "https://github.com/Christianlikes67/smth-tab", "demo": "https://christianlikes67.github.io/smth-tab/"}]...
|
[{"post_id": 27618, "ts": "202 [{"post_id": 27618, "ts": "2026-07-13T11:19:46Z", "hours": 0.4914, "text": "basically changed evrything cuz i just felt like it"}, {"post_id": 26444, "ts": "2026-07-11T07:47:05Z", "hours": 0.4128, "text": "now i fixed the css and a lot of other things"}, {"post_id": 25865, "ts": "2026-07-10T10:56:12Z", "hours": 0.3553, "text": "this is gonna take a bit longer i have ran into a problem and im now tryna fix it"}, {"post_id": 25847, "ts": "2026-07-10T10:22:28Z", "hours": 0.6558, "text": "Almost done with CSS"}, {"post_id": 25498, "ts": "2026-07-09T20:11:08Z", "hours": 0.8886, "text": "I am pretty much done with the “Moving on to JavaScript” part in the guide so i only need to COOK with CSS now"}, {"post_id": 25469, "ts": "2026-07-09T19:09:01Z", "hours": 0.3744, "text": "just finished the “Starting with HTML” part in the guide and i also finished what i wanted to do and the time i used to make it is the logged time from this devlog and the one before with the meowl img."}, {"post_id": 25394, "ts": "2026-07-09T17:34:04Z", "hours": 0.7331, "text": "I am making a cool NASA inspired facts website with cats where there is a date picker and then it finds a text from nasa about that day i couldnt get a screenshot"}, {"post_id": 24785, "ts": "2026-07-08T16:10:25Z", "hours": 0.3531, "text": "just began coding"}]...
|
Title: smth tab by @Christianlikes67_Bobbpheus | S Title: smth tab by @Christianlikes67_Bobbpheus | Stardance
Devlogs:
just began coding
I am making a cool NASA inspired facts website with cats where there is a date picker and then it finds a text from nasa about that day i couldnt get a screenshot
just finished the “Starting with HTML” part in the guide and i also finished what i wanted to do and the time i used to make it is the logged time from this devlog and the one before with the meowl img.
I am pretty much done with the “Moving on to JavaScript” part in the guide so i only need to COOK with CSS now
Almost done with CSS
this is gonna take a bit longer i have ran into a problem and im now tryna fix it
now i fixed the css and a lot of other things
basically changed evrything cuz i just felt like it
Ships:
🐱🚀 AstroCat Explorer AstroCat Explorer is a fun and interactive web app that lets you explore NASA’s Astronomy Picture of the Day (APOD) with a unique space-cat theme. Instead of creating a standard NASA gallery, this project combines space exploration, animated visuals, and a playful personality to create a more engaging experience. ✨ Features 🌌 NASA Astronomy Picture of the Day API 📅 Search for a specific date 🎲 Random Mission button 🐱 Random Space Cat facts 🏆 Mission counter ⭐ XP system with Space Cat ranks ☄️ Animated shooting stars 🪐 Floating planets 🚀 Rocket cursor 💎 Glassmorphism UI 📱 Responsive design 🎨 Custom space-themed interface ⚡ Smooth animations and transitions 🛠️ Built With HTML5 CSS3 JavaScript (ES6) NASA APOD API You can get a free API key from: https://api.nasa.gov/ 📂 Project Structure AstroCat Explorer/ │ ├── index.html ├── style.css ├── script.js └── README.md 🎮 Inspiration This project is inspired by: Space exploration Cats 🐱 Modern gaming-inspired UI NASA’s Astronomy Picture of the Day 📸 Main Features View NASA’s daily space image. Explore images from previous dates. Launch random space missions. Earn Space Cat XP as you explore. Unlock new Space Cat ranks. Enjoy animated cosmic effects. 💡 Future Improvements ❤️ Favorite missions 🎥 Support NASA APOD videos 🌍 Dark/Light mode 🔍 Search by keywords 🚀 More achievements 🔊 Optional sound effects 👨💻 Author Made with ❤️ by Christianlikes67.
I made a basic website weak css and not that much special things but it has a clock and some buttons that send you to different websites so not that much but i originally had made another projects but then i lost most of it and needed to rework it all...
|
1792875199.4580007
|
1793739199.4580007
|
|
55158
|
Vinyl Record Hooks by @ncHammer | Stardance
|
ncHammer
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T15:37:43Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made 3D printable wall display hooks for collectible items! I focused mainly on vinyl records and comic books, with 5 sizes and types total. They function as a track that lets you slide the item in and out of the hooks. Feel free to print and use yourself!", "repo": "https://github.com/noahcraig029-code/vinylrecordhooks", "demo": "https://www.thingiverse.com/thing:7409559"}]...
|
[{"post_id": 63610, "ts": "202 [{"post_id": 63610, "ts": "2026-09-07T15:14:56Z", "hours": 0.3125, "text": "One last thing before I ship! I wanted to go back over the designs and I decided to tweak the standalone record hook. Now instead of the PLA filament touching the vinyl directly (which ran the risk of scratching it), there’s space to put some sort of buffer! I plan on using a foam sticker to avoid damaging it, but anything works. Happy decorating!"}, {"post_id": 63552, "ts": "2026-09-07T13:57:35Z", "hours": 0.9, "text": "My wall decoration hooks are finished! These are fully 3D printable ‘hook’ type items that can be attached to a wall to display anything from vinyl records to comic books without damaging the collectable item itself! There are 5 different sizes and shapes, so please feel free to open the Onshape and look around, they’re made to be used! Feedback or suggestions are more then welcome! This is just a fun little project I wanted to do to try and manufacture something I can actually ship sooner rather then later lol"}, {"post_id": 63173, "ts": "2026-09-06T20:31:03Z", "hours": 1.2264, "text": "A smaller, personal-convenience project this time! I’m taking a break from my two bigger tasks to model something small. These are 3D printable display hooks! I like to collect vinyl records and comics, but I’m always worried about using tape or poster tack to stick them to my wall for decoration, so I’m going to 3D print these little guys to help out with that! They’re simple hooks that have a back that connects to the wall, and then you can slide your item in through the hook and let it stand on it’s own! Drill them into your wall, use tape, glue, or anything! They come in 5 different sizes, so pick whatever works best for your collectible item. Feel free to use them as you wish! I’m hoping to get the Bambu A1 mini with my stardust so I can print these out, so if they work well let me know! Feedback or ideas always welcome!"}]...
|
Title: Vinyl Record Hooks by @ncHammer | Stardance Title: Vinyl Record Hooks by @ncHammer | Stardance
Devlogs:
A smaller, personal-convenience project this time! I’m taking a break from my two bigger tasks to model something small. These are 3D printable display hooks! I like to collect vinyl records and comics, but I’m always worried about using tape or poster tack to stick them to my wall for decoration, so I’m going to 3D print these little guys to help out with that! They’re simple hooks that have a back that connects to the wall, and then you can slide your item in through the hook and let it stand on it’s own! Drill them into your wall, use tape, glue, or anything! They come in 5 different sizes, so pick whatever works best for your collectible item. Feel free to use them as you wish! I’m hoping to get the Bambu A1 mini with my stardust so I can print these out, so if they work well let me know! Feedback or ideas always welcome!
My wall decoration hooks are finished! These are fully 3D printable ‘hook’ type items that can be attached to a wall to display anything from vinyl records to comic books without damaging the collectable item itself! There are 5 different sizes and shapes, so please feel free to open the Onshape and look around, they’re made to be used! Feedback or suggestions are more then welcome! This is just a fun little project I wanted to do to try and manufacture something I can actually ship sooner rather then later lol
One last thing before I ship! I wanted to go back over the designs and I decided to tweak the standalone record hook. Now instead of the PLA filament touching the vinyl directly (which ran the risk of scratching it), there’s space to put some sort of buffer! I plan on using a foam sticker to avoid damaging it, but anything works. Happy decorating!
Ships:
I made 3D printable wall display hooks for collectible items! I focused mainly on vinyl records and comic books, with 5 sizes and types total. They function as a track that lets you slide the item in and out of the hooks. Feel free to print and use yourself!...
|
1793145105.109092
|
1793231505.109092
|
|
58505
|
Cryptic Market Widget by @Duxredux | Stardance
|
Duxredux
|
1
|
5.87
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T15:21:53Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Introducing Cryptic Market Widget. A sleek Widget to track Crypto Price movements in real time while you work on other stuff of yours. Track your favourite Crypto or other assets that are listed on Binance with ease. I was only used to using crypto data from Binance for my strategy testing and development projects but I decided to try something new by trying to make a Widget that I can actually use. This was a hell lotta fun to build. Hope you all like it", "repo": "https://github.com/Sohan-r07/CrypticMarketWidget", "demo": "https://github.com/Sohan-r07/CrypticMarketWidget/releases/tag/v1.0.1"}]...
|
[{"post_id": 67912, "ts": "202 [{"post_id": 67912, "ts": "2026-09-14T06:50:20Z", "hours": 0.4003, "text": "Made a few critical improvements. The ReadMe file got erased due to the last push so had to rewrite it. Second, Added a close option to the Widget so you can close it when you do not want to use it."}, {"post_id": 67496, "ts": "2026-09-13T16:40:40Z", "hours": 0.4697, "text": "Added a few changes and created an official Github release for the Widget. 1.Added a few asthetic effects when you hover over the cards. 2. Now Shows the 24h High and low for the coins too. Would be brainstorming for some more features going on into this."}, {"post_id": 62239, "ts": "2026-09-05T14:42:15Z", "hours": 4.5869, "text": "Made some major changes and bug fixes for the widget: Made the UI smoother and more responsive. 2.Fixed a Bug where the remove asset button was not working earlier Made the Widget Hide itself into the edge of the screen. Will be looking to make add some extra features later on that could possibly improve the functionality and utility of the Widget going on."}]...
|
Title: Cryptic Market Widget by @Duxredux | Starda Title: Cryptic Market Widget by @Duxredux | Stardance
Devlogs:
Made some major changes and bug fixes for the widget: Made the UI smoother and more responsive. 2.Fixed a Bug where the remove asset button was not working earlier Made the Widget Hide itself into the edge of the screen. Will be looking to make add some extra features later on that could possibly improve the functionality and utility of the Widget going on.
Added a few changes and created an official Github release for the Widget. 1.Added a few asthetic effects when you hover over the cards. 2. Now Shows the 24h High and low for the coins too. Would be brainstorming for some more features going on into this.
Made a few critical improvements. The ReadMe file got erased due to the last push so had to rewrite it. Second, Added a close option to the Widget so you can close it when you do not want to use it.
Ships:
Introducing Cryptic Market Widget. A sleek Widget to track Crypto Price movements in real time while you work on other stuff of yours. Track your favourite Crypto or other assets that are listed on Binance with ease. I was only used to using crypto data from Binance for my strategy testing and development projects but I decided to try something new by trying to make a Widget that I can actually use. This was a hell lotta fun to build. Hope you all like it...
|
1793087818.2742393
|
1793174218.2742393
|
|
58415
|
Frictionless by @SarthakVishwakarma | Stardance
|
SarthakVishwakarma
|
1
|
2.03
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T14:59:27Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I just created a site which helps people more. It seems a demo version (maybe really it’s a demo version) and really its give an idea to another ones to created this type of software. In this site this site was linked with NASA satellite which send a live data like images and more, this site check the data and tells that where should be the natural disaster will be come and when did. This will help the life. For more information read README after improvement. Last time many people said that this is AI generated but the reality is “NO” this is not an AI generated site.", "repo": "https://github.com/sarthakvishwakarma44-prog/Frictionless.", "demo": "https://sarthakvishwakarma44-prog.github.io/Frictionless./"}]...
|
[{"post_id": 68581, "ts": "202 [{"post_id": 68581, "ts": "2026-09-15T10:51:55Z", "hours": 1.0331, "text": "Earth Rescue Mission.:}"}, {"post_id": 63596, "ts": "2026-09-07T14:51:35Z", "hours": 0.4089, "text": "Earth Rescue Mission.:}"}, {"post_id": 63550, "ts": "2026-09-07T13:55:13Z", "hours": 0.9392, "text": "Earth Rescue mission.:}"}]...
|
Title: Frictionless by @SarthakVishwakarma | Stard Title: Frictionless by @SarthakVishwakarma | Stardance
Devlogs:
Earth Rescue mission.:}
Earth Rescue Mission.:}
Earth Rescue Mission.:}
Ships:
I just created a site which helps people more. It seems a demo version (maybe really it’s a demo version) and really its give an idea to another ones to created this type of software. In this site this site was linked with NASA satellite which send a live data like images and more, this site check the data and tells that where should be the natural disaster will be come and when did. This will help the life. For more information read README after improvement. Last time many people said that this is AI generated but the reality is “NO” this is not an AI generated site....
|
1793084017.1293538
|
1793170417.1293538
|
|
56320
|
PokéDex by @OpNikhil_25 | Stardance
|
OpNikhil_25
|
1
|
22.0
|
15
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T14:51:50Z", "hours": 22.0, "multiplier": 1.51, "payout": 15, "blessing": "neutral", "text": "Made an interactive Pokemon Pokedex with Python and PokeAPI. It has a GUI similar to the Pokédex where you can search for Pokemon and see their stats, types, abilities, moves, evolution chains, weaknesses, resistances, and more.I also added random Pokémon and shiny sprites. The most difficult part was getting the API data to work properly with the GUI and ensuring that the different features could work together without breaking each other. I spent a lot of time testing, fixing bugs and improving the interface. I’m proud that I was able to turn a basic idea into a complete working application and I learned a lot about Python, APIs, GUI development and debugging while building it.", "repo": "https://github.com/Nikhil12580/Pokedex", "demo": "https://github.com/Nikhil12580/Pokedex/releases/tag/v1.0.0"}]...
|
[{"post_id": 62969, "ts": "202 [{"post_id": 62969, "ts": "2026-09-06T15:16:36Z", "hours": 22.0911, "text": "For the past week, I have been working on my Pokémon Pokédex, which is based on Python. I developed, enhanced, and added several elements to the interface over this time. In order to make the product more reliable, I also spent time testing and addressing issues. I added a README and posted the code to GitHub. I’m finally preparing it for shipping after a week of development!"}]...
|
Title: PokéDex by @OpNikhil_25 | Stardance
Devlog Title: PokéDex by @OpNikhil_25 | Stardance
Devlogs:
For the past week, I have been working on my Pokémon Pokédex, which is based on Python. I developed, enhanced, and added several elements to the interface over this time. In order to make the product more reliable, I also spent time testing and addressing issues. I added a README and posted the code to GitHub. I’m finally preparing it for shipping after a week of development!
Ships:
Made an interactive Pokemon Pokedex with Python and PokeAPI. It has a GUI similar to the Pokédex where you can search for Pokemon and see their stats, types, abilities, moves, evolution chains, weaknesses, resistances, and more.I also added random Pokémon and shiny sprites. The most difficult part was getting the API data to work properly with the GUI and ensuring that the different features could work together without breaking each other. I spent a lot of time testing, fixing bugs and improving the interface. I’m proud that I was able to turn a basic idea into a complete working application and I learned a lot about Python, APIs, GUI development and debugging while building it....
|
1793119696.310557
|
1793206096.310557
|
|
39937
|
My very own WebOS by @tr_Blu | Stardance
|
tr_Blu
|
2
|
17.0
|
11
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T14:50:37Z", "hours": 8.0, "multiplier": 1.38, "payout": 11, "blessing": "neutral", "text": "I added a loading screen when the page loads I added a search app I added an ai chatbot also, if you are loading into the page for the first time it will take 3- 90 seconds so the ai model can load", "repo": "https://github.com/daveandbustrer/bluOS", "demo": "https://daveandbustrer.github.io/bluOS/"}, {"ship_num": 2, "ts": "2026-08-29T15:22:56Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made this OS with feature that seem interesting and new to do I really like what the project turned out to be", "repo": "https://github.com/daveandbustrer/bluOS", "demo": "https://daveandbustrer.github.io/bluOS/"}]...
|
[{"post_id": 63585, "ts": "202 [{"post_id": 63585, "ts": "2026-09-07T14:44:19Z", "hours": 0.9361, "text": "I though the other one was different but i was so sleep deprived that I didn’t realize I didn’t post about what I did previously rather than adding extra hours but now I can tell you so I added an internet access that will send you to google if you search something and dynamic loading and a loading screen(those two are from the perversely added features). also there is three more blogs I was also sleep deprivaved if you look at the time when they were posted you would see why"}, {"post_id": 63347, "ts": "2026-09-07T03:45:56Z", "hours": 1.4272, "text": "this is an extra devlog because I didn’t reload before I posted the other devlog and I didn’t want to lose 1 and a half hours, so I didn’t realize that these hours weren’t apart of it so here’s the first screenshot of my OS"}, {"post_id": 62370, "ts": "2026-09-05T18:16:32Z", "hours": 2.1483, "text": "I did after 2 hours I finally did it… the whole chatbot is done!!! it took me so long and I had to fix little errors and figure out how to make it mistake proof so that the ai doesn’t break with 10 user messages for one AI message although I probably need to add a generating screen saying the message is generating and a loading screen for the OS because when you first load in you have to wait until the ai model is loaded in… also don’t mind about what I was talking to the ai about I was trying to think of topics to talk about to test it and I was trying to make the scroll bar appear inside the box but it doesn’t want to so I gave up"}, {"post_id": 62267, "ts": "2026-09-05T15:41:51Z", "hours": 1.9203, "text": "holy it took forever to do this like I had to change the ai so many times but in the end i settled into webllm since it’s free, a webai thing and it was super easy and the only thing I needed AI for was one error but other than that no ai was used… I mean other than the ai I’m getting"}, {"post_id": 61261, "ts": "2026-09-04T03:20:09Z", "hours": 1.5217, "text": "im tring to make a chatbot but the ai is actually stupid i tried to give it an input in the bottom but it just returned the same thing"}, {"post_id": 56350, "ts": "2026-08-28T02:57:53Z", "hours": 0.6364, "text": "ive added the changing of pages for the blog right now it has two page one is a welcome to the blog and the other is a test and I’m going to leave it since I like leaving my “mark” I leave on thing alone and have it stay there"}, {"post_id": 54883, "ts": "2026-08-26T02:57:32Z", "hours": 0.4544, "text": "I’ve added the blog app into my autoload thingy and I’m starting on the script to have different blogs on it. I have the number system working and allowing me to have multiple numbers working. next I have to make the amount cap have it shift left and right and the buttons to work"}, {"post_id": 54203, "ts": "2026-08-25T02:49:21Z", "hours": 0.3828, "text": "I started on the change page thing I want it to be like on the bottom of a google page with the line of number the next and before button"}, {"post_id": 51411, "ts": "2026-08-21T02:57:40Z", "hours": 0.3778, "text": "I’ve been working on the blog app making it look as good as I can before adding the other blogs and the blog changing since this is the hardest part, also I had imported a custom font it’s called bebas neue"}, {"post_id": 50747, "ts": "2026-08-20T03:05:30Z", "hours": 0.3556, "text": "my plan for the blog app is to be able to have a next and past button like a side bar but more condensed into a smaller thing since I don’t want a bulky looking app unless I should but right now, I don’t want it to look bulky. i also am working on how the blog look from coping from other news, blogs, and other pages to get inspiration, so I have been changing the css for the content to make it look perfect but can’t get it right, so if you have anything you think I should change or add to it to make it look better tell me in the comments so that I can know and improve my page since I would like to have it look good before I ship."}, {"post_id": 50059, "ts": "2026-08-19T03:02:15Z", "hours": 0.3997, "text": "i have been working on the blog app and after that I need to make the sidebar for the app so it can swap from different blogs I might replace the welcome page to this as it is better than the welcome app"}, {"post_id": 49328, "ts": "2026-08-18T02:44:34Z", "hours": 1.4747, "text": "so, I had streamlined the process and making everything dynamically load instead of loading everything at the start. I have everything in the root div but now everything is empty and organized by the app instead of being cluttered in the html and since they won’t show to begin with they won’t affect how it looks"}, {"post_id": 47264, "ts": "2026-08-15T02:30:32Z", "hours": 0.8161, "text": "I have been working on my notes app. I have made it editable. also, I have the stacking and minimizing working with the app icons and I didn’t talk about it last time, but I made an icon for the app, in pixel art of course. also, you can format the text but i would like to be able to make custom formatting but for now it’s the default html formatting… also give me any ideas on the button since i don’t know what to do about it and I got the design from https://www.w3schools.com/tools/tool_css_button.php it helped me preview it and modify easier."}, {"post_id": 46661, "ts": "2026-08-14T02:52:38Z", "hours": 0.63, "text": "I might have accidently added the controlling multiple widows before I was told. so, when I was following the guide, I made it so it can be done more easier without needing to use multiple variables for one simple task, so I made one function to contain the app, and it accidently made it so it can work for any window."}, {"post_id": 36461, "ts": "2026-07-28T16:17:14Z", "hours": 0.5494, "text": "I added closing and opening the uhm… right, the window. I am able to open and close the window also aapps"}, {"post_id": 36173, "ts": "2026-07-28T02:55:55Z", "hours": 1.1103, "text": "I make the window movable, but some bugs are there. I’m tired so good night this will be the last devlog for today."}, {"post_id": 36150, "ts": "2026-07-28T01:41:21Z", "hours": 1.2158, "text": "i have a bottom bar thing that can track time"}, {"post_id": 34987, "ts": "2026-07-26T04:11:43Z", "hours": 0.4339, "text": "got the frame of the OS and I will added it into the website in some way but not now as I want to just build it to have it build"}]...
|
Title: My very own WebOS by @tr_Blu | Stardance
D Title: My very own WebOS by @tr_Blu | Stardance
Devlogs:
got the frame of the OS and I will added it into the website in some way but not now as I want to just build it to have it build
i have a bottom bar thing that can track time
I make the window movable, but some bugs are there. I’m tired so good night this will be the last devlog for today.
I added closing and opening the uhm… right, the window. I am able to open and close the window also aapps
I might have accidently added the controlling multiple widows before I was told. so, when I was following the guide, I made it so it can be done more easier without needing to use multiple variables for one simple task, so I made one function to contain the app, and it accidently made it so it can work for any window.
I have been working on my notes app. I have made it editable. also, I have the stacking and minimizing working with the app icons and I didn’t talk about it last time, but I made an icon for the app, in pixel art of course. also, you can format the text but i would like to be able to make custom formatting but for now it’s the default html formatting… also give me any ideas on the button since i don’t know what to do about it and I got the design from https://www.w3schools.com/tools/tool_css_button.php it helped me preview it and modify easier.
so, I had streamlined the process and making everything dynamically load instead of loading everything at the start. I have everything in the root div but now everything is empty and organized by the app instead of being cluttered in the html and since they won’t show to begin with they won’t affect how it looks
i have been working on the blog app and after that I need to make the sidebar for the app so it can swap from different blogs I might replace the welcome page to this as it is better than the welcome app
my plan for the blog app is to be able to have a next and past button like a side bar but more condensed into a smaller thing since I don’t want a bulky looking app unless I should but right now, I don’t want it to look bulky. i also am working on how the blog look from coping from other news, blogs, and other pages to get inspiration, so I have been changing the css for the content to make it look perfect but can’t get it right, so if you have anything you think I should change or add to it to make it look better tell me in the comments so that I can know and improve my page since I would like to have it look good before I ship.
I’ve been working on the blog app making it look as good as I can before adding the other blogs and the blog changing since this is the hardest part, also I had imported a custom font it’s called bebas neue
I started on the change page thing I want it to be like on the bottom of a google page with the line of number the next and before button
I’ve added the blog app into my autoload thingy and I’m starting on the script to have different blogs on it. I have the number system working and allowing me to have multiple numbers working. next I have to make the amount cap have it shift left and right and the buttons to work
ive added the changing of pages for the blog right now it has two page one is a welcome to the blog and the other is a test and I’m going to leave it since I like leaving my “mark” I leave on thing alone and have it stay there
im tring to make a chatbot but the ai is actually stupid i tried to give it an input in the bottom but it just returned the same thing
holy it took forever to do this like I had to change the ai so many times but in the end i settled into webllm since it’s free, a webai thing and it was super easy and the only thing I needed AI for was one error but other than that no ai was used… I mean other than the ai I’m getting
I did after 2 hours I finally did it… the whole chatbot is done!!! it took me so long and I had to fix little errors and figure out how to make it mistake proof so that the ai doesn’t break with 10 user messages for one AI message although I probably need to add a generating screen saying the message is generating and a loading screen for the OS because when you first load in you have to wait until the ai model is loaded in… also don’t mind about what I was talking to the ai about I was trying to think of topics to talk about to test it and I was trying to make the scroll bar appear inside the box but it doesn’t want to so I gave up
this is an extra devlog because I didn’t reload before I posted the other devlog and I didn’t want to lose 1 and a half hours, so I didn’t realize that these hours weren’t apart of it so here’s the first screenshot of my OS
I though the other one was different but i was so sleep deprived that I didn’t realize I didn’t post about what I did previously rather than adding extra hours but now I can tell you so I added an internet access that will send you to google if you search something and dynamic loading and a loading screen(those two are from the perversely added features). also there is three more blogs I was also sleep deprivaved if you look at the time when they were posted you would see why
Ships:
i made this OS with feature that seem interesting and new to do I really like what the project turned out to be
I added a loading screen when the page loads I added a search app I added an ai chatbot also, if you are loading into the page for the first time it will take 3- 90 seconds so the ai model can load...
|
1793105457.7131636
|
1793191857.7131636
|
|
59138
|
TrefleSite by @reaue | Stardance
|
reaue
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T14:49:34Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? I created a website connected to the trefle.io API, which show you some informations and images about plants. You can choose between searching for a specific plant or let the random selector choose for you. What was challenging? API requesting was challenging because for the search request I had some issues with how to select it and it took me time to debug it. what are you proud of? I’m happy to have learned API requesting in JS, it was my first time What should people know so they can test your project If you want try this project it’s online : https://reaue.github.io/TrefleSite .", "repo": "https://github.com/reaue/TrefleSite", "demo": "https://reaue.github.io/TrefleSite/"}]...
|
[{"post_id": 63572, "ts": "202 [{"post_id": 63572, "ts": "2026-09-07T14:21:48Z", "hours": 0.5506, "text": "Devlog 2 - Work on the frontend. I writed the CSS file and now the site it’s done. I think I have well respect the idea of this mission and hope that it will be accepted for the ship."}, {"post_id": 63529, "ts": "2026-09-07T13:19:14Z", "hours": 2.5744, "text": "Devlog 1 - All the backend features are implemented ! I start the Give Your Website a Pulse mission, my goal it’s to build a website connected to the Trefle.io API to show random plants with a search bar and a random plant button. I also add a light and dark mode but all the CSS it’s not already done."}]...
|
Title: TrefleSite by @reaue | Stardance
Devlogs:
Title: TrefleSite by @reaue | Stardance
Devlogs:
Devlog 1 - All the backend features are implemented ! I start the Give Your Website a Pulse mission, my goal it’s to build a website connected to the Trefle.io API to show random plants with a search bar and a random plant button. I also add a light and dark mode but all the CSS it’s not already done.
Devlog 2 - Work on the frontend. I writed the CSS file and now the site it’s done. I think I have well respect the idea of this mission and hope that it will be accepted for the ship.
Ships:
What did you make? I created a website connected to the trefle.io API, which show you some informations and images about plants. You can choose between searching for a specific plant or let the random selector choose for you. What was challenging? API requesting was challenging because for the search request I had some issues with how to select it and it took me time to debug it. what are you proud of? I’m happy to have learned API requesting in JS, it was my first time What should people know so they can test your project If you want try this project it’s online : https://reaue.github.io/TrefleSite ....
|
1793119656.3241682
|
1793206056.3241682
|
|
58904
|
clicker by @juli13 | Stardance
|
juli13
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T14:46:39Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made a clicker game using ai", "repo": "https://github.com/fueralles1233-sys/clicker", "demo": "https://fueralles1233-sys.github.io/clicker/"}]...
|
[{"post_id": 63548, "ts": "202 [{"post_id": 63548, "ts": "2026-09-07T13:52:59Z", "hours": 1.55, "text": "clicker"}]...
|
Title: clicker by @juli13 | Stardance
Devlogs:
cl Title: clicker by @juli13 | Stardance
Devlogs:
clicker
Ships:
i made a clicker game using ai...
|
1793108886.5617516
|
1793195286.5617516
|
|
8178
|
GVK renderer by @gungu | Stardance
|
gungu
|
2
|
60.0
|
1009
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T14:22:35Z", "hours": 13.0, "multiplier": 19.44, "payout": 261, "blessing": "neutral", "text": "This is the second ship of my game engine / renderer. To explain, I like calling it a renderer instead of a game engine, because I purposefully tried to add as few bloat features as I could, I just wanted something that made rendering something that I don’t have to think about. More info on the README page, this isn’t a good explanation. Just know that it isn’t just a basic Vulkan abstraction, this is a full renderer with PBR, many post-processing effects, skyboxes, dynamic lights, rigged and animated meshes and frustrum culling ’cause why not. Changelog since the last ship: 2 new post-processing effects, pixelation and fog I also added a feature where shiny objects reflect the skybox, which isn’t realistic, but it adds a great sense of realism and I like to add it to my games. one of the largest changes was turning this into an actual library instead of an executable, which allows easier integration. I also made a full game as a tech demo for this project, it can be found at this link or under my stardance profile. It turned out really well, and I’m proud of myself, because I finally made a game engine that I can actually make games in easily. (The screenshot is from the game) and the smallest but still a significant change was rewriting the entire 2D rendering part of the engine for 2 reasons: it had a memory leak, and text rendering was buggy, slow and barely worked.", "repo": "https://github.com/gungugugungu/GVK-Engine", "demo": "https://github.com/gungugugungu/GVK-Engine/releases"}, {"ship_num": 2, "ts": "2026-08-17T20:15:46Z", "hours": 47.0, "multiplier": 15.86, "payout": 748, "blessing": "neutral", "text": "GVK (short for gungu vulkan) is my new renderer using the Vulkan graphics api. I miss the times when I worked with pygame and love2d, where rendering an image was one simple line of code, and I intend to bring that experience to 3D with this project. Everything is designed to be as easy as possible for the user, just writes gvk::draw_mesh(mesh, material, position, scale, rotation); and the mesh is where you want it, how you want it. But don’t mistake it, this is not a game engine, this is just a renderer, something you can build an engine on. I made this tool so my later projects have a graphical backbone to build on, but every game needs a different engine. Ever since I started graphics programming last year I knew that one day I had to learn Vulkan if I ever wanted a job in it in the future, and I’m very proud of myself for finally doing it. This was the greatest challenge I faced in programming so far, and I so glad I tackled it. And as for AI: This project was created so I could learn Vulkan, and if I copied everything from AI that would have been to effective. My goal was to use as little AI as I could, while still leaving out the headaches of development. Here’s what I used AI for: Many of the shaders were written by AI, but that’s because I haven’t learned any of the maths I need to know to write any of these shader. When a shader wasn’t too math heavy I wrote it myself, but there weren’t too many of those. The GLTF loading isn’t hard, it’s just a headache to work with it. GLTF is a horrible format for developers, but it’s the best I knew, so I rather had AI write the GLTF loading functions. I’m still glad I did that, I would have learned nothing from writing those.", "repo": "https://github.com/gungugugungu/GVK-Engine", "demo": "https://github.com/gungugugungu/GVK-Engine/releases"}]...
|
[{"post_id": 63563, "ts": "202 [{"post_id": 63563, "ts": "2026-09-07T14:07:41Z", "hours": 0.4622, "text": "I made a few minor tweaks to fog, and I started debugging it, which I ended up completely stopping and reverting, as it was useless. To be honest I’m really trying to find where this 27 minutes appeared, because I don’t remember spending half an hour on this"}, {"post_id": 61085, "ts": "2026-09-03T20:06:12Z", "hours": 0.76, "text": "FOG Yeah I just added fog because I thought it would look cool in my game. Obviously it’s over the top in this image because I wanted to show it off. I’m pretty proud of this one, definitely one of the more complex post-processing effects."}, {"post_id": 60850, "ts": "2026-09-03T14:06:32Z", "hours": 0.2822, "text": "SKYBOX REFLECTIONS This is a neat trick I did in my last engine and I’m happy I recreated it in this one. Every single shiny surface reflects the skybox, which while isn’t realistic, it does make those surfaces look a lot more shiny than what they actually are, which is a great hack. It sure as hell looks better in the environments I make."}, {"post_id": 60834, "ts": "2026-09-03T13:41:51Z", "hours": 0.5078, "text": "Screen-space reflections would be a major challenge, but I learned that making the skybox reflect off of shiny surfaces is a pretty good way of making your renders seem much better. As of right now it technically works, but I came to realize that I wasn’t loading materials right, so if an image didn’t have a roughness texture, then it would end up completely shiny. I’m almost done fixing it."}, {"post_id": 59082, "ts": "2026-08-31T18:07:57Z", "hours": 0.5186, "text": "I also fixed a bug where the bloom’s blur looped around to the other side of the screen."}, {"post_id": 58887, "ts": "2026-08-31T13:42:45Z", "hours": 0.8592, "text": "PIXELATION POST-PROCESSING EFFECT I made my post-processing system so expandable that I just casually added it ‘cause I thought it would look cool in the game I’m making. I’m sure as hell right about that."}, {"post_id": 58002, "ts": "2026-08-30T10:41:46Z", "hours": 3.0525, "text": "I wasted so much time trying to optimize it all to lead to nothing, but I did end up optimizing some stuff with the Surfaces along with actual color blending for them. I did end up optimizing a bit, but that’s basically nothing. This is the most worthless update to this entire project, I don’t even know how I spent 3 hours on this."}, {"post_id": 52632, "ts": "2026-08-22T21:10:39Z", "hours": 1.3003, "text": "I completely rewrote the text rendering in the Surface class and also fixed a giant memory leak. Here’s a picture of it in use in my game."}, {"post_id": 51872, "ts": "2026-08-21T19:11:56Z", "hours": 0.6219, "text": "I rewrote the texture loading part of GLTF loading because it just plain didn’t work since I updated everything to tinygltf3, but I didn’t notice because it was after the demo. Anyways, it’s done now."}, {"post_id": 51319, "ts": "2026-08-20T22:03:59Z", "hours": 0.4669, "text": "I also rewrote the single mesh gltf loading function to return the material and the entire vertex and index arrays, because I’ll need them for a feature I’m making for my game. This is slowly turning into engine development and I kinda like it."}, {"post_id": 50898, "ts": "2026-08-20T11:18:10Z", "hours": 4.5806, "text": "I worked for over 4 hours, but the renderer finally works as a library!!! That’s right, just put it in as a git submodule, add it as a subdirectory to you CMake project, and there it is! Way too much work for something so simple, but I had to debug a whole lot of stuff. I also edited the README to feature usage instructions and also how to try the demo."}, {"post_id": 49166, "ts": "2026-08-17T20:06:43Z", "hours": 1.8336, "text": "THE GREAT DEBUGGING and A DEMO This is the final post as long as everything works as intended. I fixed every single validation layer error that occurred, so this project is officially bug-free (to my knowledge) . I also made a really simple demo that I uploaded to the github releases tab of the repository. I also finalized the readme, so now the project also has a fancy description. What a ride, I love this project."}, {"post_id": 47631, "ts": "2026-08-15T17:22:29Z", "hours": 0.6358, "text": "FINAL POLISHING (mostly just making the API more useable) I genuinely can’t believe this. I did it, I made a renderer in Vulkan. Well, I’m still not in the clear yet, but I’m very close. Changelog: updated Skin struct to include find_joint() function added Pose struct updated existing skinned mesh systems to work with the Pose struct added sample_clip(), compute_global_pose(), compute_skinning_matrices(), pose_set_local(), pose_set_global(), pose_get_global(), update_animation() and finalize_pose(). These are all helpers for making work with animated and rigged meshes a whole lot easier moved all of the functions inside the gvk namespace, because they were about half and half before."}, {"post_id": 47191, "ts": "2026-08-14T22:29:34Z", "hours": 3.0672, "text": "SKINNED MESHES AND RIGGING This renderer is extremely close to done. I just implemented fully rigged (and animated) meshes. They render properly and animations work too (although I didn’t really care enough to show an example) . Now I am at the last 2 steps of this renderer before starting work on a game in it: 1. Polish up all the API commands so it’s more user friendly. For example, skinned meshes work and can be adjusted manually, but I have a really good idea on how to make working with them super easy, so I’ll definitely implement that. 2. Make a demo that includes basically everything I have developed so far. This step also includes writing compatibility for multiple platforms, because so far I’ve only tested this project on Ubuntu, and I’ll definitely need a windows version too. And that’s it, the project is nearing it’s completion. I can’t wait to make a proper game in this, which I’ll document too of course. Also, I’m writing all of this while I’m on a vacation in Denmark, so I’m quite far from home, but I’m extremely motivated to get this project finished."}, {"post_id": 45337, "ts": "2026-08-11T18:43:26Z", "hours": 3.4436, "text": "SSAO (screen-space ambient occlusion) This one was fun. Ambient occlusion is just a little shadow thing at the edge of meshes. It is not realistic, technically it doesn’t exist in the real world, yet it looks so much better with it. To be honest I don’t have a lot to say about this, it’s done and it’s cool."}, {"post_id": 42894, "ts": "2026-08-07T21:01:17Z", "hours": 1.6756, "text": "SCENE LOADING I just got home from a 10 day adventure that’ll never forget, but I’m back to code, and to get myself to shake into the civilized world again I decided to do a simpler feature before shadow mapping, so I implemented full scene loading from GLTF files. It’s a pretty handy feature, I’m glad I finally made it. It doesn’t just load models and materials, but lights too, pretty handy."}, {"post_id": 35091, "ts": "2026-07-26T09:27:19Z", "hours": 0.3281, "text": "NORMAL MAPPING This was a really easy update, most of the shader changes were copied from my last engine, and the CPU side of things was just changing the vertex struct and loading the tangents in the mesh loading function. But it works."}, {"post_id": 34858, "ts": "2026-07-25T22:07:52Z", "hours": 3.8317, "text": "Well well well. Seems like it’s time for LIGHTING !!!!! finally This was not easy, and yet it was made so much easier by having done it once before last year. I added support for a directional light, a dynamic (aka not hard coded, so pratically infinite amount of) point lights and spot lights, full PBR, and I also made a little handy editor to go along with it, although that’s not in the renderer that’s just in the demo project. Anyways, this was an incredible journey filled with pain and suffering like never before, and I’m so glad I’m through it all. And if this was a challenge, I don’t know what shadow mapping is going to be, which is going to be basically right now, I’m going to add tanget space normal mapping and then it’s already shadowmapping. I’m mentally unprepared, but oh well what can I do?"}, {"post_id": 33983, "ts": "2026-07-24T11:18:42Z", "hours": 1.8858, "text": "This change is not too visible, but it is a major change in the engine MATERIALS Everybody who worked in any sort of 3D graphics knows what materials are. And those know, that the next step after this is lighting . This wouldn’t have been that big of a change, if not for one issue. I’m developing on linux, and every once in a while my GPU drivers uninstall themselves, so everything runs on the integrated graphics on the CPU. That happened, but I thought that the code just became really slow because I was sending 6 images to the GPU every single frame, and that slowed it down. So I spent a bunch of time making a large optimization, and it worked like a charm, it ran fast. Then I found out the entire thing was running on the CPU and I didn’t even need to optimize it. Anyway, it’s here, and it’s fast"}, {"post_id": 33448, "ts": "2026-07-23T12:32:42Z", "hours": 2.7142, "text": "POST-PROCESSING STACK and TONEMAPPING AND COLOR GRADING (post-processing effect 5) This is the finale to the post-processing saga, because I’m finished with tonemapping and color grading. Everything will look really good and cool and whatever, altough I’ve been coding non-stop for 2.5 hours and I don’t really care to give an explanation right now. I don’t have to explain color grading everybody knows that, and tonemapping is the process of mapping the internal HDR render image to an LDR (whatever it’s called) image that the display can actually render properly, how cool is that?"}, {"post_id": 32903, "ts": "2026-07-22T11:24:50Z", "hours": 1.3728, "text": "BLOOM (post-processing effect 4) I’m almost done with all of the post-processing effects, and this was by far the hardest of them all, but I managed to push through it. I’m really proud of myself, because I finally understand Vulkan enough where I didn’t need any sort of outside help to debug this error. I think I can finally call myself someone who understands Vulkan now. Anyway, now I just need to make tonemapping and the effects are done. After that I just make the simplest pipeline to composite it all, and I’m done with that as well."}, {"post_id": 32861, "ts": "2026-07-22T09:31:30Z", "hours": 1.115, "text": "VIGNETTE (post-processing effect 3) This was the most fun I’ve had debugging something in a while. This was really simple to implement, although I can’t really say a lot. The initialization was the same as the other effects, the actual logic of it was pretty similar, the shader wasn’t too hard to write too, but added up it was pretty bad. I accidentally left one of the push parameters in the CPU code as an int, but a float in the GPU code, which I ended up having to chase down for quite a while. The values are over the top on the image so it is more visible on the screenshot, of course I won’t leave it like this. Also, I have written a new readme for the github page. I just kinda wanted to, and thought why not?"}, {"post_id": 32630, "ts": "2026-07-21T22:19:26Z", "hours": 0.3061, "text": "BOX BLUR (post-processing effect 2) I have to admit this took 11 minutes, and the rest of the 5 minutes I spent in this devlog was spent debugging 3 new errors so I can make a post about this feature too. It took so little because I literally just copied and renamed the gaussian blur functions, and changed the shader. Still, I have box blur now. Actually, I think there’s quite a difference between the 2 blurs, quite cool. Of course now that I look at it it’s barely visible in the screenshots."}, {"post_id": 32617, "ts": "2026-07-21T22:00:32Z", "hours": 2.6194, "text": "I thought how cool would it be if I just did a whole 10 hour devlog with all of post-processing in it, but I realized I wouldn’t be able to show off all the cool stuff I’ve done, so I’m doing it effect by effect, anyway, GAUSSIAN BLUR (post-processing effect 1) But not just that, I also brainstormed out the entire post-processing system, and “implemented” it. I didn’t exactly implement it yet because I need to finish all the effects, but it’s there. I still have to finish: box blur, bloom, vignette and tonemapping, and I also want support for custom effects, but that’ll be really easy so I don’t want to put it on this list."}, {"post_id": 31844, "ts": "2026-07-20T15:30:20Z", "hours": 1.5975, "text": "MSAA !! (multisampled anti-aliasing) I always viewed anit-aliasing as this mystery thing that can make a game prettier and I’ll never know how it works. I have to say, it was way easier than expected, most of the time I spent was on some stupid bug or general debugging. You can’t really see the difference in a small screenshot, but it looks so much better full screen."}, {"post_id": 31201, "ts": "2026-07-19T12:30:48Z", "hours": 1.5542, "text": "2D rendering!! I have to admit this feature was kinda easy to implement, because most of it was ripped straight from my last game engine, but I did it because I think it is a really smart way of handling how a 2D system should work. Everything relies on the Surface class, the display itself is a surface, the loaded images are surfaces, and those surfaces can draw to eachother. This makes the system easy yet expandable. I think it’s kinda cool. It was heavily inspired by how pygame does things."}, {"post_id": 31151, "ts": "2026-07-19T10:09:03Z", "hours": 1.3306, "text": "And just like that, the next major update is done! SKYBOXES and other stuff Here’s a full changelog of the last 3 posts: I wrote a really handy shader compiler to make this update just a bit easier, now it automatically compiles all shaders at once I don’t have to do it one by one I wrote a compositing pass that finally has a use case as can be seen right now. The skybox and the objects are rendered separately to separate images, and the compositing pass combines them and renders them to the screen together. Might sound simple, and I have to admit if I understood Vulkan a bit better it might have been, but right now I’m really proud of myself for it. Of course the headline feature: The Skybox . This is most of what I’ve been working on for the last 3 updates. It’s done in a really cool way. The easy way of doing a skybox is to just render it as one giant object and then bim bam boom there it is, but sadly that has a couple of issues, the largest one is that this is extremely lazy. So I did it the smart way instead. What you’re seeing there is actually a cube a tad bit smaller than the monkey, but it’s rendered in a separate pass, where I only pass the camera’s rotation and not the position, and I also have the depth disabled. I render that to a separate image, use the compositing pass, and there it is, a beautiful, very stable and very professional skybox. I’m almost done rambling, but I have to mention one last feature, and that is the loading of equirectangular images into a cubemap texture . I think I’ve typed enough for this update, but if you care you can look it up or like look at my code. Next up: 2D rendering and I have some great ideas for it"}, {"post_id": 30908, "ts": "2026-07-18T21:44:56Z", "hours": 1.5617, "text": "This is a change that cannot be seen, but the composite pipeline is actually working. This is a really simple step in the graphics pipeline, it takes the images from the previous passes and combines them to make a final image. This will be useful for future features like 2D drawing, post-processing, the skybox, etc., so I’m happy I managed to implement it. It’s not something that can be seen with the naked eye, but believe me it’s there and I’m so happy for it. As always, this is next to some generic bugfixes here and there, but it’s been 1.5 hours and I forgot what I fixed and what I didn’t so if you happen to care enough this is open-source just like go and check it out."}, {"post_id": 30852, "ts": "2026-07-18T19:58:13Z", "hours": 1.6753, "text": "I’m well into developing the skybox system along with a compositing pass , but since I needed to write so many new shaders for this update, I decided to write a simple shader compiler, and I kinda want to show it off so it’s not lost in the giant list of changes that I’ll push in the next update. That’s it, I rest my case, that’s all I wanted until I’m finished."}, {"post_id": 30103, "ts": "2026-07-17T12:46:44Z", "hours": 2.2475, "text": "I finished frustum culling . You’ve probably seen this feature in some random wannabe gamedevs post on tiktok saying how they “optimized their game” by enabling frustum culling in Unity and calling themselves genius for it. Well it wasn’t as easy as pressing a button for me. Here’s how it works: I generate an axis aligned bounding box (AABB) for every object when loaded. Every frame I generate 6 planes for each boundary of the camera, the left, right, bottom, top, near and far planes. Then I also calculate the world position AABB for each mesh, which is just translating the original AABB and making a new one from that’s boundary. From that, it’s actually quite simple to compare if the box is inside the frustum or not, though it’s kinda hard to explain so I won’t bother, but I just run that for every object, and it basically makes it, so if an object is not inside the camera’s vision, then it just makes it disappear. I attached the majority of the logic in the second picture"}, {"post_id": 28824, "ts": "2026-07-15T10:08:18Z", "hours": 1.3122, "text": "I implemented a fully automatic mipmap system . Basically, mipmaps are lower quality version of a texture that appear the farther you are from an object. The image I attached is of mipmap layer 4, but of course this was set manually to showcase the system working."}, {"post_id": 28331, "ts": "2026-07-14T14:52:20Z", "hours": 0.6636, "text": "I wrote a giant list on what I want to implement into this framework to make it full. I’m pretty sure I’ll be done in about 150-200 hours, which I have about 40 days to make before the end of this thing. That is 3.75 - 5 hours of coding in a day. Anyway, here’s the list: TODO FEATURES: lighting gpu scene data uniform buffer ambient light directional light point lights tangent space normal mapping tangent generation in gltf loading dynamic light count proper api for handling lights shadow mapping depth-only pipeline shadow map image light space matrix shadow pass shadow sampling in the main fragment shader shadow bias PCF filtering material system material struct (albedo map, normal map, roughness map, emissive map, scalar tint and roughness and metallic factors) material descriptor layout default fallback textures gltf material loading draw_mesh api update emissive support in the shader creating and destroying materials for user-made materials mipmaps and proper sample management mipmap generation on upload mip count calculation sampler cache (so samplers are never duplicated) instanced rendering per-instance storage buffer draw_mesh_instanced api write the shader for it (gl_InstanceIndex) move to indirect drawing so the instance count can eventually come from gpu-side data skybox cubemap loading skybox pipeline skybox shader set_skybox api frustrum culling bounding sphere per mesh (compute in loading by finding the disctance from the centroid across all vectires) frustrum plane extraction (gribb-hartmann) cull loop stats readout post processing stack fullscreen traingle pipeline HDR tonemapping guassian blur api box blur api bloom vignette 2D rendering quad mesh 2D pipeline surface class default surface draw_surface draw_rect font atlas rendering MSAA multisample draw image resolve attachment configurable sample count"}, {"post_id": 28166, "ts": "2026-07-14T09:18:04Z", "hours": 0.8786, "text": "I have to admit I’m pretty proud of myself. I implemented the proper transformations for objects , I also made a good camera system , and I fixed the uv mapping of objects, so textures finally work properly. All this in under an hour."}, {"post_id": 19382, "ts": "2026-06-30T17:57:36Z", "hours": 1.0408, "text": "To be completely honest this engine development thing is going a lot more awful than I could have imagined. I tried to implement a proper camera and transformations for the objects, and now nothing works, yet I barely changed anything. I have been staring at this function for like 2 hours, I’ve tried everything, and nothing works."}, {"post_id": 18575, "ts": "2026-06-29T19:26:50Z", "hours": 1.0686, "text": "I finally finished the guide (🥳🥳🥳), so it’s time to make the game engine I want . My first improvement was adding a render queue, which basically means I can render anything in a much user friendly way."}, {"post_id": 18301, "ts": "2026-06-29T12:31:38Z", "hours": 0.8061, "text": "Thanks to the major rework of the allocation of descriptors, I have managed to implemented textures into rendering. I haven’t made texture loading yet, since it’ll be an engine feature and I’m working on project setup , so enjoy the beautiful pink-black checkerboard pattern on Suzie, the Blender monkey."}, {"post_id": 18277, "ts": "2026-06-29T11:27:47Z", "hours": 1.3389, "text": "I did a giant rework of the descriptor allocation to make handling textures a breeze in the future. Yes, I did mostly just follow the guide, but I am really getting the hang of how Vulkan works, and the guide is ending in a couple of chapers, and the rest will be up to me, and I already feel ready for the task. I have to admit it doesn’t exactly work yet, but I’m working on patching it, it shouldn’t be an issue."}, {"post_id": 18218, "ts": "2026-06-29T09:03:15Z", "hours": 0.4683, "text": "Mesh rendering is finally complete. This is a full 3D scene with a little monkey, rendered perfectly in perspective."}, {"post_id": 17917, "ts": "2026-06-28T21:08:40Z", "hours": 1.0294, "text": "So mesh loading and rendering works, although I haven’t gotten the world matrix and transformations quite right😅 The guide I’m using to learn Vulkan actually recommended I use fastgltf, but I ended up going with tinygltf, as I’ve used it before and have a bunch more experience in it, and oh boy is having experience a good feeling when learning VK"}, {"post_id": 17836, "ts": "2026-06-28T19:36:25Z", "hours": 1.1339, "text": "I’m progressing rather fast, I implemented a full mesh buffer system, which allows me to render any mesh. Mesh loading will be the next task, but until then the best display I can do is a colorful rectangle, I hope that’s good enough"}, {"post_id": 16164, "ts": "2026-06-26T08:40:00Z", "hours": 0.4853, "text": "Implementing a proper graphics pipeline was surprisingly easy. I remembered a lot from my experience in sokol and of course the guide was quite helpful as well. Got from a compute shader to a proper pipeline very fast. I’m still very eager to get back to the fun part of graphics programming and not be stuck in setup hell, but the next step is writing the mesh buffers, so that’ll be fun."}, {"post_id": 11826, "ts": "2026-06-19T08:22:42Z", "hours": 1.095, "text": "I finished the ImGui implementation, I’m starting to get the hang of things. I’m still following vkguide.dev for the setup phase, but I’m eager to finally get to the fun part of graphics programming"}, {"post_id": 4078, "ts": "2026-06-07T08:34:21Z", "hours": 1.0794, "text": "After about an hour of following vkguide.dev, I managed to make a little compute shader that display 16×16 cells of a gradient. Great start!"}]...
|
Title: GVK renderer by @gungu | Stardance
Devlogs Title: GVK renderer by @gungu | Stardance
Devlogs:
After about an hour of following vkguide.dev, I managed to make a little compute shader that display 16×16 cells of a gradient. Great start!
I finished the ImGui implementation, I’m starting to get the hang of things. I’m still following vkguide.dev for the setup phase, but I’m eager to finally get to the fun part of graphics programming
Implementing a proper graphics pipeline was surprisingly easy. I remembered a lot from my experience in sokol and of course the guide was quite helpful as well. Got from a compute shader to a proper pipeline very fast. I’m still very eager to get back to the fun part of graphics programming and not be stuck in setup hell, but the next step is writing the mesh buffers, so that’ll be fun.
I’m progressing rather fast, I implemented a full mesh buffer system, which allows me to render any mesh. Mesh loading will be the next task, but until then the best display I can do is a colorful rectangle, I hope that’s good enough
So mesh loading and rendering works, although I haven’t gotten the world matrix and transformations quite right😅 The guide I’m using to learn Vulkan actually recommended I use fastgltf, but I ended up going with tinygltf, as I’ve used it before and have a bunch more experience in it, and oh boy is having experience a good feeling when learning VK
Mesh rendering is finally complete. This is a full 3D scene with a little monkey, rendered perfectly in perspective.
I did a giant rework of the descriptor allocation to make handling textures a breeze in the future. Yes, I did mostly just follow the guide, but I am really getting the hang of how Vulkan works, and the guide is ending in a couple of chapers, and the rest will be up to me, and I already feel ready for the task. I have to admit it doesn’t exactly work yet, but I’m working on patching it, it shouldn’t be an issue.
Thanks to the major rework of the allocation of descriptors, I have managed to implemented textures into rendering. I haven’t made texture loading yet, since it’ll be an engine feature and I’m working on project setup , so enjoy the beautiful pink-black checkerboard pattern on Suzie, the Blender monkey.
I finally finished the guide (🥳🥳🥳), so it’s time to make the game engine I want . My first improvement was adding a render queue, which basically means I can render anything in a much user friendly way.
To be completely honest this engine development thing is going a lot more awful than I could have imagined. I tried to implement a proper camera and transformations for the objects, and now nothing works, yet I barely changed anything. I have been staring at this function for like 2 hours, I’ve tried everything, and nothing works.
I have to admit I’m pretty proud of myself. I implemented the proper transformations for objects , I also made a good camera system , and I fixed the uv mapping of objects, so textures finally work properly. All this in under an hour.
I wrote a giant list on what I want to implement into this framework to make it full. I’m pretty sure I’ll be done in about 150-200 hours, which I have about 40 days to make before the end of this thing. That is 3.75 - 5 hours of coding in a day. Anyway, here’s the list: TODO FEATURES: lighting gpu scene data uniform buffer ambient light directional light point lights tangent space normal mapping tangent generation in gltf loading dynamic light count proper api for handling lights shadow mapping depth-only pipeline shadow map image light space matrix shadow pass shadow sampling in the main fragment shader shadow bias PCF filtering material system material struct (albedo map, normal map, roughness map, emissive map, scalar tint and roughness and metallic factors) material descriptor layout default fallback textures gltf material loading draw_mesh api update emissive support in the shader creating and destroying materials for user-made materials mipmaps and proper sample management mipmap generation on upload mip count calculation sampler cache (so samplers are never duplicated) instanced rendering per-instance storage buffer draw_mesh_instanced api write the shader for it (gl_InstanceIndex) move to indirect drawing so the instance count can eventually come from gpu-side data skybox cubemap loading skybox pipeline skybox shader set_skybox api frustrum culling bounding sphere per mesh (compute in loading by finding the disctance from the centroid across all vectires) frustrum plane extraction (gribb-hartmann) cull loop stats readout post processing stack fullscreen traingle pipeline HDR tonemapping guassian blur api box blur api bloom vignette 2D rendering quad mesh 2D pipeline surface class default surface draw_surface draw_rect font atlas rendering MSAA multisample draw image resolve attachment configurable sample count
I implemented a fully automatic mipmap system . Basically, mipmaps are lower quality version of a texture that appear the farther you are from an object. The image I attached is of mipmap layer 4, but of course this was set manually to showcase the system working.
I finished frustum culling . You’ve probably seen this feature in some random wannabe gamedevs post on tiktok saying how they “optimized their game” by enabling frustum culling in Unity and calling themselves genius for it. Well it wasn’t as easy as pressing a button for me. Here’s how it works: I generate an axis aligned bounding box (AABB) for every object when loaded. Every frame I generate 6 planes for each boundary of the camera, the left, right, bottom, top, near and far planes. Then I also calculate the world position AABB for each mesh, which is just translating the original AABB and making a new one from that’s boundary. From that, it’s actually quite simple to compare if the box is inside the frustum or not, though it’s kinda hard to explain so I won’t bother, but I just run that for every object, and it basically makes it, so if an object is not inside the camera’s vision, then it just makes it disappear. I attached the majority of the logic in the second picture
I’m well into developing the skybox system along with a compositing pass , but since I needed to write so many new shaders for this update, I decided to write a simple shader compiler, and I kinda want to show it off so it’s not lost in the giant list of changes that I’ll push in the next update. That’s it, I rest my case, that’s all I wanted until I’m finished.
This is a change that cannot be seen, but the composite pipeline is actually working. This is a really simple step in the graphics pipeline, it takes the images from the previous passes and combines them to make a final image. This will be useful for future features like 2D drawing, post-processing, the skybox, etc., so I’m happy I managed to implement it. It’s not something that can be seen with the naked eye, but believe me it’s there and I’m so happy for it. As always, this is next to some generic bugfixes here and there, but it’s been 1.5 hours and I forgot what I fixed and what I didn’t so if you happen to care enough this is open-source just like go and check it out.
And just like that, the next major update is done! SKYBOXES and other stuff Here’s a full changelog of the last 3 posts: I wrote a really handy shader compiler to make this update just a bit easier, now it automatically compiles all shaders at once I don’t have to do it one by one I wrote a compositing pass that finally has a use case as can be seen right now. The skybox and the objects are rendered separately to separate images, and the compositing pass combines them and renders them to the screen together. Might sound simple, and I have to admit if I understood Vulkan a bit better it might have been, but right now I’m really proud of myself for it. Of course the headline feature: The Skybox . This is most of what I’ve been working on for the last 3 updates. It’s done in a really cool way. The easy way of doing a skybox is to just render it as one giant object and then bim bam boom there it is, but sadly that has a couple of issues, the largest one is that this is extremely lazy. So I did it the smart way instead. What you’re seeing there is actually a cube a tad bit smaller than the monkey, but it’s rendered in a separate pass, where I only pass the camera’s rotation and not the position, and I also have the depth disabled. I render that to a separate image, use the compositing pass, and there it is, a beautiful, very stable and very professional skybox. I’m almost done rambling, but I have to mention one last feature, and that is the loading of equirectangular images into a cubemap texture . I think I’ve typed enough for this update, but if you care you can look it up or like look at my code. Next up: 2D rendering and I have some great ideas for it
2D rendering!! I have to admit this feature was kinda easy to implement, because most of it was ripped straight from my last game engine, but I did it because I think it is a really smart way of handling how a 2D system should work. Everything relies on the Surface class, the display itself is a surface, the loaded images are surfaces, and those surfaces can draw to eachother. This makes the system easy yet expandable. I think it’s kinda cool. It was heavily inspired by how pygame does things.
MSAA !! (multisampled anti-aliasing) I always viewed anit-aliasing as this mystery thing that can make a game prettier and I’ll never know how it works. I have to say, it was way easier than expected, most of the time I spent was on some stupid bug or general debugging. You can’t really see the difference in a small screenshot, but it looks so much better full screen.
I thought how cool would it be if I just did a whole 10 hour devlog with all of post-processing in it, but I realized I wouldn’t be able to show off all the cool stuff I’ve done, so I’m doing it effect by effect, anyway, GAUSSIAN BLUR (post-processing effect 1) But not just that, I also brainstormed out the entire post-processing system, and “implemented” it. I didn’t exactly implement it yet because I need to finish all the effects, but it’s there. I still have to finish: box blur, bloom, vignette and tonemapping, and I also want support for custom effects, but that’ll be really easy so I don’t want to put it on this list.
BOX BLUR (post-processing effect 2) I have to admit this took 11 minutes, and the rest of the 5 minutes I spent in this devlog was spent debugging 3 new errors so I can make a post about this feature too. It took so little because I literally just copied and renamed the gaussian blur functions, and changed the shader. Still, I have box blur now. Actually, I think there’s quite a difference between the 2 blurs, quite cool. Of course now that I look at it it’s barely visible in the screenshots.
VIGNETTE (post-processing effect 3) This was the most fun I’ve had debugging something in a while. This was really simple to implement, although I can’t really say a lot. The initialization was the same as the other effects, the actual logic of it was pretty similar, the shader wasn’t too hard to write too, but added up it was pretty bad. I accidentally left one of the push parameters in the CPU code as an int, but a float in the GPU code, which I ended up having to chase down for quite a while. The values are over the top on the image so it is more visible on the screenshot, of course I won’t leave it like this. Also, I have written a new readme for the github page. I just kinda wanted to, and thought why not?
BLOOM (post-processing effect 4) I’m almost done with all of the post-processing effects, and this was by far the hardest of them all, but I managed to push through it. I’m really proud of myself, because I finally understand Vulkan enough where I didn’t need any sort of outside help to debug this error. I think I can finally call myself someone who understands Vulkan now. Anyway, now I just need to make tonemapping and the effects are done. After that I just make the simplest pipeline to composite it all, and I’m done with that as well.
POST-PROCESSING STACK and TONEMAPPING AND COLOR GRADING (post-processing effect 5) This is the finale to the post-processing saga, because I’m finished with tonemapping and color grading. Everything will look really good and cool and whatever, altough I’ve been coding non-stop for 2.5 hours and I don’t really care to give an explanation right now. I don’t have to explain color grading everybody knows that, and tonemapping is the process of mapping the internal HDR render image to an LDR (whatever it’s called) image that the display can actually render properly, how cool is that?
This change is not too visible, but it is a major change in the engine MATERIALS Everybody who worked in any sort of 3D graphics knows what materials are. And those know, that the next step after this is lighting . This wouldn’t have been that big of a change, if not for one issue. I’m developing on linux, and every once in a while my GPU drivers uninstall themselves, so everything runs on the integrated graphics on the CPU. That happened, but I thought that the code just became really slow because I was sending 6 images to the GPU every single frame, and that slowed it down. So I spent a bunch of time making a large optimization, and it worked like a charm, it ran fast. Then I found out the entire thing was running on the CPU and I didn’t even need to optimize it. Anyway, it’s here, and it’s fast
Well well well. Seems like it’s time for LIGHTING !!!!! finally This was not easy, and yet it was made so much easier by having done it once before last year. I added support for a directional light, a dynamic (aka not hard coded, so pratically infinite amount of) point lights and spot lights, full PBR, and I also made a little handy editor to go along with it, although that’s not in the renderer that’s just in the demo project. Anyways, this was an incredible journey filled with pain and suffering like never before, and I’m so glad I’m through it all. And if this was a challenge, I don’t know what shadow mapping is going to be, which is going to be basically right now, I’m going to add tanget space normal mapping and then it’s already shadowmapping. I’m mentally unprepared, but oh well what can I do?
NORMAL MAPPING This was a really easy update, most of the shader changes were copied from my last engine, and the CPU side of things was just changing the vertex struct and loading the tangents in the mesh loading function. But it works.
SCENE LOADING I just got home from a 10 day adventure that’ll never forget, but I’m back to code, and to get myself to shake into the civilized world again I decided to do a simpler feature before shadow mapping, so I implemented full scene loading from GLTF files. It’s a pretty handy feature, I’m glad I finally made it. It doesn’t just load models and materials, but lights too, pretty handy.
SSAO (screen-space ambient occlusion) This one was fun. Ambient occlusion is just a little shadow thing at the edge of meshes. It is not realistic, technically it doesn’t exist in the real world, yet it looks so much better with it. To be honest I don’t have a lot to say about this, it’s done and it’s cool.
SKINNED MESHES AND RIGGING This renderer is extremely close to done. I just implemented fully rigged (and animated) meshes. They render properly and animations work too (although I didn’t really care enough to show an example) . Now I am at the last 2 steps of this renderer before starting work on a game in it: 1. Polish up all the API commands so it’s more user friendly. For example, skinned meshes work and can be adjusted manually, but I have a really good idea on how to make working with them super easy, so I’ll definitely implement that. 2. Make a demo that includes basically everything I have developed so far. This step also includes writing compatibility for multiple platforms, because so far I’ve only tested this project on Ubuntu, and I’ll definitely need a windows version too. And that’s it, the project is nearing it’s completion. I can’t wait to make a proper game in this, which I’ll document too of course. Also, I’m writing all of this while I’m on a vacation in Denmark, so I’m quite far from home, but I’m extremely motivated to get this project finished.
FINAL POLISHING (mostly just making the API more useable) I genuinely can’t believe this. I did it, I made a renderer in Vulkan. Well, I’m still not in the clear yet, but I’m very close. Changelog: updated Skin struct to include find_joint() function added Pose struct updated existing skinned mesh systems to work with the Pose struct added sample_clip(), compute_global_pose(), compute_skinning_matrices(), pose_set_local(), pose_set_global(), pose_get_global(), update_animation() and finalize_pose(). These are all helpers for making work with animated and rigged meshes a whole lot easier moved all of the functions inside the gvk namespace, because they were about half and half before.
THE GREAT DEBUGGING and A DEMO This is the final post as long as everything works as intended. I fixed every single validation layer error that occurred, so this project is officially bug-free (to my knowledge) . I also made a really simple demo that I uploaded to the github releases tab of the repository. I also finalized the readme, so now the project also has a fancy description. What a ride, I love this project.
I worked for over 4 hours, but the renderer finally works as a library!!! That’s right, just put it in as a git submodule, add it as a subdirectory to you CMake project, and there it is! Way too much work for something so simple, but I had to debug a whole lot of stuff. I also edited the README to feature usage instructions and also how to try the demo.
I also rewrote the single mesh gltf loading function to return the material and the entire vertex and index arrays, because I’ll need them for a feature I’m making for my game. This is slowly turning into engine development and I kinda like it.
I rewrote the texture loading part of GLTF loading because it just plain didn’t work since I updated everything to tinygltf3, but I didn’t notice because it was after the demo. Anyways, it’s done now.
I completely rewrote the text rendering in the Surface class and also fixed a giant memory leak. Here’s a picture of it in use in my game.
I wasted so much time trying to optimize it all to lead to nothing, but I did end up optimizing some stuff with the Surfaces along with actual color blending for them. I did end up optimizing a bit, but that’s basically nothing. This is the most worthless update to this entire project, I don’t even know how I spent 3 hours on this.
PIXELATION POST-PROCESSING EFFECT I made my post-processing system so expandable that I just casually added it ‘cause I thought it would look cool in the game I’m making. I’m sure as hell right about that.
I also fixed a bug where the bloom’s blur looped around to the other side of the screen.
Screen-space reflections would be a major challenge, but I learned that making the skybox reflect off of shiny surfaces is a pretty good way of making your renders seem much better. As of right now it technically works, but I came to realize that I wasn’t loading materials right, so if an image didn’t have a roughness texture, then it would end up completely shiny. I’m almost done fixing it.
SKYBOX REFLECTIONS This is a neat trick I did in my last engine and I’m happy I recreated it in this one. Every single shiny surface reflects the skybox, which while isn’t realistic, it does make those surfaces look a lot more shiny than what they actually are, which is a great hack. It sure as hell looks better in the environments I make.
FOG Yeah I just added fog because I thought it would look cool in my game. Obviously it’s over the top in this image because I wanted to show it off. I’m pretty proud of this one, definitely one of the more complex post-processing effects.
I made a few minor tweaks to fog, and I started debugging it, which I ended up completely stopping and reverting, as it was useless. To be honest I’m really trying to find where this 27 minutes appeared, because I don’t remember spending half an hour on this
Ships:
GVK (short for gungu vulkan) is my new renderer using the Vulkan graphics api. I miss the times when I worked with pygame and love2d, where rendering an image was one simple line of code, and I intend to bring that experience to 3D with this project. Everything is designed to be as easy as possible for the user, just writes gvk::draw_mesh(mesh, material, position, scale, rotation); and the mesh is where you want it, how you want it. But don’t mistake it, this is not a game engine, this is just a renderer, something you can build an engine on. I made this tool so my later projects have a graphical backbone to build on, but every game needs a different engine. Ever since I started graphics programming last year I knew that one day I had to learn Vulkan if I ever wanted a job in it in the future, and I’m very proud of myself for finally doing it. This was the greatest challenge I faced in programming so far, and I so glad I tackled it. And as for AI: This project was created so I could learn Vulkan, and if I copied everything from AI that would have been to effective. My goal was to use as little AI as I could, while still leaving out the headaches of development. Here’s what I used AI for: Many of the shaders were written by AI, but that’s because I haven’t learned any of the maths I need to know to write any of these shader. When a shader wasn’t too math heavy I wrote it myself, but there weren’t too many of those. The GLTF loading isn’t hard, it’s just a headache to work with it. GLTF is a horrible format for developers, but it’s the best I knew, so I rather had AI write the GLTF loading functions. I’m still glad I did that, I would have learned nothing from writing those.
This is the second ship of my game engine / renderer. To explain, I like calling it a renderer instead of a game engine, because I purposefully tried to add as few bloat features as I could, I just wanted something that made rendering something that I don’t have to think about. More info on the README page, this isn’t a good explanation. Just know that it isn’t just a basic Vulkan abstraction, this is a full renderer with PBR, many post-processing effects, skyboxes, dynamic lights, rigged and animated meshes and frustrum culling ’cause why not. Changelog since the last ship: 2 new post-processing effects, pixelation and fog I also added a feature where shiny objects reflect the skybox, which isn’t realistic, but it adds a great sense of realism and I like to add it to my games. one of the largest changes was turning this into an actual library instead of an executable, which allows easier integration. I also made a full game as a tech demo for this project, it can be found at this link or under my stardance profile. It turned out really well, and I’m proud of myself, because I finally made a game engine that I can actually make games in easily. (The screenshot is from the game) and the smallest but still a significant change was rewriting the entire 2D rendering part of the engine for 2 reasons: it had a memory leak, and text rendering was buggy, slow and barely worked....
|
1793127031.5391572
|
1793213431.5391572
|
|
54961
|
icp-scout by @qqxzew | Stardance
|
qqxzew
|
1
|
34.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T14:22:09Z", "hours": 34.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? An assistant for a salesperson, not another lead list. You give it a customer profile, it walks the Czech public registers, and once a week it hands back a handful of companies with something that actually changed this week — each with a full dossier where every claim carries the exact quote it came from and a link to the page it was found on. Built as a take-home assignment for RTsoft (they sell custom shop-floor management software), and it’s live in production, not just running on my machine. What was challenging? Hallucination is the whole risk of this task, not a side concern — an invented fact about a company that a salesperson pastes into an email is worse than no output at all. So the model never gets to assert anything; it proposes a claim + a quote, and my code searches for that exact quote in the page text I archived. First time I ran a verifier that rechecked stored claims against their own archived pages, 100 of 172 supposedly-verified facts failed — all from one code path, the part reading the state register, which had been marking its own claims “verified” without ever passing them through the check. The other hard part: I assumed a good weighted score could rank “why this company.” Two separate experiments — a permutation test and a 1536-dim embedding of company sites — both came back at chance. The site text just doesn’t say who’s buying software. Had to throw the score out and rebuild ranking around what’s actually provable instead. What are you proud of? One line in the schema: claim.snapshot_id NOT NULL REFERENCES snapshot(id). A claim about a company physically cannot be inserted into the database unless it points at a stored page snapshot — “nothing without a source” isn’t a rule I have to remember, it’s a foreign key. Also proud that manual review keeps finding real bugs the statistics don’t: a solar-panel subsidy misfiled as “scaling up production,” a company ranked #1 whose own grant paperwork said they’d already bought the system — both caught by reading five actual cards, after two rigorous experiments said everything was fine. What should people know so they can test it? It only works for Czech companies — the sources are Czech state registers. python -m pipeline.run –check tells you exactly what’s missing before you run anything. The number that matters on every dossier is the last line — “N verified facts · N inferences · N discarded” — click a claim’s source link and check the quote is actually on that page; that’s the whole trust model, so it should be checkable, not taken on faith.", "repo": "https://github.com/qqxzew/icp-scout", "demo": "https://www.icp-scout.fun/"}]...
|
[{"post_id": 63571, "ts": "202 [{"post_id": 63571, "ts": "2026-09-07T14:20:11Z", "hours": 7.4442, "text": "Wired up actual deploy: push to main, and a minute later the demo is running that commit. git archive straight over ssh into a receive script — no registry, no git pull on the server, so the server never holds credentials for this repo. The one thing it refuses to do is kill a run in progress: /api/run spawns the pipeline as a subprocess, and a container restart takes it down with it. Now the script asks first, and if a run is going it stops and exits non-zero — red, on purpose, because a deploy that shipped code but didn’t put it into service has no business looking green.Rebuilding the whole thing from nothing on a clean machine found what months of running it on my own box never did. All five delivered companies 404’d after the first real run — the candidate list gets loaded once at import, a run rewrites the files under it, and the process just kept serving eight-hour-old data until somebody restarted it by hand. The “what’s missing” preflight check was lying in both directions: it called the API key missing on a machine that had it as an env var instead of a .env file, and it reported success on a machine where the industry codebook never downloaded — which doesn’t crash anything, it just prints every industry as a bare five-digit code and calls that fine.README got rewritten to lead with the one sentence the tool actually stands on, plus an ARCHITECTURE.md the code can point to instead of explaining itself in comments, a Czech translation, and an MIT licence with the honest caveat: what’s verified is that a sentence was on a page, not that it’s true."}, {"post_id": 61785, "ts": "2026-09-04T21:17:56Z", "hours": 6.3292, "text": "Built a carousel for the week’s five cards - swipe through them one at a time, or flip to a plain grid"}, {"post_id": 60452, "ts": "2026-09-02T19:46:09Z", "hours": 5.5703, "text": "Ran two experiments trying to find better weights for the outreach-order score — a permutation test on our own signals, and a 1536-dim embedding of company sites — both landed at chance (AUC 0.39, p≈0.8). Turns out public site text just doesn’t say whether a company is buying planning software; that’s a ceiling in the source, not something more features would fix, so scoring got replaced with an order read straight off the client’s own ICP document instead of invented weights. Then reading five actual weekly cards by hand caught two things neither experiment did: a solar-panel subsidy misfiled as “scaling up production,” and the #1 company on the list whose own grant description said “we’re buying a complete information system” — already a lost lead, not a hot one. Fixed the classifier — it was only reading project titles, never descriptions — and one signal class jumped from 214 to 1014 matches, 415 of which used to be pitched as reasons to call. Two rigorous measurements found nothing; two hours of eyeballing cards found the bugs sitting at the top of the list."}, {"post_id": 57638, "ts": "2026-08-29T20:55:41Z", "hours": 2.9286, "text": "The assistant now produces real company cards - every claim on one carries the exact quote it came from and a link to the source it was found in. To make sure that actually held, I wrote a check that re-verifies every stored fact against the archived page it supposedly came from, and ran it over the whole database.100 of 172 “facts” failed. Every single one came from my own code: the part that reads the state company register was writing claims marked “verified” without ever passing them through the verifier. The irony is that the register is the most trustworthy source in the entire project - it was just the only one asserting things instead of proving them. Now 177 of 177 pass.I also cut the weekly run from ~50 minutes to about 2, after finding an official API that lists which companies changed recently - 30 of mine in a week, instead of re-checking all 3,299."}, {"post_id": 55490, "ts": "2026-08-27T11:36:43Z", "hours": 11.6494, "text": "I started working on icp-scout - an AI assistant that helps find potential B2B customers. The idea behind the project is simple: instead of a salesperson spending hours searching for companies, opening different websites, and collecting information manually, the assistant should handle this routine work. The goal is not just to provide a list of companies, but to explain why each company could be a good fit and why now might be the right time to contact them. Right now, I’m working on the basic project architecture and thinking about how to make AI results more reliable. The biggest challenge with systems like this is that AI can confidently generate information that is not true. That’s why it is important that every important statement can be verified and has a clear source. Next, I plan to connect public company data sources, build the first analysis pipeline, and test it with real examples."}]...
|
Title: icp-scout by @qqxzew | Stardance
Devlogs:
Title: icp-scout by @qqxzew | Stardance
Devlogs:
I started working on icp-scout - an AI assistant that helps find potential B2B customers. The idea behind the project is simple: instead of a salesperson spending hours searching for companies, opening different websites, and collecting information manually, the assistant should handle this routine work. The goal is not just to provide a list of companies, but to explain why each company could be a good fit and why now might be the right time to contact them. Right now, I’m working on the basic project architecture and thinking about how to make AI results more reliable. The biggest challenge with systems like this is that AI can confidently generate information that is not true. That’s why it is important that every important statement can be verified and has a clear source. Next, I plan to connect public company data sources, build the first analysis pipeline, and test it with real examples.
The assistant now produces real company cards - every claim on one carries the exact quote it came from and a link to the source it was found in. To make sure that actually held, I wrote a check that re-verifies every stored fact against the archived page it supposedly came from, and ran it over the whole database.100 of 172 “facts” failed. Every single one came from my own code: the part that reads the state company register was writing claims marked “verified” without ever passing them through the verifier. The irony is that the register is the most trustworthy source in the entire project - it was just the only one asserting things instead of proving them. Now 177 of 177 pass.I also cut the weekly run from ~50 minutes to about 2, after finding an official API that lists which companies changed recently - 30 of mine in a week, instead of re-checking all 3,299.
Ran two experiments trying to find better weights for the outreach-order score — a permutation test on our own signals, and a 1536-dim embedding of company sites — both landed at chance (AUC 0.39, p≈0.8). Turns out public site text just doesn’t say whether a company is buying planning software; that’s a ceiling in the source, not something more features would fix, so scoring got replaced with an order read straight off the client’s own ICP document instead of invented weights. Then reading five actual weekly cards by hand caught two things neither experiment did: a solar-panel subsidy misfiled as “scaling up production,” and the #1 company on the list whose own grant description said “we’re buying a complete information system” — already a lost lead, not a hot one. Fixed the classifier — it was only reading project titles, never descriptions — and one signal class jumped from 214 to 1014 matches, 415 of which used to be pitched as reasons to call. Two rigorous measurements found nothing; two hours of eyeballing cards found the bugs sitting at the top of the list.
Built a carousel for the week’s five cards - swipe through them one at a time, or flip to a plain grid
Wired up actual deploy: push to main, and a minute later the demo is running that commit. git archive straight over ssh into a receive script — no registry, no git pull on the server, so the server never holds credentials for this repo. The one thing it refuses to do is kill a run in progress: /api/run spawns the pipeline as a subprocess, and a container restart takes it down with it. Now the script asks first, and if a run is going it stops and exits non-zero — red, on purpose, because a deploy that shipped code but didn’t put it into service has no business looking green.Rebuilding the whole thing from nothing on a clean machine found what months of running it on my own box never did. All five delivered companies 404’d after the first real run — the candidate list gets loaded once at import, a run rewrites the files under it, and the process just kept serving eight-hour-old data until somebody restarted it by hand. The “what’s missing” preflight check was lying in both directions: it called the API key missing on a machine that had it as an env var instead of a .env file, and it reported success on a machine where the industry codebook never downloaded — which doesn’t crash anything, it just prints every industry as a bare five-digit code and calls that fine.README got rewritten to lead with the one sentence the tool actually stands on, plus an ARCHITECTURE.md the code can point to instead of explaining itself in comments, a Czech translation, and an MIT licence with the honest caveat: what’s verified is that a sentence was on a page, not that it’s true.
Ships:
What did you make? An assistant for a salesperson, not another lead list. You give it a customer profile, it walks the Czech public registers, and once a week it hands back a handful of companies with something that actually changed this week — each with a full dossier where every claim carries the exact quote it came from and a link to the page it was found on. Built as a take-home assignment for RTsoft (they sell custom shop-floor management software), and it’s live in production, not just running on my machine. What was challenging? Hallucination is the whole risk of this task, not a side concern — an invented fact about a company that a salesperson pastes into an email is worse than no output at all. So the model never gets to assert anything; it proposes a claim + a quote, and my code searches for that exact quote in the page text I archived. First time I ran a verifier that rechecked stored claims against their own archived pages, 100 of 172 supposedly-verified facts failed — all from one code path, the part reading the state register, which had been marking its own claims “verified” without ever passing them through the check. The other hard part: I assumed a good weighted score could rank “why this company.” Two separate experiments — a permutation test and a 1536-dim embedding of company sites — both came back at chance. The site text just doesn’t say who’s buying software. Had to throw the score out and rebuild ranking around what’s actually provable instead. What are you proud of? One line in the schema: claim.snapshot_id NOT NULL REFERENCES snapshot(id). A claim about a company physically cannot be inserted into the database unless it points at a stored page snapshot — “nothing without a source” isn’t a rule I have to remember, it’s a foreign key. Also proud that manual review keeps finding real bugs the statistics don’t: a solar-panel subsidy misfiled as “scaling up production,” a company ranked #1 whose own grant paperwork said they’d already bought the system — both caught by reading five actual cards, after two rigorous experiments said everything was fine. What should people know so they can test it? It only works for Czech companies — the sources are Czech state registers. python -m pipeline.run –check tells you exactly what’s missing before you run anything. The number that matters on every dossier is the last line — “N verified facts · N inferences · N discarded” — click a claim’s source link and check the quote is actually on that page; that’s the whole trust model, so it should be checkable, not taken on faith....
|
1793144890.3177927
|
1793231290.3177927
|
|
6517
|
swarmtrace by @raviiiibro | Stardance
|
raviiiibro
|
1
|
140.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T14:12:02Z", "hours": 140.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "the marketing was challenging and i think now it is ready and i get more suggestion if people will use it and i hope i ccan buy a domain by the star dust", "repo": "https://github.com/ravi3594444/swarmtrace", "demo": "https://swarmtrace.vercel.app/"}]...
|
[{"post_id": 57987, "ts": "202 [{"post_id": 57987, "ts": "2026-08-30T10:07:47Z", "hours": 3.3442, "text": "half work done"}, {"post_id": 45694, "ts": "2026-08-12T10:51:40Z", "hours": 14.5639, "text": "starting work"}, {"post_id": 38796, "ts": "2026-08-01T11:14:26Z", "hours": 10.8114, "text": "today i know there is so much work left on this project then i think i added a floating side bar added some more now features for backend optimization guys working on a i3 sucks please help me to buy an macbook byyy"}, {"post_id": 34749, "ts": "2026-07-25T18:41:00Z", "hours": 9.1911, "text": "adding agent graph this is mvp only i will polish it byee"}, {"post_id": 31855, "ts": "2026-07-20T15:58:43Z", "hours": 8.5708, "text": "added many features like day and night light take a tour and adjust icons sizes to a bit smaller and fixed some backend issues and run many real tests like rag agent and hermes agent and again applied for google search console ——————————————————————————————————— i need to buy a domain but i do not have money i will start marketing after buying domain byee guyss please like"}, {"post_id": 29572, "ts": "2026-07-16T16:32:50Z", "hours": 10.4061, "text": "does a full audit by ai agent found some production bugs working on prd section 1 because it is main it conation python package updtaes because the whole project is up to sdk byee meet in next vlog"}, {"post_id": 27112, "ts": "2026-07-12T11:44:54Z", "hours": 11.8228, "text": "all test are passing"}, {"post_id": 25197, "ts": "2026-07-09T08:46:20Z", "hours": 13.8544, "text": "added new features"}, {"post_id": 20965, "ts": "2026-07-02T18:13:39Z", "hours": 22.3356, "text": "Ahh infinite .tsx bug fixing"}, {"post_id": 12234, "ts": "2026-06-19T23:39:44Z", "hours": 9.5261, "text": "dev vlog#7today i worked on research on my project about similar projects because i cant get a .com domain hi have to buy a .ai domain and i worked on dashboard today because it was so simple then guys please suggest any improvement."}, {"post_id": 9898, "ts": "2026-06-16T11:58:18Z", "hours": 5.4533, "text": "Dev Vlog #6Finally, the landing page work is officially done! The platform is ready for users, and you can check it out here: swarmtrace.vercel.app.Right now, I don’t have the budget to buy a custom domain, so I have set it up on Google Search Console for now. I know that having a domain like swarmtrace.ai would help it perform much better in Google Search, since Google tends to rank subdomains poorly.That being said, the platform is still very much in the building phase. I am already working on adding some exciting new features.Stay tuned, and bye for now!"}, {"post_id": 7404, "ts": "2026-06-12T10:32:32Z", "hours": 8.6239, "text": "finally live on vercel but still in deployment you can check it guys go on swarmtrace.vercel.app"}, {"post_id": 5009, "ts": "2026-06-08T17:33:24Z", "hours": 0.6333, "text": "dev vlog #4 builders just finished the backend work for today / rest work tomorrow i will make the frontend connected to clerk for auth and neon for database . byee👍"}, {"post_id": 4889, "ts": "2026-06-08T13:38:09Z", "hours": 5.7483, "text": "dev vlog 3”What’s up, builders! Today we are fundamentally changing how SwarmTrace works. We’re tearing out the local SQLite restrictions and turning this project into a distributed, multi-tenant AI agent monitoring platform. The goal? Anyone can install our package, drop in an API key, and instantly view their agent’s execution traces on a sleek, hosted Next.js dashboard powered by Clerk and Supabase—without hosting a single thing themselves.” What We’re Solving Today: The “Localhost” Trap: Right now, the FastAPI backend expects to live on the same machine as the SQLite database. If a user runs an agent on their machine, they can’t easily see it on a globally hosted dashboard. Multi-Tenancy: We need to make sure User A never sees User B’s logs. Every single trace must be bound to an organization or user ID. Zero-Infra for the User: The developer using tracely should only have to pip-install it, provide a SWARMTRACE_API_KEY, and let our remote backend handle the rest. 📐 The SaaS Architecture Blueprint Here is how data will flow across the internet from your user’s local python script straight to your Vercel-hosted frontend dashboard: [ User’s Local Machine ] └── Running AI Agent (LangChain/CrewAI/AutoGen) └── Tracely SDK (Decorators) │ ▼ (Async Background HTTP POST /ingest) [ Vercel Serverless / API Gateway ] ─── (Validates SWARMTRACE_API_KEY) │ ▼ (Writes Log Payload) [ Hosted Database: Supabase / Postgres ] └── traces table (Schema: id, user_id, execution_time, trace_payload) ▲ │ (Fetches user-specific traces via Clerk JWT auth) [ Vercel Frontend: Next.js + Clerk ] └── Protected Dashboard View (Only shows rows matching user_id) 🗂️ The Technical Roadmap To pull this off, we have to transform four key elements of your repository: The SDK (tracely/scraper.py & tracer.py) Current: Writes to a local SQLite database via storage.py. SaaS Modification: Introduce a background background-worker thread or async pool. When a trace finishes, it sends an HTTP POST request to https://api.swarmtrace.dev/v1/ingest carrying the payload and an Authorization: Bearer st_live_… header. The Backend Engine (api.py) Current: Reads from local SQLite. SaaS Modification: Drop SQLite. Migrate to a hosted Postgres instance (Supabase is perfect here). Add an /ingest route for incoming agent metrics. Add middleware to validate incoming user requests from the frontend using Clerk JWT tokens. The Authentication Layer (Clerk) Wrap your frontend-next/ layout inside a . Set up a pipeline where a user logs in, generates an “Agent API Key” from their settings dashboard, and pastes that key into their Python .env file. also tracely is maded by me it is the part of swarm trace."}, {"post_id": 3574, "ts": "2026-06-06T15:55:13Z", "hours": 1.6264, "text": "🐝 SwarmTrace DevLog #3 — Wiring the Dashboard to Real Data June 6, 2026 /////////////////////////////////////////////////////// Today was all plumbing. No new features, no design work — just making the two halves of this project actually talk to each other. /////////////////////////////////////////////////////// Where Things Stood I had two things running independently. On one side, the FastAPI server — started it up this morning, it boots clean, the @observe decorator has been collecting real traces into SQLite every time an agent function runs. The data is there. It’s been there. On the other side, the dashboard UI — five pages, looks exactly like the design mockups, dark theme, all the charts and tables and drawers. Finished that yesterday. The problem is they had never spoken to each other. The UI was showing hardcoded numbers I typed in by hand. The API was sitting there with real data and nothing asking for it. The Work Spent today closing that gap. First thing I did was map out what each page actually needs from the backend. Overview needs health stats and an activity feed. Traces needs the full call list. Agents needs a registry of everything that’s been observed. Metrics needs cost and token breakdowns. Settings needs API key management and integration status. Then I went into the API and built those endpoints out one by one. The good news — all the underlying data was already in the database from the decorator. I wasn’t inventing anything, just exposing it in the right shape. The annoying part was that the frontend and backend had grown slightly different vocabularies. The UI expected fields named one way, the API had them named another. Duration in milliseconds vs latency in seconds. function_name vs function. Small things, but they all had to be aligned or every fetch would silently return nothing. CORS was the other thing that caught me — frontend on one port, backend on another, browser refuses to talk between them without the right middleware. Quick fix once I remembered that’s what was happening. The Moment it Clicked Started both servers. Opened the dashboard. Traces page loaded with real function names — execute_task, plan_steps, fetch_data — things I’d actually run this week. Real latencies. Real token counts. Real errors with the actual error messages. Turned on Live Mode. Ran an agent task in a separate terminal. Watched the row appear in the table a couple seconds later. That’s the thing you build toward. What’s Still Hardcoded A few things I haven’t gotten to yet. The Overview stat cards are still static numbers — need to write proper aggregation logic for those. The per-agent token sparklines are placeholder data because I’m storing traces, not time-bucketed token history per agent. Something to fix this week. Tomorrow Get the Overview cards pulling from real DB aggregations. Then figure out deployment — right now this whole thing requires running two local servers which isn’t great for a demo. Want a single public URL before the submission deadline. /////////////////////////////////////////////////////// SwarmTrace — open-source observability for multi-agent AI systems. Built for AMD Hackathon 2026."}, {"post_id": 3416, "ts": "2026-06-06T10:35:54Z", "hours": 3.8981, "text": "🐝 SwarmTrace — Developer Log 1 Project: SwarmTrace Version: 0.1.7 Built for: AMD Hackathon Author: Ravi Kumar What is it? SwarmTrace is a tracing and observability library for LLM-based multi-agent systems — essentially “pytest for AI agents.” The core idea: AI swarms are unpredictable, and existing tools give you no visibility into what happened, where it broke, or whether a prompt change caused a regression. SwarmTrace fixes that. What it does Tracing — wrap any Python function (sync or async) with @observe and every call is automatically recorded: inputs, outputs, latency, token usage, cost, errors, and parent–child relationships between nested agent calls. Token Budget — the @budget decorator tracks cumulative token usage across calls and warns you (or hard-stops) before an agent blows past its limit. Regression Detection — the compare() function runs two prompt versions against the same inputs and uses an LLM to score output similarity, flagging regressions automatically. Tool Attention (ISO Scoring) — implements the technique from arXiv:2604.21816. Instead of injecting all tool schemas into every prompt, it uses FAISS + sentence embeddings to select only the top-k relevant tools per query — reducing tool token overhead by up to 95%. Web Scraping Traces — scraper.scrape(url) wraps Scrapling with full trace recording so scrape calls show up in the call tree like any other agent action. CLI — swarmtrace prints a rich call tree with costs and statuses. swarmtrace-replay replays any individual trace. swarmtrace-export dumps everything to JSON or CSV. Frontend Dashboard A React + TanStack Router frontend visualises live traces from the FastAPI backend: Stat bar — total traces, cumulative tokens, total cost, error count at a glance Call Tree — hierarchical view of parent→child agent calls for a full run Waterfall — timeline view showing which agents ran in parallel vs sequentially Token Chart — per-trace token usage over time Failures page — isolated view of every errored trace with its call chain and error message Detail Drawer — click any trace to inspect its full args, output, latency, and lineage Live Mode — polls the backend every 2 seconds for real-time trace updates Storage All traces land in a local SQLite database (~/.tracely.db) with WAL mode enabled. Auto-purges oldest rows beyond 10,000 to stay bounded. Indexed on timestamp for fast ordered reads. Export to JSON/CSV available via CLI. Stack LayerTechnologyCore libraryPython 3.8+, SQLite, contextvarsRegression LLMClaude Haiku via litaiTool selectionFAISS + sentence-transformersAPIFastAPI + PydanticFrontendReact, TanStack Router/Start, Tailwind, RechartsCLI displayrichPackagingsetuptools, pip-installable Key design decisions contextvars for parent tracking — parent IDs propagate automatically through async and threaded code without any manual wiring. Nested @observe calls build the tree on their own. SQLite over a hosted DB — zero setup for the user; works offline; the auto-purge keeps it from growing unboundedly. Graceful degradation everywhere — if sentence-transformers/FAISS aren’t installed, Tool Attention falls back to returning the first k tools. If tiktoken isn’t installed, budget tracking falls back to len // 4. Storage errors never crash the agent being traced. Current limitations Failures page still uses static demo data instead of the live API swarm_module_0–4.py are five identical placeholder files (to be collapsed into one) No authentication on the API (development only) pyproject.toml is incomplete; setup.py not yet migrated. i have to complete ui first now then i will do other api work because it will be connected to ui because it was originally built a python frame work.byee"}]...
|
Title: swarmtrace by @raviiiibro | Stardance
Devl Title: swarmtrace by @raviiiibro | Stardance
Devlogs:
🐝 SwarmTrace — Developer Log 1 Project: SwarmTrace Version: 0.1.7 Built for: AMD Hackathon Author: Ravi Kumar What is it? SwarmTrace is a tracing and observability library for LLM-based multi-agent systems — essentially “pytest for AI agents.” The core idea: AI swarms are unpredictable, and existing tools give you no visibility into what happened, where it broke, or whether a prompt change caused a regression. SwarmTrace fixes that. What it does Tracing — wrap any Python function (sync or async) with @observe and every call is automatically recorded: inputs, outputs, latency, token usage, cost, errors, and parent–child relationships between nested agent calls. Token Budget — the @budget decorator tracks cumulative token usage across calls and warns you (or hard-stops) before an agent blows past its limit. Regression Detection — the compare() function runs two prompt versions against the same inputs and uses an LLM to score output similarity, flagging regressions automatically. Tool Attention (ISO Scoring) — implements the technique from arXiv:2604.21816. Instead of injecting all tool schemas into every prompt, it uses FAISS + sentence embeddings to select only the top-k relevant tools per query — reducing tool token overhead by up to 95%. Web Scraping Traces — scraper.scrape(url) wraps Scrapling with full trace recording so scrape calls show up in the call tree like any other agent action. CLI — swarmtrace prints a rich call tree with costs and statuses. swarmtrace-replay replays any individual trace. swarmtrace-export dumps everything to JSON or CSV. Frontend Dashboard A React + TanStack Router frontend visualises live traces from the FastAPI backend: Stat bar — total traces, cumulative tokens, total cost, error count at a glance Call Tree — hierarchical view of parent→child agent calls for a full run Waterfall — timeline view showing which agents ran in parallel vs sequentially Token Chart — per-trace token usage over time Failures page — isolated view of every errored trace with its call chain and error message Detail Drawer — click any trace to inspect its full args, output, latency, and lineage Live Mode — polls the backend every 2 seconds for real-time trace updates Storage All traces land in a local SQLite database (~/.tracely.db) with WAL mode enabled. Auto-purges oldest rows beyond 10,000 to stay bounded. Indexed on timestamp for fast ordered reads. Export to JSON/CSV available via CLI. Stack LayerTechnologyCore libraryPython 3.8+, SQLite, contextvarsRegression LLMClaude Haiku via litaiTool selectionFAISS + sentence-transformersAPIFastAPI + PydanticFrontendReact, TanStack Router/Start, Tailwind, RechartsCLI displayrichPackagingsetuptools, pip-installable Key design decisions contextvars for parent tracking — parent IDs propagate automatically through async and threaded code without any manual wiring. Nested @observe calls build the tree on their own. SQLite over a hosted DB — zero setup for the user; works offline; the auto-purge keeps it from growing unboundedly. Graceful degradation everywhere — if sentence-transformers/FAISS aren’t installed, Tool Attention falls back to returning the first k tools. If tiktoken isn’t installed, budget tracking falls back to len // 4. Storage errors never crash the agent being traced. Current limitations Failures page still uses static demo data instead of the live API swarm_module_0–4.py are five identical placeholder files (to be collapsed into one) No authentication on the API (development only) pyproject.toml is incomplete; setup.py not yet migrated. i have to complete ui first now then i will do other api work because it will be connected to ui because it was originally built a python frame work.byee
🐝 SwarmTrace DevLog #3 — Wiring the Dashboard to Real Data June 6, 2026 /////////////////////////////////////////////////////// Today was all plumbing. No new features, no design work — just making the two halves of this project actually talk to each other. /////////////////////////////////////////////////////// Where Things Stood I had two things running independently. On one side, the FastAPI server — started it up this morning, it boots clean, the @observe decorator has been collecting real traces into SQLite every time an agent function runs. The data is there. It’s been there. On the other side, the dashboard UI — five pages, looks exactly like the design mockups, dark theme, all the charts and tables and drawers. Finished that yesterday. The problem is they had never spoken to each other. The UI was showing hardcoded numbers I typed in by hand. The API was sitting there with real data and nothing asking for it. The Work Spent today closing that gap. First thing I did was map out what each page actually needs from the backend. Overview needs health stats and an activity feed. Traces needs the full call list. Agents needs a registry of everything that’s been observed. Metrics needs cost and token breakdowns. Settings needs API key management and integration status. Then I went into the API and built those endpoints out one by one. The good news — all the underlying data was already in the database from the decorator. I wasn’t inventing anything, just exposing it in the right shape. The annoying part was that the frontend and backend had grown slightly different vocabularies. The UI expected fields named one way, the API had them named another. Duration in milliseconds vs latency in seconds. function_name vs function. Small things, but they all had to be aligned or every fetch would silently return nothing. CORS was the other thing that caught me — frontend on one port, backend on another, browser refuses to talk between them without the right middleware. Quick fix once I remembered that’s what was happening. The Moment it Clicked Started both servers. Opened the dashboard. Traces page loaded with real function names — execute_task, plan_steps, fetch_data — things I’d actually run this week. Real latencies. Real token counts. Real errors with the actual error messages. Turned on Live Mode. Ran an agent task in a separate terminal. Watched the row appear in the table a couple seconds later. That’s the thing you build toward. What’s Still Hardcoded A few things I haven’t gotten to yet. The Overview stat cards are still static numbers — need to write proper aggregation logic for those. The per-agent token sparklines are placeholder data because I’m storing traces, not time-bucketed token history per agent. Something to fix this week. Tomorrow Get the Overview cards pulling from real DB aggregations. Then figure out deployment — right now this whole thing requires running two local servers which isn’t great for a demo. Want a single public URL before the submission deadline. /////////////////////////////////////////////////////// SwarmTrace — open-source observability for multi-agent AI systems. Built for AMD Hackathon 2026.
dev vlog 3”What’s up, builders! Today we are fundamentally changing how SwarmTrace works. We’re tearing out the local SQLite restrictions and turning this project into a distributed, multi-tenant AI agent monitoring platform. The goal? Anyone can install our package, drop in an API key, and instantly view their agent’s execution traces on a sleek, hosted Next.js dashboard powered by Clerk and Supabase—without hosting a single thing themselves.” What We’re Solving Today: The “Localhost” Trap: Right now, the FastAPI backend expects to live on the same machine as the SQLite database. If a user runs an agent on their machine, they can’t easily see it on a globally hosted dashboard. Multi-Tenancy: We need to make sure User A never sees User B’s logs. Every single trace must be bound to an organization or user ID. Zero-Infra for the User: The developer using tracely should only have to pip-install it, provide a SWARMTRACE_API_KEY, and let our remote backend handle the rest. 📐 The SaaS Architecture Blueprint Here is how data will flow across the internet from your user’s local python script straight to your Vercel-hosted frontend dashboard: [ User’s Local Machine ] └── Running AI Agent (LangChain/CrewAI/AutoGen) └── Tracely SDK (Decorators) │ ▼ (Async Background HTTP POST /ingest) [ Vercel Serverless / API Gateway ] ─── (Validates SWARMTRACE_API_KEY) │ ▼ (Writes Log Payload) [ Hosted Database: Supabase / Postgres ] └── traces table (Schema: id, user_id, execution_time, trace_payload) ▲ │ (Fetches user-specific traces via Clerk JWT auth) [ Vercel Frontend: Next.js + Clerk ] └── Protected Dashboard View (Only shows rows matching user_id) 🗂️ The Technical Roadmap To pull this off, we have to transform four key elements of your repository: The SDK (tracely/scraper.py & tracer.py) Current: Writes to a local SQLite database via storage.py. SaaS Modification: Introduce a background background-worker thread or async pool. When a trace finishes, it sends an HTTP POST request to https://api.swarmtrace.dev/v1/ingest carrying the payload and an Authorization: Bearer st_live_… header. The Backend Engine (api.py) Current: Reads from local SQLite. SaaS Modification: Drop SQLite. Migrate to a hosted Postgres instance (Supabase is perfect here). Add an /ingest route for incoming agent metrics. Add middleware to validate incoming user requests from the frontend using Clerk JWT tokens. The Authentication Layer (Clerk) Wrap your frontend-next/ layout inside a . Set up a pipeline where a user logs in, generates an “Agent API Key” from their settings dashboard, and pastes that key into their Python .env file. also tracely is maded by me it is the part of swarm trace.
dev vlog #4 builders just finished the backend work for today / rest work tomorrow i will make the frontend connected to clerk for auth and neon for database . byee👍
finally live on vercel but still in deployment you can check it guys go on swarmtrace.vercel.app
Dev Vlog #6Finally, the landing page work is officially done! The platform is ready for users, and you can check it out here: swarmtrace.vercel.app.Right now, I don’t have the budget to buy a custom domain, so I have set it up on Google Search Console for now. I know that having a domain like swarmtrace.ai would help it perform much better in Google Search, since Google tends to rank subdomains poorly.That being said, the platform is still very much in the building phase. I am already working on adding some exciting new features.Stay tuned, and bye for now!
dev vlog#7today i worked on research on my project about similar projects because i cant get a .com domain hi have to buy a .ai domain and i worked on dashboard today because it was so simple then guys please suggest any improvement.
Ahh infinite .tsx bug fixing
added new features
all test are passing
does a full audit by ai agent found some production bugs working on prd section 1 because it is main it conation python package updtaes because the whole project is up to sdk byee meet in next vlog
added many features like day and night light take a tour and adjust icons sizes to a bit smaller and fixed some backend issues and run many real tests like rag agent and hermes agent and again applied for google search console ——————————————————————————————————— i need to buy a domain but i do not have money i will start marketing after buying domain byee guyss please like
adding agent graph this is mvp only i will polish it byee
today i know there is so much work left on this project then i think i added a floating side bar added some more now features for backend optimization guys working on a i3 sucks please help me to buy an macbook byyy
starting work
half work done
Ships:
the marketing was challenging and i think now it is ready and i get more suggestion if people will use it and i hope i ccan buy a domain by the star dust...
|
1793112476.2026668
|
1793198876.2026668
|
|
56409
|
WebOS Browser by @TonyStark965 | Stardance
|
TonyStark965
|
1
|
4.0
|
39
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T14:10:00Z", "hours": 4.0, "multiplier": 8.88, "payout": 39, "blessing": "neutral", "text": "This is a basic iframe loader inside a browser-looking shell, made to be implemented inside WebOS projects as their browser app. It has functional navigation buttons, an address bar, browser history, a share/copy link button, and a menu with a New Tab option that clears the history and takes you back to the home screen. It also includes some useful websites as bookmarks and allows theme synchronization with the webOS (currently only responds to my webOS). The challenging part of this project for me was getting the navigation and history logic working correctly. There are also some limitations, since not all websites allow themselves to be embedded inside an iframe. Attached below are some pictures of the browser running inside my webOS project. More details can be found in my Readme.", "repo": "https://github.com/TonyStark965-404/WebOS-Browser", "demo": "https://tonystark965-404.github.io/WebOS-Browser/"}]...
|
[{"post_id": 63454, "ts": "202 [{"post_id": 63454, "ts": "2026-09-07T09:57:45Z", "hours": 1.535, "text": "WebOS Browser DevLog 005 Possibly my final DevLog before shipping Changelog Added Browser History Added actual svg-based icons for everything Added a menu for New Tab and History options Added a Share/Copy Link button Added more websites to bookmarks The New Tab button clears your history and sends you back to the Home Page The Back button now becomes disabled when there’s nothing to go back to The forward button now disappears when there’s nothing to go forward to The Refresh button now turns into a cross button when loading (the cross button does nothing new, it still refreshes the page) Made the Top area transparent, and am currently using green color as the background, did this so it can seamlessly transition to the design of the WebOS"}, {"post_id": 63420, "ts": "2026-09-07T07:56:10Z", "hours": 1.56, "text": "WebOS Browser DevLog 004 Had to come back to this, since this is one of the Fluetro apps Changelog Removed Fluent New Tab integration Added google as the Home Page/New Tab page Added a bookmarks bar, since Fluent New Tab was removed and there won’t be a Pinned Sites section The back/forward buttons only work if you travel between websites using the bookmarks or address bar The version of google I am using here is a specific one that supports iframe so typing www.google.com or similar in the address bar will give an error The refresh button actually refreshes the page The Home button takes you to google The address bar only updates when you go from one website to another using bookmarks or address bar The back/forward buttons and address bar behave this way because there’s no way for me to fetch the URL running inside of the iframe Possible new features Browser History A hamburger button with a menu, with all the stuff from the address bar inside it"}, {"post_id": 58359, "ts": "2026-08-30T19:13:32Z", "hours": 0.6692, "text": "WebOS Browser DevLog 003 •Somewhat did the JS •Now the refresh button and home button do the exact same thing •Address Bar works for supported websites •Somehow the Error screen doesn’t work, it just gives a black screen on error, which is possibly due to me not doing the JS correctly. •The Pinned Sites and other functions on the New Tab work as intended, no issues there(even though it calls upon your browser’s dialog box for it)"}, {"post_id": 58312, "ts": "2026-08-30T18:06:34Z", "hours": 0.2572, "text": "WebOS Browser DevLog 002 •Completed the CSS (still haven’t started working on the JS) so it looks kinda normal •Found out that Bing is the only search Engine that works in the iframe environment •Right now, opening a link just opens it in a real browser tab, so I’ll have to work on that and see if it’s possible to open those in this environment. •Doing this while watching a series so it takes more time and ppl don’t complain about the time it took me to make the project while reviewing."}, {"post_id": 58289, "ts": "2026-08-30T17:43:11Z", "hours": 0.3653, "text": "WebOS Browser DevLog 001 •I said I’ll be working on Fluetro again, but I changed my mind. •So now I am making this project as a Browser that one can easily customize and integrate in their own WebOS using iframe. •Also, I am making the apps that are supposed to be included in Fluetro OS separately because it’s becoming difficult for me to handle so many variables in the js, css and html, so I am ending up reusing multiple names due to my weird variable naming scheme. •Here’s the progress so far, did some of the html, enough to get to this point, and used iframe to include use my Fluent New Tab project as the New Tab page for this Browser. •Did some of the css so the buttons in the top bar look different than our conventional HTML buttons."}]...
|
Title: WebOS Browser by @TonyStark965 | Stardance
Title: WebOS Browser by @TonyStark965 | Stardance
Devlogs:
WebOS Browser DevLog 001 •I said I’ll be working on Fluetro again, but I changed my mind. •So now I am making this project as a Browser that one can easily customize and integrate in their own WebOS using iframe. •Also, I am making the apps that are supposed to be included in Fluetro OS separately because it’s becoming difficult for me to handle so many variables in the js, css and html, so I am ending up reusing multiple names due to my weird variable naming scheme. •Here’s the progress so far, did some of the html, enough to get to this point, and used iframe to include use my Fluent New Tab project as the New Tab page for this Browser. •Did some of the css so the buttons in the top bar look different than our conventional HTML buttons.
WebOS Browser DevLog 002 •Completed the CSS (still haven’t started working on the JS) so it looks kinda normal •Found out that Bing is the only search Engine that works in the iframe environment •Right now, opening a link just opens it in a real browser tab, so I’ll have to work on that and see if it’s possible to open those in this environment. •Doing this while watching a series so it takes more time and ppl don’t complain about the time it took me to make the project while reviewing.
WebOS Browser DevLog 003 •Somewhat did the JS •Now the refresh button and home button do the exact same thing •Address Bar works for supported websites •Somehow the Error screen doesn’t work, it just gives a black screen on error, which is possibly due to me not doing the JS correctly. •The Pinned Sites and other functions on the New Tab work as intended, no issues there(even though it calls upon your browser’s dialog box for it)
WebOS Browser DevLog 004 Had to come back to this, since this is one of the Fluetro apps Changelog Removed Fluent New Tab integration Added google as the Home Page/New Tab page Added a bookmarks bar, since Fluent New Tab was removed and there won’t be a Pinned Sites section The back/forward buttons only work if you travel between websites using the bookmarks or address bar The version of google I am using here is a specific one that supports iframe so typing www.google.com or similar in the address bar will give an error The refresh button actually refreshes the page The Home button takes you to google The address bar only updates when you go from one website to another using bookmarks or address bar The back/forward buttons and address bar behave this way because there’s no way for me to fetch the URL running inside of the iframe Possible new features Browser History A hamburger button with a menu, with all the stuff from the address bar inside it
WebOS Browser DevLog 005 Possibly my final DevLog before shipping Changelog Added Browser History Added actual svg-based icons for everything Added a menu for New Tab and History options Added a Share/Copy Link button Added more websites to bookmarks The New Tab button clears your history and sends you back to the Home Page The Back button now becomes disabled when there’s nothing to go back to The forward button now disappears when there’s nothing to go forward to The Refresh button now turns into a cross button when loading (the cross button does nothing new, it still refreshes the page) Made the Top area transparent, and am currently using green color as the background, did this so it can seamlessly transition to the design of the WebOS
Ships:
This is a basic iframe loader inside a browser-looking shell, made to be implemented inside WebOS projects as their browser app. It has functional navigation buttons, an address bar, browser history, a share/copy link button, and a menu with a New Tab option that clears the history and takes you back to the home screen. It also includes some useful websites as bookmarks and allows theme synchronization with the webOS (currently only responds to my webOS). The challenging part of this project for me was getting the navigation and history logic working correctly. There are also some limitations, since not all websites allow themselves to be embedded inside an iframe. Attached below are some pictures of the browser running inside my webOS project. More details can be found in my Readme....
|
1793123683.0709593
|
1793210083.0709593
|
|
336
|
bedrockR by @xFN10x | Stardance
|
xFN10x
|
1
|
67.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T14:06:05Z", "hours": 67.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I am shipping bedrockR a3.0PRE, a pre-release to the next major alpha version a3.0. bedrockR has been my main project for about a year now, starting it in Summer Of Making last year. This is the first bedrockR pre-release, you will most likely find bugs. Please report them here Please also read https://github.com/xFN10x/bedrockR/blob/master/a3PRE-known-issues.md to make sure you aren’t reporting already known issues.", "repo": "https://github.com/xFN10x/bedrockR", "demo": "https://github.com/xFN10x/bedrockR/releases/tag/a3.0PRE"}]...
|
[{"post_id": 63553, "ts": "202 [{"post_id": 63553, "ts": "2026-09-07T13:58:20Z", "hours": 7.1344, "text": "devlog 8 It’s time… Yes, I’m finally shipping a3.0PRE. I thought i would have more time to release the whole version at once, but a new YSWS is starting today, and i haven’t released a bedrockR version in quite a while. Resource Building (again) I did fix the resources, so now they do build properly, but there are some weird bugs that i have no idea where to even start with… this is why i made a known issues file on the github, because im hoping i can narrow down what might be causing this. What to expect from this release This release is about 50% of the work that will be in a3.0, the release is lacking quite a few important things that the final release will have. Mainly workspace upgrading, new UI features, and more network features. You almost certainly WILL find bugs, I NEED these reported , I don’t want an a2.0.2 situation again, where the whole program was found to be broken AFTER I shipped. . Anyways, this might very well be the last of me on Stardance , thank you for following my code optimization journey, and I hope you enjoy bedrockR!"}, {"post_id": 60784, "ts": "2026-09-03T11:41:43Z", "hours": 3.7117, "text": "devlog 7 I wasn’t planning on making this… but seeing as im going to highschool for the first time in 30 minutes , uhhh… i think i should make this. Resource Building I finally started implementing resource building. Ive been doing all of this with plugins in mind, so its very flexible. Well, this devlog is quite short, but… oh it doesn’t work… (well ill fix it when i have time) New item & block selectors I redid the Item selector, to make it easier to use, and program with, and I also removed the old block selector, seeing as it was literally the same class, but with some slightly different filtering… This release I’ve also decided that i should probably release this version in 2 releases, a3.0PRE , and a3.0 , because i haven’t released any versions in over 4 months."}, {"post_id": 58512, "ts": "2026-08-30T22:58:50Z", "hours": 5.2397, "text": "devlog 6 this time, i didn’t take 10 hours to do something! Yes, this devlog is only ~5 hours, not 10 lime usual, however, i did actually do something. More Resource work Now, you can actually use resources. You can select them in elements, and do things to them called “Resource tasks.” You execute them by right clicking them in the workspace view. You can also FINALLY select them for blocks and such. (hopefully the video works) General UI fixes Ive also fixed some other UI things, mainly being the icons for UI looking kinda crunchy… its very obvious with the social icons. The issue was with werid java scaling stuff… but its fixed now. I also changed the icon that the program uses from 1600x1600 to 1024x1024, because of some scaling artifacts. Also, I implemented some old, custom window icons, that i never figured out how to use."}, {"post_id": 54598, "ts": "2026-08-25T16:59:29Z", "hours": 10.1442, "text": "devlog 5 i kinda underestimated how long i was coding for yesterday I did more cleaning, and some more ui stuff. One of those was the social icons. I finally finished adding back all of the RElementValues , so now i can focus on other things. One of those other things was fixing some block texture related things, like fixing a random bug i introduced, aaand also making the block downloading 10x faster…. Block Downloading It was always annoying when trying to test bedrockR on other platforms, and i would have to sit through the block downloading… so i added a way to cancel it… but now i completely negated that problem; i multi-threaded it. Yea it actually seems like its 10x faster now, which is nice. RMapValue s rework Just like with RElementValue s, the class for RMapValue was huge… so now im doing the same thing with it; seperating it into different classes. So far, i dont have many reimplemented, but thats because i was doing something else; Resource UI Yes, im finally adding the new resource UI. I’ve started with remaking the resource tab, it looks pretty good so far, but i still need to do some work. Now im gonna continue resource stuff Changelog add resource gui in RWorkspace, and icons ( c7747e9 ) Bump gradle-wrapper from 9.7.0 to 9.7.1 ( 48bbd25 ) Bump com.google.guava:guava from 33.6.0-jre to 33.7.1-jre ( 6dd20bc ) make resources appear i think ( 4ad3140 ) fix layout ( 202dae9 ) move abstract resource classes to a new package, rename some resource functions, and add new resource category function ( c351bcc ) alright, i need to lock in, so now i actually need new resource ui ( 11154bb ) fix stuff with RMapElementValues and RElementValues + random code clean ( a9d82e7 ) fix top image, and make downloading 10x faster ( d03cc6a ) rename item components, and start readding map values ( 72c30f1 )"}, {"post_id": 44934, "ts": "2026-08-11T00:52:38Z", "hours": 9.5525, "text": "devlog 4 pssst, hey i have a slack channel if you want more dev things im not rewriting everything i said again, stardance utils deleted this whole thing, instead ill give you 1 sentence bullet points: i redid the recipe screen wow it was so bad redid launch page mmm smooth animation also did a bunch of random ass things that i cant explain cause they were mostly like 1 line of code being altered… also, stardance utils doesn’t edit this textbox correctly, so below should be the changelog v Changelog make this appear on the right screen ( 6d8b140 ) make the recipe creation screen better ( 0660edd ) make this smooth ( 52e32fb ) clean ( 8e86c27 ) fix the positioning ( 2c88991 ) Bump gradle-wrapper from 9.6.1 to 9.7.0 ( 928260d ) clean, make help button a class ( 2fc07dc ) make windows open on the current screen the mouse is on ( 23ee12f ) add more greetings, and make it a record ( 6bbee27 ) fix where windows open ( f33af46 )"}, {"post_id": 42146, "ts": "2026-08-06T19:10:23Z", "hours": 9.1933, "text": "devlog 3, this is why you write clean code early ok so the dreaded day has finally come… The largest class in this program, RElementValue is finally being cleaned up. It is the thing you see when changing your settings, or when editing ANY element… it automatically changes depending on the type of the variable its targeting… but the code i wrote for it was SO BAD! 🥀 3 giant if statements, checking through each possible implemented type, making the class over 1300+ lines long. However, I finally decided to redo the whole thing to continue my “code cleaning quest” So now different types get their own classes, e. g, strings get; REStringValue booleans get; REBoolValue (not actually implemented yet), etc. And as usual, this has NO effect on the user experience, which is… great to be putting so much effort into… but it has to be done before it gets to out of hand. (I promise im gonna start doing fun stuff soon 😅) This is why you write clean code from the start."}, {"post_id": 40173, "ts": "2026-08-03T16:04:12Z", "hours": 8.5211, "text": "devlog 2, again i kinda forgot to mention this… but im completely redoing the resource system…. oh wait i already did yea i thought i said this last devlog, but cleaned more code, and redid most of the program again. Resources instead of saving to one json file with the files, now save in a structured directory system, that you can see in the screenshot. (its actually a full workspace, but you get the idea.) Resources also are now their own classes, which makes it soooo much easier to add them… they are quite similar to how i programmed elements. Right now, you can’t convert older workspaces to these new resource system one, but thatll be worked on later. Time to do some ui! (also i did more code cleaning, and i renamed a ton of stuff)"}, {"post_id": 37960, "ts": "2026-07-31T00:48:37Z", "hours": 5.9425, "text": "devlog 1 Alright, I’m actually resuming normal development. I’M NOT MAKING THAT INSTALLER. I expect to be doing a bunch of code clean, now that I have even MORE experience with java. For release a2.2, I’m planning structures , but thats gonna take a bunch of work internally… because i’ll have to redo a bunch of stuff to make this program easier to work on. I also MIGHT continue on the android version. slack channel for more updates"}, {"post_id": 23586, "ts": "2026-07-06T17:02:00Z", "hours": 2.3186, "text": "Progress is going faster than before now that im using Rider now, I have made an API for getting the versions, instead of using the latest.json file in the github, and now im using it in the installer, and next hotfix i’ll use it for bedrockR updating. Oh and bedrockR 1.3.1 is finally out now… i guess i forgot to upload the release assets when i published it…"}, {"post_id": 22285, "ts": "2026-07-04T17:50:38Z", "hours": 0.6433, "text": "Im back to working on this, stopped using visual studio because it was horrible, now im using Jetbrains Rider. Ive implemented some methods to get releases from the github, so now im gonna implement them."}, {"post_id": 7015, "ts": "2026-06-11T19:27:00Z", "hours": 4.3383, "text": "it took a long time, but i finally figured out how to style the ui, and i recreated the bedrockR style. (the versions page will be fixed soon)"}, {"post_id": 107, "ts": "2026-05-31T19:30:56Z", "hours": 0.3497, "text": "I’ve been working on creating a bedrockR installer in C#, this will be cross-platform, and it will be released with each version, handling installing, and i also might add a way to run it without installing"}]...
|
Title: bedrockR by @xFN10x | Stardance
Devlogs:
I Title: bedrockR by @xFN10x | Stardance
Devlogs:
I’ve been working on creating a bedrockR installer in C#, this will be cross-platform, and it will be released with each version, handling installing, and i also might add a way to run it without installing
it took a long time, but i finally figured out how to style the ui, and i recreated the bedrockR style. (the versions page will be fixed soon)
Im back to working on this, stopped using visual studio because it was horrible, now im using Jetbrains Rider. Ive implemented some methods to get releases from the github, so now im gonna implement them.
Progress is going faster than before now that im using Rider now, I have made an API for getting the versions, instead of using the latest.json file in the github, and now im using it in the installer, and next hotfix i’ll use it for bedrockR updating. Oh and bedrockR 1.3.1 is finally out now… i guess i forgot to upload the release assets when i published it…
devlog 1 Alright, I’m actually resuming normal development. I’M NOT MAKING THAT INSTALLER. I expect to be doing a bunch of code clean, now that I have even MORE experience with java. For release a2.2, I’m planning structures , but thats gonna take a bunch of work internally… because i’ll have to redo a bunch of stuff to make this program easier to work on. I also MIGHT continue on the android version. slack channel for more updates
devlog 2, again i kinda forgot to mention this… but im completely redoing the resource system…. oh wait i already did yea i thought i said this last devlog, but cleaned more code, and redid most of the program again. Resources instead of saving to one json file with the files, now save in a structured directory system, that you can see in the screenshot. (its actually a full workspace, but you get the idea.) Resources also are now their own classes, which makes it soooo much easier to add them… they are quite similar to how i programmed elements. Right now, you can’t convert older workspaces to these new resource system one, but thatll be worked on later. Time to do some ui! (also i did more code cleaning, and i renamed a ton of stuff)
devlog 3, this is why you write clean code early ok so the dreaded day has finally come… The largest class in this program, RElementValue is finally being cleaned up. It is the thing you see when changing your settings, or when editing ANY element… it automatically changes depending on the type of the variable its targeting… but the code i wrote for it was SO BAD! 🥀 3 giant if statements, checking through each possible implemented type, making the class over 1300+ lines long. However, I finally decided to redo the whole thing to continue my “code cleaning quest” So now different types get their own classes, e. g, strings get; REStringValue booleans get; REBoolValue (not actually implemented yet), etc. And as usual, this has NO effect on the user experience, which is… great to be putting so much effort into… but it has to be done before it gets to out of hand. (I promise im gonna start doing fun stuff soon 😅) This is why you write clean code from the start.
devlog 4 pssst, hey i have a slack channel if you want more dev things im not rewriting everything i said again, stardance utils deleted this whole thing, instead ill give you 1 sentence bullet points: i redid the recipe screen wow it was so bad redid launch page mmm smooth animation also did a bunch of random ass things that i cant explain cause they were mostly like 1 line of code being altered… also, stardance utils doesn’t edit this textbox correctly, so below should be the changelog v Changelog make this appear on the right screen ( 6d8b140 ) make the recipe creation screen better ( 0660edd ) make this smooth ( 52e32fb ) clean ( 8e86c27 ) fix the positioning ( 2c88991 ) Bump gradle-wrapper from 9.6.1 to 9.7.0 ( 928260d ) clean, make help button a class ( 2fc07dc ) make windows open on the current screen the mouse is on ( 23ee12f ) add more greetings, and make it a record ( 6bbee27 ) fix where windows open ( f33af46 )
devlog 5 i kinda underestimated how long i was coding for yesterday I did more cleaning, and some more ui stuff. One of those was the social icons. I finally finished adding back all of the RElementValues , so now i can focus on other things. One of those other things was fixing some block texture related things, like fixing a random bug i introduced, aaand also making the block downloading 10x faster…. Block Downloading It was always annoying when trying to test bedrockR on other platforms, and i would have to sit through the block downloading… so i added a way to cancel it… but now i completely negated that problem; i multi-threaded it. Yea it actually seems like its 10x faster now, which is nice. RMapValue s rework Just like with RElementValue s, the class for RMapValue was huge… so now im doing the same thing with it; seperating it into different classes. So far, i dont have many reimplemented, but thats because i was doing something else; Resource UI Yes, im finally adding the new resource UI. I’ve started with remaking the resource tab, it looks pretty good so far, but i still need to do some work. Now im gonna continue resource stuff Changelog add resource gui in RWorkspace, and icons ( c7747e9 ) Bump gradle-wrapper from 9.7.0 to 9.7.1 ( 48bbd25 ) Bump com.google.guava:guava from 33.6.0-jre to 33.7.1-jre ( 6dd20bc ) make resources appear i think ( 4ad3140 ) fix layout ( 202dae9 ) move abstract resource classes to a new package, rename some resource functions, and add new resource category function ( c351bcc ) alright, i need to lock in, so now i actually need new resource ui ( 11154bb ) fix stuff with RMapElementValues and RElementValues + random code clean ( a9d82e7 ) fix top image, and make downloading 10x faster ( d03cc6a ) rename item components, and start readding map values ( 72c30f1 )
devlog 6 this time, i didn’t take 10 hours to do something! Yes, this devlog is only ~5 hours, not 10 lime usual, however, i did actually do something. More Resource work Now, you can actually use resources. You can select them in elements, and do things to them called “Resource tasks.” You execute them by right clicking them in the workspace view. You can also FINALLY select them for blocks and such. (hopefully the video works) General UI fixes Ive also fixed some other UI things, mainly being the icons for UI looking kinda crunchy… its very obvious with the social icons. The issue was with werid java scaling stuff… but its fixed now. I also changed the icon that the program uses from 1600x1600 to 1024x1024, because of some scaling artifacts. Also, I implemented some old, custom window icons, that i never figured out how to use.
devlog 7 I wasn’t planning on making this… but seeing as im going to highschool for the first time in 30 minutes , uhhh… i think i should make this. Resource Building I finally started implementing resource building. Ive been doing all of this with plugins in mind, so its very flexible. Well, this devlog is quite short, but… oh it doesn’t work… (well ill fix it when i have time) New item & block selectors I redid the Item selector, to make it easier to use, and program with, and I also removed the old block selector, seeing as it was literally the same class, but with some slightly different filtering… This release I’ve also decided that i should probably release this version in 2 releases, a3.0PRE , and a3.0 , because i haven’t released any versions in over 4 months.
devlog 8 It’s time… Yes, I’m finally shipping a3.0PRE. I thought i would have more time to release the whole version at once, but a new YSWS is starting today, and i haven’t released a bedrockR version in quite a while. Resource Building (again) I did fix the resources, so now they do build properly, but there are some weird bugs that i have no idea where to even start with… this is why i made a known issues file on the github, because im hoping i can narrow down what might be causing this. What to expect from this release This release is about 50% of the work that will be in a3.0, the release is lacking quite a few important things that the final release will have. Mainly workspace upgrading, new UI features, and more network features. You almost certainly WILL find bugs, I NEED these reported , I don’t want an a2.0.2 situation again, where the whole program was found to be broken AFTER I shipped. . Anyways, this might very well be the last of me on Stardance , thank you for following my code optimization journey, and I hope you enjoy bedrockR!
Ships:
I am shipping bedrockR a3.0PRE, a pre-release to the next major alpha version a3.0. bedrockR has been my main project for about a year now, starting it in Summer Of Making last year. This is the first bedrockR pre-release, you will most likely find bugs. Please report them here Please also read https://github.com/xFN10x/bedrockR/blob/master/a3PRE-known-issues.md to make sure you aren’t reporting already known issues....
|
1793148595.8503776
|
1793234995.8503776
|
|
52767
|
Aviation Trivia by @nurofenracealasigripa | Starda Aviation Trivia by @nurofenracealasigripa | Stardance...
|
nurofenracealasigripa
|
1
|
16.0
|
250
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T14:01:03Z", "hours": 16.0, "multiplier": 15.86, "payout": 250, "blessing": "neutral", "text": "Aviation trivia is a cozy quiz game that has questions about aviation. I was made ebtierly in vs code with c++ and SFML. Features: -A simple user interface that can be understood by everyone -Chill music to help you relax -The game keeps track of games played, no of right and wrong answers and rate of right answers -You can chose if you want the intro or not -How to play guide -40+ questions -Chose how many questions do you want to have To have a succesfull instalation please refer to the github readme All art is made by me in piskel For feedback acces this link: https://docs.google.com/forms/d/e/1FAIpQLSd_PYRWfn150R5Bi3gj90nlJ-TgKZuzrlvwGKAd-GypAZUxvg/viewform?usp=header Here is a video of some gameplay: https://youtu.be/YEtsLT6En9I I hope you enjoy the game Note: this is only v1.0.0 so there will be future updates. If you have any ideas for something for the game please leave the in the feedback form.", "repo": "https://github.com/stoicaandrei-blip/Aviation-Trivia", "demo": "https://github.com/stoicaandrei-blip/Aviation-Trivia/releases/tag/V1.0.0"}]...
|
[{"post_id": 63530, "ts": "202 [{"post_id": 63530, "ts": "2026-09-07T13:19:48Z", "hours": 0.6086, "text": "Devlog 15: I finished the first version of the game. I added some chill music and a reset button. I will prepare the game for release now :]"}, {"post_id": 63507, "ts": "2026-09-07T12:25:22Z", "hours": 2.2594, "text": "Devlog 15: I added a feature that lets you pick how many questions you want: between 1 and 25. I also added the settings page which right now let’s you only toggle a button that makes the game skip the intro. I also dont’t think i will be able to finish the game and polish it before stardance ends. I don’t think i will do the advancements page or the SFX for the buttons. I will add them with some more questions but later. Right now i will add music, finish the Settings page, add a button to reset the stats."}, {"post_id": 61470, "ts": "2026-09-04T12:26:59Z", "hours": 1.1767, "text": "Devlog 14: I added all the commands that you can input in the terminal of the game. i wanted to use cin, but the game would freeze. I did some research and found out i needed to use multiple CPU threads. after i found out how to do that i just needed to add all commands to the game. Also, now when a file is missing the game also tells you the name of the file.Next i will probably add settings or some more questions :]"}, {"post_id": 60789, "ts": "2026-09-03T11:48:49Z", "hours": 1.0572, "text": "devlog 13: I finally finished the how to play menu. I wrote it thinking about the final game some some things that i wrote about are not yet implemented. it has 6 sections: buttons, playing, customizing, settings, achievments and commands. I dindn’t manage to add 50 questions but now we have 11 instead of 3. there was a minor bug where if you pressed an arrow to navigate the how to play section it would jump some of them. The fix was putting else if insted of just if. Next i will add a feature letting you pick how many questions you have in the quiz: between 1-25. And i will work on the terminal commands i want to add :]"}, {"post_id": 60376, "ts": "2026-09-02T17:49:15Z", "hours": 1.5639, "text": "Devlog 12: i worked a bit more on the more menu. i added a credits button that takes you to a menu where you can see where are all credits. there is also an how to play button that takes you to a menu where you can see an in dept guide about everything in the game. But due to the font spritesheet not having some things it sound kinda rudimentary. I wrote only the first section of the guide. next i will finish the guide and add 50 questions. I also made it so that every x button closes the game and there are now arrows to navigate the menus. :]"}, {"post_id": 59765, "ts": "2026-09-01T18:11:51Z", "hours": 1.1528, "text": "Devlog 11: i added a couple of things . First of all, now the x button on the right closes the game in whichever part of the game you are. i added an arrow in the left that returns to the last menu. Next i made it so that the variables for the stats page update correctly and are saved. I also started working on the more button that takes you to a menu in which you currently have 2 buttons - feedback and more games - which do exactly waht they sound like. next i will try to finish the more menu and work on reformating the score display + a reset stats button. :]"}, {"post_id": 59533, "ts": "2026-09-01T12:21:37Z", "hours": 0.6633, "text": "Devlog 10: I started working on the menus. first of all i removed the airplane from the quiz part of the game. The i added a stats menu that displays numebr of right and wrong answers, games played and the rate at which you make right choices. right now it is just a menu and it can read from a file with the stats. next i will need to make it so that the game updates the variables every time you play."}, {"post_id": 58923, "ts": "2026-08-31T14:20:51Z", "hours": 0.5006, "text": "Devlog 9: firstly there was a bug where if you pressed on the upper side of the play button the game would kinda glitch because you would also click on the bottom selection box of the quiz. i tried adding a timer but didn’t since i already knew i needed to move the question more to the middle so i just did that. Next i made it so that the background is the same as for the menu but i will probably change it evantually. Since the font is black and the background is dark, some things wouldn’s be so visible, so this is what i did: for the question i added a strip that runs across the screen and i like how it turned out and for the score i just moved it to the left where it is more visible. Next i will change the quiz’s background and i should really start working on the menu. i also need to think about other background for the other menus. Any idea is appreciated :]"}, {"post_id": 58880, "ts": "2026-08-31T13:36:54Z", "hours": 0.4594, "text": "Devlog 8: For this one i just rearanged the menu buttons from the middle to the down-left. I also spent quite some time painting the background image. Side note : something i don’t like about stardance is that for software projects it only counts the time spent coding. For this image i spent like an hour making it but only the 2 minutes spent adding it counted which drives me crazy. Whatever, next i will start working on the other menus :]"}, {"post_id": 56760, "ts": "2026-08-28T17:25:04Z", "hours": 1.0386, "text": "Devlog 7: I finished the quiz part of the game! Now the game shuffles the question order. After you give your answer the game waits 3 seconds and the procedes to the next question. First i didn’t shuffle the question order, but when i wanted to add that i forgot to clear a vector and to update a variable which led to some time spent debugging. I also made it so that the exit button becomes highlighted when you hover over it. next i will work on the art and the menus. :]"}, {"post_id": 56611, "ts": "2026-08-28T13:08:24Z", "hours": 0.9617, "text": "Devlog 6: I started working on the quiz game itself. I added 4 boxes where the answers will be. If you hover the mouse over them they become highlighted. When pressing on one of the, if the answer is correct, the box becomes green. If you press the wrong one it becomes red and the right one becomes green. There was a bug where after you already selected something you could select more boxes. Next, i will add more questions and a score counter."}, {"post_id": 55545, "ts": "2026-08-27T13:53:43Z", "hours": 0.7539, "text": "Devlog 5: I made a spritesheet for the custom font and it works. i also made the play button functional and it currently displays only the first question when you click on it. There is a problem tho: the answers never get reshuffled after each round. Also there was a problem with the font because each letter is 5x5 but M was 6x5. It took me a bit to realise. Next i will work in the quiz part !"}, {"post_id": 55502, "ts": "2026-08-27T12:03:36Z", "hours": 0.415, "text": "Before i start with the devlog, i have a problem : yestarday morning i saw that where it would normally say the time logged it said couldn’t load time. I checked hackatime and it had a problem with the server - whatever. The part that bugs me happend later when the servers came back up and i could make a devlog. I wrote it, posted it, but when i went to check it it didn’t exist. When i went back to the home page it said AGAIN that it couldn’t load time spent coding. I went to check hackatime and i saw that it logged time correctly. For the rest of the day i couldn’t make any devlog which made me lose my streak. i don’t know if this happened to anybody else, but it was annoying. Whatever, let’s start with what happened. Devlog 4: i have drawn some of the buttons neccesary and added a close one that closes the game. In my other games the exit button was rectangular, but for this one i chose to make it round since it takes less space and looks a bit better in my opinion. Next i will make a custom font spritesheet and make the quiz part of the game. :]"}, {"post_id": 55182, "ts": "2026-08-26T18:03:37Z", "hours": 0.99, "text": "Devlog 3: I started working on the intro, which is some text fading to black.I had an issue where the screen would go from white to black instantlly, but a minor tweak to the code fixed it. I also added the more button and drawn some other ones. Next, i will focus on macking the gam itself and then the menus. ;]"}, {"post_id": 53624, "ts": "2026-08-24T08:36:49Z", "hours": 0.7069, "text": "Devlog 2: First i transformed the file that handles question loading into a header file to keep things organized. Then i started adding graphics to the game but there was an issue: the screen was white when it needed to look like in the video - it turned out it was because of a function that was interfering with the screen. Now there is a temporary background and i added a button to see how it would look. Next i will add an intro and work on some art :] Also, the video shows the button changing when you hover the mouse over it"}, {"post_id": 53012, "ts": "2026-08-23T12:13:40Z", "hours": 1.4308, "text": "Devlog 1: I started working on a trivia game that has questions about aviation. It will have graphics, but right now i just finished the question adding system: Basically there is a txt file that is structured like this: total number of questions Question1|Correct answe|Wrong answer|wrong answer|wrong answer|number of points … The code reads the number of questions and then adds each thing to it’s own vector for storage. I made it so that the answers to the question would be shuffled each time. There was also a bug where the code wouldn’t read the whole question but only the first word- it turns out you have to use getline. Next i will start Working on some art for the game!"}]...
|
Title: Aviation Trivia by @nurofenracealasigripa | Title: Aviation Trivia by @nurofenracealasigripa | Stardance
Devlogs:
Devlog 1: I started working on a trivia game that has questions about aviation. It will have graphics, but right now i just finished the question adding system: Basically there is a txt file that is structured like this: total number of questions Question1|Correct answe|Wrong answer|wrong answer|wrong answer|number of points … The code reads the number of questions and then adds each thing to it’s own vector for storage. I made it so that the answers to the question would be shuffled each time. There was also a bug where the code wouldn’t read the whole question but only the first word- it turns out you have to use getline. Next i will start Working on some art for the game!
Devlog 2: First i transformed the file that handles question loading into a header file to keep things organized. Then i started adding graphics to the game but there was an issue: the screen was white when it needed to look like in the video - it turned out it was because of a function that was interfering with the screen. Now there is a temporary background and i added a button to see how it would look. Next i will add an intro and work on some art :] Also, the video shows the button changing when you hover the mouse over it
Devlog 3: I started working on the intro, which is some text fading to black.I had an issue where the screen would go from white to black instantlly, but a minor tweak to the code fixed it. I also added the more button and drawn some other ones. Next, i will focus on macking the gam itself and then the menus. ;]
Before i start with the devlog, i have a problem : yestarday morning i saw that where it would normally say the time logged it said couldn’t load time. I checked hackatime and it had a problem with the server - whatever. The part that bugs me happend later when the servers came back up and i could make a devlog. I wrote it, posted it, but when i went to check it it didn’t exist. When i went back to the home page it said AGAIN that it couldn’t load time spent coding. I went to check hackatime and i saw that it logged time correctly. For the rest of the day i couldn’t make any devlog which made me lose my streak. i don’t know if this happened to anybody else, but it was annoying. Whatever, let’s start with what happened. Devlog 4: i have drawn some of the buttons neccesary and added a close one that closes the game. In my other games the exit button was rectangular, but for this one i chose to make it round since it takes less space and looks a bit better in my opinion. Next i will make a custom font spritesheet and make the quiz part of the game. :]
Devlog 5: I made a spritesheet for the custom font and it works. i also made the play button functional and it currently displays only the first question when you click on it. There is a problem tho: the answers never get reshuffled after each round. Also there was a problem with the font because each letter is 5x5 but M was 6x5. It took me a bit to realise. Next i will work in the quiz part !
Devlog 6: I started working on the quiz game itself. I added 4 boxes where the answers will be. If you hover the mouse over them they become highlighted. When pressing on one of the, if the answer is correct, the box becomes green. If you press the wrong one it becomes red and the right one becomes green. There was a bug where after you already selected something you could select more boxes. Next, i will add more questions and a score counter.
Devlog 7: I finished the quiz part of the game! Now the game shuffles the question order. After you give your answer the game waits 3 seconds and the procedes to the next question. First i didn’t shuffle the question order, but when i wanted to add that i forgot to clear a vector and to update a variable which led to some time spent debugging. I also made it so that the exit button becomes highlighted when you hover over it. next i will work on the art and the menus. :]
Devlog 8: For this one i just rearanged the menu buttons from the middle to the down-left. I also spent quite some time painting the background image. Side note : something i don’t like about stardance is that for software projects it only counts the time spent coding. For this image i spent like an hour making it but only the 2 minutes spent adding it counted which drives me crazy. Whatever, next i will start working on the other menus :]
Devlog 9: firstly there was a bug where if you pressed on the upper side of the play button the game would kinda glitch because you would also click on the bottom selection box of the quiz. i tried adding a timer but didn’t since i already knew i needed to move the question more to the middle so i just did that. Next i made it so that the background is the same as for the menu but i will probably change it evantually. Since the font is black and the background is dark, some things wouldn’s be so visible, so this is what i did: for the question i added a strip that runs across the screen and i like how it turned out and for the score i just moved it to the left where it is more visible. Next i will change the quiz’s background and i should really start working on the menu. i also need to think about other background for the other menus. Any idea is appreciated :]
Devlog 10: I started working on the menus. first of all i removed the airplane from the quiz part of the game. The i added a stats menu that displays numebr of right and wrong answers, games played and the rate at which you make right choices. right now it is just a menu and it can read from a file with the stats. next i will need to make it so that the game updates the variables every time you play.
Devlog 11: i added a couple of things . First of all, now the x button on the right closes the game in whichever part of the game you are. i added an arrow in the left that returns to the last menu. Next i made it so that the variables for the stats page update correctly and are saved. I also started working on the more button that takes you to a menu in which you currently have 2 buttons - feedback and more games - which do exactly waht they sound like. next i will try to finish the more menu and work on reformating the score display + a reset stats button. :]
Devlog 12: i worked a bit more on the more menu. i added a credits button that takes you to a menu where you can see where are all credits. there is also an how to play button that takes you to a menu where you can see an in dept guide about everything in the game. But due to the font spritesheet not having some things it sound kinda rudimentary. I wrote only the first section of the guide. next i will finish the guide and add 50 questions. I also made it so that every x button closes the game and there are now arrows to navigate the menus. :]
devlog 13: I finally finished the how to play menu. I wrote it thinking about the final game some some things that i wrote about are not yet implemented. it has 6 sections: buttons, playing, customizing, settings, achievments and commands. I dindn’t manage to add 50 questions but now we have 11 instead of 3. there was a minor bug where if you pressed an arrow to navigate the how to play section it would jump some of them. The fix was putting else if insted of just if. Next i will add a feature letting you pick how many questions you have in the quiz: between 1-25. And i will work on the terminal commands i want to add :]
Devlog 14: I added all the commands that you can input in the terminal of the game. i wanted to use cin, but the game would freeze. I did some research and found out i needed to use multiple CPU threads. after i found out how to do that i just needed to add all commands to the game. Also, now when a file is missing the game also tells you the name of the file.Next i will probably add settings or some more questions :]
Devlog 15: I added a feature that lets you pick how many questions you want: between 1 and 25. I also added the settings page which right now let’s you only toggle a button that makes the game skip the intro. I also dont’t think i will be able to finish the game and polish it before stardance ends. I don’t think i will do the advancements page or the SFX for the buttons. I will add them with some more questions but later. Right now i will add music, finish the Settings page, add a button to reset the stats.
Devlog 15: I finished the first version of the game. I added some chill music and a reset button. I will prepare the game for release now :]
Ships:
Aviation trivia is a cozy quiz game that has questions about aviation. I was made ebtierly in vs code with c++ and SFML. Features: -A simple user interface that can be understood by everyone -Chill music to help you relax -The game keeps track of games played, no of right and wrong answers and rate of right answers -You can chose if you want the intro or not -How to play guide -40+ questions -Chose how many questions do you want to have To have a succesfull instalation please refer to the github readme All art is made by me in piskel For feedback acces this link: https://docs.google.com/forms/d/e/1FAIpQLSd_PYRWfn150R5Bi3gj90nlJ-TgKZuzrlvwGKAd-GypAZUxvg/viewform?usp=header Here is a video of some gameplay: https://youtu.be/YEtsLT6En9I I hope you enjoy the game Note: this is only v1.0.0 so there will be future updates. If you have any ideas for something for the game please leave the in the feedback form....
|
1792878607.1965184
|
1793742607.1965184
|
|
58544
|
Mario Kart Track Randomizer by @Mintia11 | Stardan Mario Kart Track Randomizer by @Mintia11 | Stardance...
|
Mintia11
|
1
|
2.0
|
6
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T13:50:44Z", "hours": 2.0, "multiplier": 2.89, "payout": 6, "blessing": "neutral", "text": "Hii everyone, I just finished this simple Mario Kart track chooser, making it work well on mobile was one of my priorities and i think that i succeded, hope that at least someone will use this in their game nights, it’s made for Mario Kart 8 Deluxe and it even gives out tracks from the CTGP Deluxe mod so if someone uses modded and doesn’t want to choose the tracks to play himself it should work well", "repo": "https://github.com/Mintia11/mariokart-randomizer", "demo": "https://mintia11.github.io/mariokart-randomizer/"}]...
|
[{"post_id": 63544, "ts": "202 [{"post_id": 63544, "ts": "2026-09-07T13:48:34Z", "hours": 0.9231, "text": "Hii everyone, i just added the last finishing touches and i made it work better on mobile"}, {"post_id": 62166, "ts": "2026-09-05T13:00:31Z", "hours": 1.0878, "text": "Hiii everyone, I built a silly Mario Kart track randomizer to use when I play modded with my friends. I think I should add some more miscellaneous options, lol maybe like per-console tracks or something in that ballpark"}]...
|
Title: Mario Kart Track Randomizer by @Mintia11 | Title: Mario Kart Track Randomizer by @Mintia11 | Stardance
Devlogs:
Hiii everyone, I built a silly Mario Kart track randomizer to use when I play modded with my friends. I think I should add some more miscellaneous options, lol maybe like per-console tracks or something in that ballpark
Hii everyone, i just added the last finishing touches and i made it work better on mobile
Ships:
Hii everyone, I just finished this simple Mario Kart track chooser, making it work well on mobile was one of my priorities and i think that i succeded, hope that at least someone will use this in their game nights, it’s made for Mario Kart 8 Deluxe and it even gives out tracks from the CTGP Deluxe mod so if someone uses modded and doesn’t want to choose the tracks to play himself it should work well...
|
1793087837.345587
|
1793174237.345587
|
|
38290
|
CJnacar by @cjnew | Stardance
|
cjnew
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T13:17:06Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created a personal website, which is a comeback for me to create this again. The process itself was fun and enjoying. The most notable problems I had were I forgot mostly the syntax and functionality of CSS and JS, which is a lot if combined both of them. So, I kept everything simple for now as far as I could. And also added some animations to make it lively. The website overall mostly contains my small CS projects and my Artwork Gallery (which I’m proud of). Hope you enjoy exploring my website!", "repo": "https://github.com/carl08gitrithub/personal-website", "demo": "https://carl08gitrithub.github.io/personal-website/"}]...
|
[{"post_id": 41920, "ts": "202 [{"post_id": 41920, "ts": "2026-08-06T13:22:58Z", "hours": 1.5892, "text": "Dev blog #4 Big changes were made for my personal website, especially to “artworks” section, were I added my artworks [pics] and formatted them. And also added a modal functionality inspired by W3Schools [which really helped me a lot]. Added a background for my “projects” section and hover effect, to make a contrast and visibility within the site [btw, the github cards are clickable]. Only the last section left: contacts. Pls feel free to leave comments :) For my next TO DOs: format the contacts section add a logo for the website [maybe] a custom cursor???"}, {"post_id": 39891, "ts": "2026-08-03T05:29:57Z", "hours": 2.2794, "text": "𝐃𝐄𝐕 𝐛𝐥𝐨𝐠 #𝟑 I just got back now cuz due to my college exam from the past week :( But, I’m happy now I’m starting to make a progress, as you can I’ve reformatted my “home” and “projects” section. The [github card] links are also clickable; I used a third-party app to make the cards. This is it for today :) Next tasks: add a little animation for the cards start formatting the “artwork” section"}, {"post_id": 36326, "ts": "2026-07-28T11:37:53Z", "hours": 2.1714, "text": "𝐃𝐄𝐕 𝐛𝐥𝐨𝐠 #𝟐 It’s been a long time since I updated my personal website. So, I tried applying the chosen color scheme, I like mostly something pastel color, and “welcoming” feeling for the website. And I tried to make a somewhat me with my cat (sorry for the drawing it was made with a mouse). And second, I actually made the navigation bar work (disclaimer: I used AI for help). Next task is, to apply changes to the other sections. So, my 𝑛𝑒𝑥𝑡 𝑝𝑙𝑎𝑛: create a simple logo for my website add some digital drawings add maybe small animations Pls feel free to give feedback/comments :)"}, {"post_id": 33421, "ts": "2026-07-23T10:47:15Z", "hours": 0.8672, "text": "First draft of my personal website, it’s pretty simple for now. Just testing how will be the general structure looks like (i apologized for not showing a sketch; i don’t usually do it e.g. figma design). And to be honest, this is kind of refreshing, cuz we had this in school, but it was really a long time ago…. so I forgot most about it. But hopefully I’ll enjoy this process again. My future plans: to improve the layout maybe add some digital art (really simple one just to give it a character) unified color theme and typography (not an expert) Will soon make updates busy with school life :) …Hoping to complete this project. Happy for suggestions."}]...
|
Title: CJnacar by @cjnew | Stardance
Devlogs:
Fir Title: CJnacar by @cjnew | Stardance
Devlogs:
First draft of my personal website, it’s pretty simple for now. Just testing how will be the general structure looks like (i apologized for not showing a sketch; i don’t usually do it e.g. figma design). And to be honest, this is kind of refreshing, cuz we had this in school, but it was really a long time ago…. so I forgot most about it. But hopefully I’ll enjoy this process again. My future plans: to improve the layout maybe add some digital art (really simple one just to give it a character) unified color theme and typography (not an expert) Will soon make updates busy with school life :) …Hoping to complete this project. Happy for suggestions.
𝐃𝐄𝐕 𝐛𝐥𝐨𝐠 #𝟐 It’s been a long time since I updated my personal website. So, I tried applying the chosen color scheme, I like mostly something pastel color, and “welcoming” feeling for the website. And I tried to make a somewhat me with my cat (sorry for the drawing it was made with a mouse). And second, I actually made the navigation bar work (disclaimer: I used AI for help). Next task is, to apply changes to the other sections. So, my 𝑛𝑒𝑥𝑡 𝑝𝑙𝑎𝑛: create a simple logo for my website add some digital drawings add maybe small animations Pls feel free to give feedback/comments :)
𝐃𝐄𝐕 𝐛𝐥𝐨𝐠 #𝟑 I just got back now cuz due to my college exam from the past week :( But, I’m happy now I’m starting to make a progress, as you can I’ve reformatted my “home” and “projects” section. The [github card] links are also clickable; I used a third-party app to make the cards. This is it for today :) Next tasks: add a little animation for the cards start formatting the “artwork” section
Dev blog #4 Big changes were made for my personal website, especially to “artworks” section, were I added my artworks [pics] and formatted them. And also added a modal functionality inspired by W3Schools [which really helped me a lot]. Added a background for my “projects” section and hover effect, to make a contrast and visibility within the site [btw, the github cards are clickable]. Only the last section left: contacts. Pls feel free to leave comments :) For my next TO DOs: format the contacts section add a logo for the website [maybe] a custom cursor???
Ships:
I created a personal website, which is a comeback for me to create this again. The process itself was fun and enjoying. The most notable problems I had were I forgot mostly the syntax and functionality of CSS and JS, which is a lot if combined both of them. So, I kept everything simple for now as far as I could. And also added some animations to make it lively. The website overall mostly contains my small CS projects and my Artwork Gallery (which I’m proud of). Hope you enjoy exploring my website!...
|
1793087386.4708984
|
1793173786.4708984
|
|
51814
|
Pulse Website by @jinjin | Stardance
|
jinjin
|
1
|
78.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T12:52:03Z", "hours": 78.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What I Made I built Pulse Website, a clean, lightweight, and customizable start page designed to replace your browser’s default new tab page. It features an instant-load layout, custom menu navigation, aesthetic UI designs, dynamic weather integration, and NASA API data fetching. What Was Challenging Debugging & Refactoring: Spending hours hunting down edge-case bugs while refining the UI layout and responsiveness. API Integration: Fetching and processing data smoothly from external sources (like NASA APIs and weather tools) while keeping the page lightweight and fast. UI Design: Balancing custom aesthetic designs with a minimal, clutter-free user experience. What I’m Proud Of Logging 78 total hours across 11 devlogs to build a full custom solution from scratch. Successfully integrating real-time weather and NASA API features. Creating a fast, zero-bloat start page that loads instantly on every new tab.", "repo": "https://github.com/jinjintt89-cmyk/New-pulse", "demo": "https://custom-new-tab-page-eight.vercel.app/"}]...
|
[{"post_id": 63508, "ts": "202 [{"post_id": 63508, "ts": "2026-09-07T12:27:54Z", "hours": 3.1069, "text": "Today I spent some time going through the code and making it feel more human-written and easier to understand. I cleaned up parts of the code that were messy or overly complicated, renamed a few things to make their purpose clearer, and removed some unnecessary code. I also made a few small improvements to how different parts of the website work together. It wasn’t a huge feature, but cleaning up the code now should make it much easier to add more features later without everything becoming a mess."}, {"post_id": 57213, "ts": "2026-08-29T10:01:14Z", "hours": 14.2, "text": "Today I worked on adding more features to Pulse Website and making the start page feel more useful. I added and refined several smaller features around the main interface, making sure everything worked together without making the page feel cluttered. I also spent time testing the new functionality and fixing small issues that appeared while using it. The goal is to keep building Pulse into a start page that actually feels worth using every time I open a new tab."}, {"post_id": 55285, "ts": "2026-08-27T00:41:43Z", "hours": 8.0667, "text": "Today I focused on improving the overall layout of Pulse Website. I adjusted the spacing, positioning, and sizing of different sections so everything feels more balanced. I also cleaned up a few areas that felt too crowded and made the important information easier to find at a glance. These changes are mostly visual, but they make a big difference when using the website. I want Pulse to feel clean and simple while still having plenty of useful features."}, {"post_id": 55108, "ts": "2026-08-26T15:53:16Z", "hours": 7.435, "text": "Today I worked on improving the navigation around Pulse Website. I made the different sections easier to access and cleaned up some of the interactions between the menu and the main page. I also tested the navigation in different situations to make sure it felt consistent instead of having buttons or sections behave differently. The changes make Pulse feel more like a complete start page rather than just a collection of features. There is still more I want to add, but the overall experience is starting to come together."}, {"post_id": 54821, "ts": "2026-08-25T23:36:23Z", "hours": 11.6667, "text": "Today I spent some time improving the visual design of Pulse Website. I adjusted the styling of different components, cleaned up some inconsistent elements, and made the overall interface feel more polished. I also worked on making the layout look good without sacrificing the simplicity of the start page. A lot of the work was focused on small details that are easy to overlook, but together they make the website feel much more finished."}, {"post_id": 54318, "ts": "2026-08-25T08:26:08Z", "hours": 17.035, "text": "Today I worked on adding a calendar feature to Pulse Website. I wanted the calendar to be simple enough to use quickly while still fitting naturally into the rest of the start page. I worked on displaying the dates clearly, handling navigation between months, and making sure the calendar matched the overall design. I also fixed a few small issues I found while testing it. It’s another useful feature that makes Pulse more practical as an everyday new-tab page."}, {"post_id": 51548, "ts": "2026-08-21T09:48:48Z", "hours": 2.1333, "text": "Today I worked on adding weather information to Pulse Website. I connected the website to a weather API so the start page can display current weather information without needing to open another website. I worked on handling the API response and displaying the information in a way that fits naturally into the existing layout. I also spent some time testing different weather conditions and fixing small issues with loading and displaying the data. This makes Pulse feel much more useful as an everyday new-tab page."}, {"post_id": 51352, "ts": "2026-08-20T23:36:01Z", "hours": 11.2683, "text": "Today I added a timer feature to Pulse Website. I wanted the timer to be something I could quickly use without opening another app or website. I worked on the controls for starting, pausing, and resetting the timer, while also making sure the display was easy to read. I tested the timer several times and fixed a few small issues with the controls and countdown. It fits nicely alongside the other utilities on the start page and makes Pulse a little more useful for everyday tasks."}, {"post_id": 50922, "ts": "2026-08-20T12:05:29Z", "hours": 0.9425, "text": "Debuging code"}, {"post_id": 50890, "ts": "2026-08-20T11:03:08Z", "hours": 1.1333, "text": "Today I started working on one of the bigger features for Pulse Website: NASA data. I integrated NASA’s public API and began experimenting with pulling useful data directly into the start page. The main goal was to make the website feel more interesting every time it is opened, rather than showing the exact same information every day. Getting the API responses working correctly took some debugging, especially around loading states and handling the data returned by NASA. I also worked on fitting the new information into the existing UI without making the page feel overcrowded. This is probably one of the coolest additions to Pulse so far, and I want to expand the NASA features even more."}, {"post_id": 50865, "ts": "2026-08-20T09:55:26Z", "hours": 0.8706, "text": "Writing the code - still not finished"}]...
|
Title: Pulse Website by @jinjin | Stardance
Devlo Title: Pulse Website by @jinjin | Stardance
Devlogs:
Writing the code - still not finished
Today I started working on one of the bigger features for Pulse Website: NASA data. I integrated NASA’s public API and began experimenting with pulling useful data directly into the start page. The main goal was to make the website feel more interesting every time it is opened, rather than showing the exact same information every day. Getting the API responses working correctly took some debugging, especially around loading states and handling the data returned by NASA. I also worked on fitting the new information into the existing UI without making the page feel overcrowded. This is probably one of the coolest additions to Pulse so far, and I want to expand the NASA features even more.
Debuging code
Today I added a timer feature to Pulse Website. I wanted the timer to be something I could quickly use without opening another app or website. I worked on the controls for starting, pausing, and resetting the timer, while also making sure the display was easy to read. I tested the timer several times and fixed a few small issues with the controls and countdown. It fits nicely alongside the other utilities on the start page and makes Pulse a little more useful for everyday tasks.
Today I worked on adding weather information to Pulse Website. I connected the website to a weather API so the start page can display current weather information without needing to open another website. I worked on handling the API response and displaying the information in a way that fits naturally into the existing layout. I also spent some time testing different weather conditions and fixing small issues with loading and displaying the data. This makes Pulse feel much more useful as an everyday new-tab page.
Today I worked on adding a calendar feature to Pulse Website. I wanted the calendar to be simple enough to use quickly while still fitting naturally into the rest of the start page. I worked on displaying the dates clearly, handling navigation between months, and making sure the calendar matched the overall design. I also fixed a few small issues I found while testing it. It’s another useful feature that makes Pulse more practical as an everyday new-tab page.
Today I spent some time improving the visual design of Pulse Website. I adjusted the styling of different components, cleaned up some inconsistent elements, and made the overall interface feel more polished. I also worked on making the layout look good without sacrificing the simplicity of the start page. A lot of the work was focused on small details that are easy to overlook, but together they make the website feel much more finished.
Today I worked on improving the navigation around Pulse Website. I made the different sections easier to access and cleaned up some of the interactions between the menu and the main page. I also tested the navigation in different situations to make sure it felt consistent instead of having buttons or sections behave differently. The changes make Pulse feel more like a complete start page rather than just a collection of features. There is still more I want to add, but the overall experience is starting to come together.
Today I focused on improving the overall layout of Pulse Website. I adjusted the spacing, positioning, and sizing of different sections so everything feels more balanced. I also cleaned up a few areas that felt too crowded and made the important information easier to find at a glance. These changes are mostly visual, but they make a big difference when using the website. I want Pulse to feel clean and simple while still having plenty of useful features.
Today I worked on adding more features to Pulse Website and making the start page feel more useful. I added and refined several smaller features around the main interface, making sure everything worked together without making the page feel cluttered. I also spent time testing the new functionality and fixing small issues that appeared while using it. The goal is to keep building Pulse into a start page that actually feels worth using every time I open a new tab.
Today I spent some time going through the code and making it feel more human-written and easier to understand. I cleaned up parts of the code that were messy or overly complicated, renamed a few things to make their purpose clearer, and removed some unnecessary code. I also made a few small improvements to how different parts of the website work together. It wasn’t a huge feature, but cleaning up the code now should make it much easier to add more features later without everything becoming a mess.
Ships:
What I Made I built Pulse Website, a clean, lightweight, and customizable start page designed to replace your browser’s default new tab page. It features an instant-load layout, custom menu navigation, aesthetic UI designs, dynamic weather integration, and NASA API data fetching. What Was Challenging Debugging & Refactoring: Spending hours hunting down edge-case bugs while refining the UI layout and responsiveness. API Integration: Fetching and processing data smoothly from external sources (like NASA APIs and weather tools) while keeping the page lightweight and fast. UI Design: Balancing custom aesthetic designs with a minimal, clutter-free user experience. What I’m Proud Of Logging 78 total hours across 11 devlogs to build a full custom solution from scratch. Successfully integrating real-time weather and NASA API features. Creating a fast, zero-bloat start page that loads instantly on every new tab....
|
1792875222.4840136
|
1793739222.4840136
|
|
57156
|
mail.swrg by @swargaraj | Stardance
|
swargaraj
|
1
|
21.0
|
361
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T12:49:16Z", "hours": 21.0, "multiplier": 17.54, "payout": 361, "blessing": "neutral", "text": "mail.swrg · a fast, minimal, disposable inbox Every sketchy site wants your email before showing you anything. That used to mean either handing over your real inbox to the spam pipeline or juggling slow, ad-infested temp-mail sites with clutter everywhere. I built mail.swrg: a fast, minimal disposable email service. What it does: One click → instant random address like [email protected] Incoming mail shows up automatically Clean inbox UI: dark, distraction-free, zero ads, zero trackers Keep / reuse your address across sessions with one-click export & import (save the session file, load it anywhere later) Wipe — delete the entire mailbox anytime, nothing lingers Everything runs on Cloudflare edge: Workers, D1, Email Routing Why I’m being honest about “fast”: mail takes about ~10 seconds to appear. Most mail clients hold outgoing messages in a queue for ~5s before actually sending them, and the inbox refreshes every ~5s after that. So if you test it and nothing shows instantly, give it a second. It’s on them, not us.", "repo": "https://gitlab.com/swrg/mail", "demo": "https://mail.swrg.dev"}]...
|
[{"post_id": 63515, "ts": "202 [{"post_id": 63515, "ts": "2026-09-07T12:45:06Z", "hours": 2.6211, "text": "#7 - it’s done the inbox now says “Pulling Emails” until the first fetch is done. way less confusing. added a small note in the footer that mail takes ~10s to show up bc most mail clients hold ur email in a queue for 5s before sending. and i spent way too long on scrollbar-gutter not working in chrome. works in firefox. anyway the project is actually finished now. it opens fast, it doesn’t freeze, and im not touching it anymore. thanks for reading i guess, this is the last one. gg"}, {"post_id": 62917, "ts": "2026-09-06T13:40:14Z", "hours": 1.3333, "text": "6th - Another cleanup session. moved message fetching to tanstack query so i could delete like 50 lines of manual polling code. fixed the notification sound not playing (browser autoplay policy is annoying). fixed delete mailbox clearing localStorage even when the server request fails. added error handling in a bunch of places where it was missing. removed dead code. tanstack query is really nice once you set it up but the default behavior around networkMode: \"online\" and staleTime can bite you. the query just silently skips if youre offline which is confusing thats it"}, {"post_id": 62760, "ts": "2026-09-06T08:52:08Z", "hours": 1.2008, "text": "#5 - Did a lot of cleanup. first thing, the refresh system was kinda broken? so i had to refactor the whole countdown logic in use-refresh.tsx to use a ref flag instead. also figured out that messages were being fetched TWICE. like useMessages had its own refetchInterval: 5000 AND useRefresh was doing the same thing with its own interval. so now useRefresh is the single source of truth for polling and i removed the redundant one from useMessages. also cleaned up a bunch of stuff that was just… messy: extracted validateSession, exportSession, and STORAGE_KEY to lib/utils.ts because they were duplicated across files the delete button had no confirmation dialog, now it has useCopyToClipboard had a timeout leak where if you copied twice fast the old timeout would still fire. fixed that with a ref the delete handler now reloads the page after success so it auto-creates a new mailbox also the countdown was ticking even when there was no session (like after deleting) which made no sense so now it checks if a session exists before counting down anyway thats pretty much it. next up i actually need to get the inbox working"}, {"post_id": 62733, "ts": "2026-09-06T07:23:56Z", "hours": 2.0186, "text": "#4 - To add a way to export and import mail sessions, i added two buttons in the header. one for export, one for import. export was pretty simple. to import, we read the file, parse the JSON, and then validate it. validateSession function checks if the object has address and key and that theyre both non-empty strings. now i wanted two different states: if the file is valid -> show a warning “this will overwrite your current session, u sure?” if the file is invalid -> just show an error with the Alert component used AlertDialog from cossui for both. the valid one has a Cancel and Continue button, and the invalid one just shows the error in a red Alert and an OK button to close also had to make sure the dialog state is controlled with open and onOpenChange because otherwise it wouldnt close properly after importing. next up i wanna work on the inbox and make it actually look good when theres no emails"}, {"post_id": 62672, "ts": "2026-09-06T04:49:19Z", "hours": 2.3631, "text": "#3 - Now i needed rate limiting because without it anyone could just spam the API and create like a million mailboxes which would be really bad. so i started looking into how to do this with cloudflare workers because thats what im using and they have this fancy Rate Limiting Binding that looked really clean. you just add some config to wrangler.toml, add the binding to your code, and boom - rate limiting. so i added the bindings, deployed, tested… and nothing. like the binding was there, wrangler showed it in the deploy output, i could even see it in the cloudflare dashboard. but when i actually hit the API with like 8 requests in a row, every single one went through. no 429s, nothing. i spent way too long on this. i was reading the docs, checking if my plan supported it, checking if the binding was actually being called, trying different keys… nothing worked. the binding just silently does nothing. like it deploys fine but then just… doesnt do anything? i dont even know whats wrong at this point. so after giving up on the official way, i just went with D1. yeah the database. im literally storing rate limit counters in a sql table which is… not great for performance obviously because now every single request has to do a database query just to check if youre rate limited. but hey at least it actually works. so right now every POST to /mailboxes does a SELECT on the rate_limits table, checks the count, either increments it or creates a new row, and THEN does the actual mailbox creation. so youre looking at like 2 extra database queries per request just for rate limiting. its not ideal but its what i got. hopefully i figure out the cloudflare one someday because this is genuinely a worse solution in every way except that it works. but for now it prevents abuse so whatever. anyway thats where im at. rate limiting works but its slow."}, {"post_id": 62214, "ts": "2026-09-05T14:03:57Z", "hours": 1.7353, "text": "#2 - For the ui i went with shadcn but not the default one, im using the coss ui variant which has nicer colors and the components feel more polished. the buttons and inputs have this subtle shadow thing that looks clean in dark mode. for state management im keeping it simple, just storing the address and recovery key in localStorage. on first load if theres nothing in storage it auto creates a mailbox. the key is needed for every request so without it you cant read any messages. when you delete the mailbox it clears storage and resets everything. right now the ui has a header with refresh and delete buttons, an input group showing the address with a copy button. gonna add the inbox next…"}, {"post_id": 62128, "ts": "2026-09-05T11:47:07Z", "hours": 9.3033, "text": "#1 - Had a domain lying around, so I thought, why not put it to some use? so basically i wanted a temp mail service. nothing crazy, just something that works fast and especially no ads . been sitting on the idea for a while and finally started it this week. first 2 days were basically me fighting cloudflare email routing. had no idea how workers could intercept emails before this. like the concept is simple but actually getting it to work took way longer than i expected. the worker handles everything now. creating mailboxes, storing incoming emails, serving them through the api. used hono for routing which is surprisingly nice for workers. postal-mime for parsing the raw email content. d1 for the database. pretty straightforward stack honestly. Still need to build the frontend properly but the backend is solid."}]...
|
Title: mail.swrg by @swargaraj | Stardance
Devlog Title: mail.swrg by @swargaraj | Stardance
Devlogs:
#1 - Had a domain lying around, so I thought, why not put it to some use? so basically i wanted a temp mail service. nothing crazy, just something that works fast and especially no ads . been sitting on the idea for a while and finally started it this week. first 2 days were basically me fighting cloudflare email routing. had no idea how workers could intercept emails before this. like the concept is simple but actually getting it to work took way longer than i expected. the worker handles everything now. creating mailboxes, storing incoming emails, serving them through the api. used hono for routing which is surprisingly nice for workers. postal-mime for parsing the raw email content. d1 for the database. pretty straightforward stack honestly. Still need to build the frontend properly but the backend is solid.
#2 - For the ui i went with shadcn but not the default one, im using the coss ui variant which has nicer colors and the components feel more polished. the buttons and inputs have this subtle shadow thing that looks clean in dark mode. for state management im keeping it simple, just storing the address and recovery key in localStorage. on first load if theres nothing in storage it auto creates a mailbox. the key is needed for every request so without it you cant read any messages. when you delete the mailbox it clears storage and resets everything. right now the ui has a header with refresh and delete buttons, an input group showing the address with a copy button. gonna add the inbox next…
#3 - Now i needed rate limiting because without it anyone could just spam the API and create like a million mailboxes which would be really bad. so i started looking into how to do this with cloudflare workers because thats what im using and they have this fancy Rate Limiting Binding that looked really clean. you just add some config to wrangler.toml, add the binding to your code, and boom - rate limiting. so i added the bindings, deployed, tested… and nothing. like the binding was there, wrangler showed it in the deploy output, i could even see it in the cloudflare dashboard. but when i actually hit the API with like 8 requests in a row, every single one went through. no 429s, nothing. i spent way too long on this. i was reading the docs, checking if my plan supported it, checking if the binding was actually being called, trying different keys… nothing worked. the binding just silently does nothing. like it deploys fine but then just… doesnt do anything? i dont even know whats wrong at this point. so after giving up on the official way, i just went with D1. yeah the database. im literally storing rate limit counters in a sql table which is… not great for performance obviously because now every single request has to do a database query just to check if youre rate limited. but hey at least it actually works. so right now every POST to /mailboxes does a SELECT on the rate_limits table, checks the count, either increments it or creates a new row, and THEN does the actual mailbox creation. so youre looking at like 2 extra database queries per request just for rate limiting. its not ideal but its what i got. hopefully i figure out the cloudflare one someday because this is genuinely a worse solution in every way except that it works. but for now it prevents abuse so whatever. anyway thats where im at. rate limiting works but its slow.
#4 - To add a way to export and import mail sessions, i added two buttons in the header. one for export, one for import. export was pretty simple. to import, we read the file, parse the JSON, and then validate it. validateSession function checks if the object has address and key and that theyre both non-empty strings. now i wanted two different states: if the file is valid -> show a warning “this will overwrite your current session, u sure?” if the file is invalid -> just show an error with the Alert component used AlertDialog from cossui for both. the valid one has a Cancel and Continue button, and the invalid one just shows the error in a red Alert and an OK button to close also had to make sure the dialog state is controlled with open and onOpenChange because otherwise it wouldnt close properly after importing. next up i wanna work on the inbox and make it actually look good when theres no emails
#5 - Did a lot of cleanup. first thing, the refresh system was kinda broken? so i had to refactor the whole countdown logic in use-refresh.tsx to use a ref flag instead. also figured out that messages were being fetched TWICE. like useMessages had its own refetchInterval: 5000 AND useRefresh was doing the same thing with its own interval. so now useRefresh is the single source of truth for polling and i removed the redundant one from useMessages. also cleaned up a bunch of stuff that was just… messy: extracted validateSession, exportSession, and STORAGE_KEY to lib/utils.ts because they were duplicated across files the delete button had no confirmation dialog, now it has useCopyToClipboard had a timeout leak where if you copied twice fast the old timeout would still fire. fixed that with a ref the delete handler now reloads the page after success so it auto-creates a new mailbox also the countdown was ticking even when there was no session (like after deleting) which made no sense so now it checks if a session exists before counting down anyway thats pretty much it. next up i actually need to get the inbox working
6th - Another cleanup session. moved message fetching to tanstack query so i could delete like 50 lines of manual polling code. fixed the notification sound not playing (browser autoplay policy is annoying). fixed delete mailbox clearing localStorage even when the server request fails. added error handling in a bunch of places where it was missing. removed dead code. tanstack query is really nice once you set it up but the default behavior around networkMode: "online" and staleTime can bite you. the query just silently skips if youre offline which is confusing thats it
#7 - it’s done the inbox now says “Pulling Emails” until the first fetch is done. way less confusing. added a small note in the footer that mail takes ~10s to show up bc most mail clients hold ur email in a queue for 5s before sending. and i spent way too long on scrollbar-gutter not working in chrome. works in firefox. anyway the project is actually finished now. it opens fast, it doesn’t freeze, and im not touching it anymore. thanks for reading i guess, this is the last one. gg
Ships:
mail.swrg · a fast, minimal, disposable inbox Every sketchy site wants your email before showing you anything. That used to mean either handing over your real inbox to the spam pipeline or juggling slow, ad-infested temp-mail sites with clutter everywhere. I built mail.swrg: a fast, minimal disposable email service. What it does: One click → instant random address like [email protected] Incoming mail shows up automatically Clean inbox UI: dark, distraction-free, zero ads, zero trackers Keep / reuse your address across sessions with one-click export & import (save the session file, load it anywhere later) Wipe — delete the entire mailbox anytime, nothing lingers Everything runs on Cloudflare edge: Workers, D1, Email Routing Why I’m being honest about “fast”: mail takes about ~10 seconds to appear. Most mail clients hold outgoing messages in a queue for ~5s before actually sending them, and the inbox refreshes every ~5s after that. So if you test it and nothing shows instantly, give it a second. It’s on them, not us....
|
1792878430.8921032
|
1793742430.8921032
|
|
59370
|
pulse-tab by @shaaz | Stardance
|
shaaz
|
1
|
6.02
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T12:22:28Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Pulse Tab is a modern, customizable new-tab dashboard featuring a live clock, weather, web search, quick links, themes, accent colors, smooth animations, and a glassmorphism UI. Everything is deployed and working on GitHub Pages. This was really amazing experience.. I loved to develop this tab:) This project was unguided btw!!!", "repo": "https://github.com/shaazumer066-bot/pulse-tab", "demo": "https://shaazumer066-bot.github.io/pulse-tab/"}]...
|
[{"post_id": 64209, "ts": "202 [{"post_id": 64209, "ts": "2026-09-08T13:18:35Z", "hours": 0.2903, "text": "upgraded pulse-tab to simple look……."}, {"post_id": 64032, "ts": "2026-09-08T04:48:15Z", "hours": 0.7333, "text": "added some new features"}, {"post_id": 63505, "ts": "2026-09-07T12:19:08Z", "hours": 5.1308, "text": "Finished Pulse Tab, a modern and customizable new-tab dashboard built with HTML, CSS, and JavaScript. It includes a live clock and date, location-based weather, web search, quick links, custom themes and accent colors, smooth animations, and a glassmorphism-style UI."}]...
|
Title: pulse-tab by @shaaz | Stardance
Devlogs:
F Title: pulse-tab by @shaaz | Stardance
Devlogs:
Finished Pulse Tab, a modern and customizable new-tab dashboard built with HTML, CSS, and JavaScript. It includes a live clock and date, location-based weather, web search, quick links, custom themes and accent colors, smooth animations, and a glassmorphism-style UI.
added some new features
upgraded pulse-tab to simple look…….
Ships:
Pulse Tab is a modern, customizable new-tab dashboard featuring a live clock, weather, web search, quick links, themes, accent colors, smooth animations, and a glassmorphism UI. Everything is deployed and working on GitHub Pages. This was really amazing experience.. I loved to develop this tab:) This project was unguided btw!!!...
|
1792878656.2789013
|
1793742656.2789013
|
|
59366
|
oggy000 by @tahsinraiyan330 | Stardance
|
tahsinraiyan330
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T12:11:51Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Actually, I can not build the full slack bot. I can not un it for 24/7", "repo": "https://github.com/tahsinraiyan330/newwsss", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354?_gl=1*rrz3ch*_gcl_au*MTUwODY5NzUyMi4xNzg3MzYyODI5"}]...
|
[{"post_id": 63503, "ts": "202 [{"post_id": 63503, "ts": "2026-09-07T12:07:35Z", "hours": 0.6742, "text": "I have built the slack bot but can not run it for 24/7"}]...
|
Title: oggy000 by @tahsinraiyan330 | Stardance
De Title: oggy000 by @tahsinraiyan330 | Stardance
Devlogs:
I have built the slack bot but can not run it for 24/7
Ships:
Actually, I can not build the full slack bot. I can not un it for 24/7...
|
1793130466.1592758
|
1793216866.1592758
|
|
58522
|
vyora by @chestagahlawat06 | Stardance
|
chestagahlawat06
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T12:00:40Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an interactive space learning platform where learning is fun. The biggest problem i faced was to create texture on the earth of my home screen. I hope you would love the project.", "repo": "https://github.com/chestagahlawat6-maker/Vyora", "demo": "https://vyora-two.vercel.app/"}]...
|
[{"post_id": 63499, "ts": "202 [{"post_id": 63499, "ts": "2026-09-07T11:56:35Z", "hours": 0.7344, "text": "hi i am working on a interactive space learning platform ….. first design of my home screen without any texture on earth…"}, {"post_id": 62248, "ts": "2026-09-05T14:55:04Z", "hours": 1.1342, "text": "hi I am chesta. I am working on vyora an interactive space learning platform…..Finally completed the home screen"}]...
|
Title: vyora by @chestagahlawat06 | Stardance
Dev Title: vyora by @chestagahlawat06 | Stardance
Devlogs:
hi I am chesta. I am working on vyora an interactive space learning platform…..Finally completed the home screen
hi i am working on a interactive space learning platform ….. first design of my home screen without any texture on earth…
Ships:
I made an interactive space learning platform where learning is fun. The biggest problem i faced was to create texture on the earth of my home screen. I hope you would love the project....
|
1793087827.8028615
|
1793174227.8028615
|
|
56946
|
Mfp my first project by @Huzaifah_Iswardi | Starda Mfp my first project by @Huzaifah_Iswardi | Stardance...
|
Huzaifah_Iswardi
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T11:54:55Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Here i make a slack bot where you can enter custom prompt or command to the bot and the bot answer it. The most challenging part of making this bot is when running at nest for 24/7. You can use it by going into slack bot-spam channel and type /a-bot-standup It will answer your command with “Rawr!” /a-bot-catfact This command will tell you a random cat fact the way it work is collecting data from a website through a code /a-bot-joke Same as number 2 but it will tell you a random funny joke. This work best when you are bored 🥱.", "repo": "https://github.com/fah67425/bookish-octo-adventure", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354"}]...
|
[{"post_id": 63457, "ts": "202 [{"post_id": 63457, "ts": "2026-09-07T10:08:33Z", "hours": 0.7186, "text": "hello world, programmers and other people. im working on my first project which is a slack bot it might look boring but its really cool and awesome. help me reach 90 stardust b4 the end of the month pls i beg every of the viewer 🙏🙏. currently, my nest application review is still pending."}]...
|
Title: Mfp my first project by @Huzaifah_Iswardi | Title: Mfp my first project by @Huzaifah_Iswardi | Stardance
Devlogs:
hello world, programmers and other people. im working on my first project which is a slack bot it might look boring but its really cool and awesome. help me reach 90 stardust b4 the end of the month pls i beg every of the viewer 🙏🙏. currently, my nest application review is still pending.
Ships:
Here i make a slack bot where you can enter custom prompt or command to the bot and the bot answer it. The most challenging part of making this bot is when running at nest for 24/7. You can use it by going into slack bot-spam channel and type /a-bot-standup It will answer your command with “Rawr!” /a-bot-catfact This command will tell you a random cat fact the way it work is collecting data from a website through a code /a-bot-joke Same as number 2 but it will tell you a random funny joke. This work best when you are bored 🥱....
|
1793083640.0624878
|
1793170040.0624878
|
|
48121
|
macOS Sleep Disabler by @hackyc | Stardance
|
hackyc
|
3
|
15.0
|
20
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T11:40:42Z", "hours": 9.0, "multiplier": 12.64, "payout": 0, "blessing": "neutral", "text": "What did you make? I added a Sleep Scheduler to the macOS app. Users can choose days, hours, and minutes, then force the Mac to sleep when the countdown ends. It saves the last schedule, works from the menu bar, and includes lid-closed and sleep-disabled safety options. What was challenging? The hardest part was connecting the scheduler to existing power-management behavior safely. The app must restore disabled sleep settings before forcing sleep. I also had to keep the menu-bar countdown current, detect lid changes, save settings, and prevent conflicting scheduler states. What are you proud of? I am proud that the scheduler feels integrated instead of separate. It reuses the native pressure-and-hold steppers, keeps control positions stable, restores saved values on startup, and gives useful menu-bar feedback. The safety conditions make it more practical for real MacBook use. What should people know so they can test your project? Download, extract and open Sleep Disabler.app , then configure the Sleep Scheduler with a short duration. Ensure the pmset permission rule is enabled first. Test menu-bar quick start, saved values after relaunch, lid-open cancellation, and the sleep-disabled condition. Avoid testing if you have unsaved work!!!", "repo": "https://github.com/HanYC666/MacOS-Sleep-Disabler", "demo": "https://github.com/HanYC666/MacOS-Sleep-Disabler/releases/"}, {"ship_num": 2, "ts": "2026-09-04T07:52:45Z", "hours": 3.0, "multiplier": 4.39, "payout": 14, "blessing": "neutral", "text": "Added 2 new features: Battery failsafe - configure the battery level to force your Mac to sleep so it doesn’t hard shutdown from low battery. Lid Dimmer - turns display brightness to 0% when the disabler is activated and the laptop screen is closed. Very useful to save power (~2-5w on display), and prevent OLED burn in for the rumoured M6 Macbook Pro! Lid Dimmer arrows have trackpad pressure sensitive adjustment precision! Very cool!!! Fixed the show window button glitch where it would summon a window every time you click it, resulting in a “infinite window” glitch.", "repo": "https://github.com/HanYC666/MacOS-Sleep-Disabler", "demo": "https://github.com/HanYC666/MacOS-Sleep-Disabler/releases/"}, {"ship_num": 3, "ts": "2026-08-15T11:59:19Z", "hours": 3.0, "multiplier": 2.01, "payout": 6, "blessing": "neutral", "text": "This is the most lightweight sleep disabler on Earth. Works on any apple silicone (M1, M2 etc) Mac. Solved the annoying Macbook Pro notch block problem! Unresolved : no Apple Developer account to sign/notarise the .app bundle so you will have try launch the app, then go to Settings -> Privacy & Security, scroll to the very bottom and click allow.", "repo": "https://github.com/HanYC666/MacOS-Sleep-Disabler", "demo": "https://github.com/HanYC666/MacOS-Sleep-Disabler/releases/"}]...
|
[{"post_id": 63487, "ts": "202 [{"post_id": 63487, "ts": "2026-09-07T11:28:00Z", "hours": 9.2192, "text": "[2026-09-07] - v1.3.0 Added- Added Sleep Scheduler, which can force the Mac to sleep after a configurable days, hours, and minutes countdown. Added persistent scheduler duration settings and restored them automatically at launch. Added a menu-bar quick action to start the last configured scheduler duration. Added a live remaining-time row to the menu-bar menu while a scheduler is active. Added an optional closed-lid condition that prevents starting the scheduler with an open lid and cancels an active scheduler when the lid opens. Added an optional sleep-disabled condition that only permits scheduling while Sleep Disabler is active and cancels the scheduler when normal sleep is restored. Added scheduler documentation to the README. Changed Updated forced-sleep handling to restore disabled sleep settings before issuing pmset sleepnow . Rebuilt the distributable Sleep Disabler.app bundle with the scheduler changes. Fixed Enabled continuous press-and-hold tracking for the native scheduler steppers. Fixed the scheduler control layout so numeric-width changes do not move the stepper arrows."}, {"post_id": 55462, "ts": "2026-08-27T10:13:10Z", "hours": 2.6892, "text": "Complete UI rework. New features: battery failsafe (arrow buttons are trackpad pressure sensitive!), screen dimmer."}, {"post_id": 49442, "ts": "2026-08-18T09:01:54Z", "hours": 0.485, "text": "Readme rewritten"}, {"post_id": 47439, "ts": "2026-08-15T11:27:05Z", "hours": 0.5761, "text": "Default installation to windowed mode to prevent Macbook Pro annoying notch that blocks menue bar items. Photo below is default installtion."}, {"post_id": 47408, "ts": "2026-08-15T10:09:45Z", "hours": 2.6375, "text": "Got the main app working in window mode!"}]...
|
Title: macOS Sleep Disabler by @hackyc | Stardance Title: macOS Sleep Disabler by @hackyc | Stardance
Devlogs:
Got the main app working in window mode!
Default installation to windowed mode to prevent Macbook Pro annoying notch that blocks menue bar items. Photo below is default installtion.
Readme rewritten
Complete UI rework. New features: battery failsafe (arrow buttons are trackpad pressure sensitive!), screen dimmer.
[2026-09-07] - v1.3.0 Added- Added Sleep Scheduler, which can force the Mac to sleep after a configurable days, hours, and minutes countdown. Added persistent scheduler duration settings and restored them automatically at launch. Added a menu-bar quick action to start the last configured scheduler duration. Added a live remaining-time row to the menu-bar menu while a scheduler is active. Added an optional closed-lid condition that prevents starting the scheduler with an open lid and cancels an active scheduler when the lid opens. Added an optional sleep-disabled condition that only permits scheduling while Sleep Disabler is active and cancels the scheduler when normal sleep is restored. Added scheduler documentation to the README. Changed Updated forced-sleep handling to restore disabled sleep settings before issuing pmset sleepnow . Rebuilt the distributable Sleep Disabler.app bundle with the scheduler changes. Fixed Enabled continuous press-and-hold tracking for the native scheduler steppers. Fixed the scheduler control layout so numeric-width changes do not move the stepper arrows.
Ships:
This is the most lightweight sleep disabler on Earth. Works on any apple silicone (M1, M2 etc) Mac. Solved the annoying Macbook Pro notch block problem! Unresolved : no Apple Developer account to sign/notarise the .app bundle so you will have try launch the app, then go to Settings -> Privacy & Security, scroll to the very bottom and click allow.
Added 2 new features: Battery failsafe - configure the battery level to force your Mac to sleep so it doesn’t hard shutdown from low battery. Lid Dimmer - turns display brightness to 0% when the disabler is activated and the laptop screen is closed. Very useful to save power (~2-5w on display), and prevent OLED burn in for the rumoured M6 Macbook Pro! Lid Dimmer arrows have trackpad pressure sensitive adjustment precision! Very cool!!! Fixed the show window button glitch where it would summon a window every time you click it, resulting in a “infinite window” glitch.
What did you make? I added a Sleep Scheduler to the macOS app. Users can choose days, hours, and minutes, then force the Mac to sleep when the countdown ends. It saves the last schedule, works from the menu bar, and includes lid-closed and sleep-disabled safety options. What was challenging? The hardest part was connecting the scheduler to existing power-management behavior safely. The app must restore disabled sleep settings before forcing sleep. I also had to keep the menu-bar countdown current, detect lid changes, save settings, and prevent conflicting scheduler states. What are you proud of? I am proud that the scheduler feels integrated instead of separate. It reuses the native pressure-and-hold steppers, keeps control positions stable, restores saved values on startup, and gives useful menu-bar feedback. The safety conditions make it more practical for real MacBook use. What should people know so they can test your project? Download, extract and open Sleep Disabler.app , then configure the Sleep Scheduler with a short duration. Ensure the pmset permission rule is enabled first. Test menu-bar quick start, saved values after relaunch, lid-open cancellation, and the sleep-disabled condition. Avoid testing if you have unsaved work!!!...
|
1792878678.8473167
|
1793742678.8473167
|
|
55918
|
gameswar by @Mariyalayathinsrikrishna | Stardance
|
Mariyalayathinsrikrishna
|
1
|
40.0
|
411
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T11:02:47Z", "hours": 40.0, "multiplier": 10.18, "payout": 411, "blessing": "neutral", "text": "I learned how to design a futuristic space game interface. I learned how to display important information like score, health, level, coins, and experience. I understood how buttons such as Menu, Pause, and Sound can improve game control. I also learned how visual effects, spaceships, enemies, and animations create an attractive game environment. Overall, this project helped me improve my skills in game UI design and web development.", "repo": "https://github.com/yathin-srikrishna/gamewar", "demo": "https://gamewar-seven.vercel.app/"}]...
|
[{"post_id": 63470, "ts": "202 [{"post_id": 63470, "ts": "2026-09-07T10:47:23Z", "hours": 7.3222, "text": "finally my golden space war game is ready to launch make a try and cross my highest record all suggestions and improvements are accepted"}, {"post_id": 62330, "ts": "2026-09-05T17:10:52Z", "hours": 7.2111, "text": "Implemented alerts system that warns when health is less than 40% and fixed first option in rewards for more gameplay"}, {"post_id": 60978, "ts": "2026-09-03T17:39:09Z", "hours": 5.4506, "text": "Implemented mobile responsive joystick that responds with touch the layout is flexible with screen size and grid system for smooth and interactive experience"}, {"post_id": 60446, "ts": "2026-09-02T19:39:16Z", "hours": 6.0614, "text": "This project is a space shooting game where the player controls a spaceship and shoots incoming enemy objects. The game includes enemy targets, bullets, stars, and player movement, creating an interactive arcade-style gaming experience."}, {"post_id": 59622, "ts": "2026-09-01T15:19:30Z", "hours": 6.5306, "text": "a Space War 180° arcade-style game where the player controls a spaceship using WASD/arrow interface of the game"}, {"post_id": 58662, "ts": "2026-08-31T04:49:16Z", "hours": 7.8072, "text": "start my game project it as taking a shape step by step excited to complete as soon as possible"}]...
|
Title: gameswar by @Mariyalayathinsrikrishna | Sta Title: gameswar by @Mariyalayathinsrikrishna | Stardance
Devlogs:
start my game project it as taking a shape step by step excited to complete as soon as possible
a Space War 180° arcade-style game where the player controls a spaceship using WASD/arrow interface of the game
This project is a space shooting game where the player controls a spaceship and shoots incoming enemy objects. The game includes enemy targets, bullets, stars, and player movement, creating an interactive arcade-style gaming experience.
Implemented mobile responsive joystick that responds with touch the layout is flexible with screen size and grid system for smooth and interactive experience
Implemented alerts system that warns when health is less than 40% and fixed first option in rewards for more gameplay
finally my golden space war game is ready to launch make a try and cross my highest record all suggestions and improvements are accepted
Ships:
I learned how to design a futuristic space game interface. I learned how to display important information like score, health, level, coins, and experience. I understood how buttons such as Menu, Pause, and Sound can improve game control. I also learned how visual effects, spaceships, enemies, and animations create an attractive game environment. Overall, this project helped me improve my skills in game UI design and web development....
|
1792878466.0110948
|
1793742466.0110948
|
|
21478
|
BodyAtlas by @yashasvib | Stardance
|
yashasvib
|
3
|
23.0
|
302
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T10:09:19Z", "hours": 1.0, "multiplier": 9.85, "payout": 12, "blessing": "neutral", "text": "hi guys !! (read the other ships before to know but the project) this is going to be short cuz i only wanted to increase the data base and its quite easy …but I added Only very very few question because i have EXAMS !! but its okay ill manage in future .. so i guess that’s all !! BYE !!", "repo": "https://github.com/yashasvi-2012-star/BodyAtlas", "demo": "https://bodyatlas-omega.vercel.app/"}, {"ship_num": 2, "ts": "2026-07-01T08:22:47Z", "hours": 13.0, "multiplier": 14.35, "payout": 185, "blessing": "neutral", "text": "HEY !!! this is a webs.. that lets you explore human body and it is called BodyAtlas .when opened it first land on a landing page where date , day, time are displayed and there is also a section about this project . then it takes you to main page where there is a main screen with a left , right panel , dock at bottom . in the main screen initially i thought to add maybe like a 3d body which can rotate and do cool stuff but there were no free options so i had to change my plan and do a 2d one . tho I’m not that disappointed how good 2-d also looks !!! RIGHT? . i have also added spots (HOTSPOTS ) where when you click opens there information in the right side located info panel witch have a inbuilt the database for source . the bottom dock have options for organ which you can visit . the left panel is the most important because it have two part the medicines hub and body system . when you select a body system from the given option the respective organs glow telling you about the organs involved . in the medicine hub there are two options the quiz (YAS !! actually working quiz )and a how does it work ? option when opened takes you to a screen where you can explore the various things like diseases , medicines , medical tests, surgeries , body processes and instrument using animated video which are taken frame Youtube and the credits goes to their respective owners . i have also added a challenge mode where you can select difficulty and topic and it will give you questions , for each answer you gain points and for each wrong answer your points are deducted this project has been a important part of my whole stardance journey hope you like it !!! BYE !!!", "repo": "https://github.com/yashasvi-2012-star/BodyAtlas", "demo": "https://bodyatlas-omega.vercel.app/"}, {"ship_num": 3, "ts": "2026-06-25T12:38:05Z", "hours": 9.0, "multiplier": 12.05, "payout": 105, "blessing": "neutral", "text": "HEY !!! this is a webs.. that lets you explore human body and it is called BodyAtlas .when opened it first land on a landing page where date , day, time are displayed and there is also a section about this project . then it takes you to main page where there is a main screen with a left , right panel , dock at bottom . in the main screen initially i thought to add maybe like a 3d body which can rotate and do cool stuff but there were no free options so i had to change my plan and do a 2d one . tho I’m not that disappointed how good 2-d also looks !!! RIGHT? . i have also added spots (HOTSPOTS ) where when you click opens there information in the right side located info panel witch have a inbuilt the database for source . the bottom dock have options for organ which you can visit . the left panel is the most important because it have two part the medicines hub and body system . when you select a body system from the given option the respective organs glow telling you about the organs involved . in the medicine hub there are two options the quiz (YAS !! actually working quiz )and a how does it work ? option when opened takes you to a screen where you can explore the various things like diseases , medicines , medical tests, surgeries , body processes and instrument using animated video which are taken frame Youtube and the credits goes to their respective owners . this project has been a important part of my whole stardance journey hope you like it !!! BYE !!!", "repo": "https://github.com/yashasvi-2012-star/BodyAtlas", "demo": "https://bodyatlas-omega.vercel.app/"}]...
|
[{"post_id": 27049, "ts": "202 [{"post_id": 27049, "ts": "2026-07-12T07:38:18Z", "hours": 1.1708, "text": "HI GUYS !! i noticed or you can say realized that i totally forgot to expand my data base and shipped it with less questions so if i choose specific field from the challenge mode it display either one or two question because no questions related to those mode will be found within the database ."}, {"post_id": 19859, "ts": "2026-07-01T08:19:52Z", "hours": 0.3072, "text": "hey !!! this time i did some debugging , changed UI ,and wrote the final README . this is a short update !! bye !!"}, {"post_id": 19831, "ts": "2026-07-01T06:54:08Z", "hours": 2.06, "text": "hi guys !! this time, i just try to fix all the error and bugs as i could and not only the one thought who create a problem those also which were found by my fellow friends !!"}, {"post_id": 18267, "ts": "2026-06-29T11:03:41Z", "hours": 3.1489, "text": "hey guys I just PURIFIED the competitive mode and it took a lot of time and I also added the popups for .. u can see below I’m sleepy , ’kay bye !!"}, {"post_id": 17463, "ts": "2026-06-28T07:59:21Z", "hours": 4.0928, "text": "hey !!! I changed all the wallpapers turn the body transparent with no background and re did all the logic part of challenge mode and today was a easy but time consuming day !! I’m happy it’s coming alive .. BYE !!"}, {"post_id": 16782, "ts": "2026-06-27T07:50:13Z", "hours": 0.9897, "text": "heyy guys this is an update on body atlas and from now on less updates will be posted . ok so I added other screen and and arranged hotspots using percen rather than px so it stays stable regardless of the condition . I have made js part also which controls the question appearing and timer and points and all the interface is basic and I will upgrade it soon . and I want a opinion from you all , should I add this game in the medicines hub or at the front screen top bar or any other place ?"}, {"post_id": 16376, "ts": "2026-06-26T17:25:07Z", "hours": 1.5144, "text": "HEY !!! I just thought why not keep BodyAtlas going ? so here I am with just another super duper starry feature … drum rolls please …… its a competitive mode where you can chose the level and topic you wanna get it on and the press ‘lets go’ button and then you see a brandnew page with question .. but what makes it diffrent from normal quiz section present in just the main BodyAtlas .. its that it have a timer and you get points for each correct answers and it also takes away some points for wrong answer and when you collect a specific number of point you unlock access to special animated video of how does it work !! ad you can power up your level the more u play .. it a whole diffrent animal (game)…..built inside my webs.. tho its still ongoing I will try my best to make it more interactive and …sugar honey ice tea….BYE !!!"}, {"post_id": 15789, "ts": "2026-06-25T17:45:06Z", "hours": 0.8197, "text": "hi everybody , I shipped my project and just got the review saying that my project looks too much AI . is it so ? I don’t think so cause I did several things on my own and yes I agree I took help of AI in many places of my project even for debugging and all those errors I could not understand . but the reviewer also said I should add features of my own ! I did everything ! each and feature is my own ! what do you think , that AI can up with those ideas , it was me who thought of each and everything from the theme to the content, from the howdoesitwork? to the quiz section . I am not writting this to go against the reviewer but i wanna have honest opinions on my project guys !!"}, {"post_id": 15619, "ts": "2026-06-25T12:24:18Z", "hours": 2.8192, "text": "HEYY !!! I CAN FINALLY SAY NOW MY PROJECT IS COMPLETED !!! I AM SO HAPPY IT TURNED OUT BETTER THAN HOW I IMAGINED IT !! AND NOW IT EVEN HAVE ANIMATED VIDEO FOR CONCEPT !! I GUESS NOT ITS TIME FOR ME TO SIGN OFF !!!"}, {"post_id": 15496, "ts": "2026-06-25T05:56:45Z", "hours": 0.8694, "text": "HEY !!! this is the new update on BodyAtlas . i have put the videos for better explanation in bodyatlas’s how does it work , i took all the video from youtube so the credit goes to respective owners and i think i just completed my project and i’m so HAPPPPYY i just turned out how i imagened it and maybee even better !!!! BYE !!!"}, {"post_id": 14924, "ts": "2026-06-24T07:25:24Z", "hours": 0.3047, "text": "Hey !! this is the maybee sixth update on body atlas and i have added the front page for ’how it works ’ . this is the step from where the main haed part begins , and i will make sure to put double efforts here !!"}, {"post_id": 14921, "ts": "2026-06-24T07:01:20Z", "hours": 0.6619, "text": "hey guyss this is gonna be short but i did add the quiz section in the BodyAtlas and again changed the medical hub from mediceine and diesease explorar to how it works . i added the another page and all which i will be sharing in other devlog !! BYE !!"}, {"post_id": 14456, "ts": "2026-06-23T16:12:26Z", "hours": 0.5658, "text": "heyyy !! this the fifth update on my webs.. BodyAtlas . so i did completed all the data feeding and if i really say i took help of ai to collect all the data it would centuries . and i did a did of editind in interface , i changed the quickbar to medical hub . next i’ll be working on quiz system and this project is really testing my patience !! but i will really be happy when this project will be completed !! BYE !!!<3"}, {"post_id": 14234, "ts": "2026-06-23T07:45:00Z", "hours": 1.1094, "text": "HEY !!!!! this is my fourth update on BodyAtlas and today i have added the database !! HURRAY !! which means that if you click on a hotspot it will show lot of information about that particular thing in the info panel . i had to do it manually so feeding all the data for only 4 organs (which i did ) took 1 hours and there are approx 11-12 more left so don’t know how much time it will take and i have also reduced the side of hotspot cuz it was looking messy and they are still left to be positioned . sope that’s all i did in this session and next update will come in the evening !!BYE !!! i hope i get to see awesome projects from you all !!!"}, {"post_id": 13813, "ts": "2026-06-22T17:09:43Z", "hours": 1.8347, "text": "HEYY!!!!!this is the third update on BodyAtlas and i’m so sleepy right now !! ‘kay so this time, i have added the human body . initially i thought to add maybe like a 3d body which can rotate and do cool stuff but there were no free options so i had to change my plan and do a 2d one . tho i’m not that dissappointed how good 2-d also looks !!! RIGHT? . i have also added spots (HOTSPOTS )(its looking really messy !!) where when you click opens there information in the right side located info panel i’m currently working on feeding the database(the example in the screen shot is short i will surely make it more precise !!) and its really hard to manage all the stuff at the same time . i don’t want to bore you with my talking so that’s all !!B’BYE !!!"}, {"post_id": 12958, "ts": "2026-06-21T06:35:47Z", "hours": 0.4228, "text": "heyyy!!!!this is the second update of bodyatlas and i have added the first page . this is the landing page of bodyatlas . i did try making it kinda simple and easy tho !! i am still trying hard to make it simple , usable , and perfect with all majar info !!so thats all for today !! bye !!!"}, {"post_id": 11153, "ts": "2026-06-18T07:27:24Z", "hours": 0.3128, "text": "hey !!! i have started my new project and it is called BodyAtlas here you can see human bodies in a 3d ways and interact with them and you will see exactly how human body work , how a diseases ACTUALLY effect our body and how a medicine ACTUALLY treats us !!!!. i have completed the first inter face and basic way how my new project will look and there is is frame in the middle section where i am just testing how 3d bodies would behave . BYEEE !!! and i will make sure to keep u all updated !!!"}]...
|
Title: BodyAtlas by @yashasvib | Stardance
Devlog Title: BodyAtlas by @yashasvib | Stardance
Devlogs:
hey !!! i have started my new project and it is called BodyAtlas here you can see human bodies in a 3d ways and interact with them and you will see exactly how human body work , how a diseases ACTUALLY effect our body and how a medicine ACTUALLY treats us !!!!. i have completed the first inter face and basic way how my new project will look and there is is frame in the middle section where i am just testing how 3d bodies would behave . BYEEE !!! and i will make sure to keep u all updated !!!
heyyy!!!!this is the second update of bodyatlas and i have added the first page . this is the landing page of bodyatlas . i did try making it kinda simple and easy tho !! i am still trying hard to make it simple , usable , and perfect with all majar info !!so thats all for today !! bye !!!
HEYY!!!!!this is the third update on BodyAtlas and i’m so sleepy right now !! ‘kay so this time, i have added the human body . initially i thought to add maybe like a 3d body which can rotate and do cool stuff but there were no free options so i had to change my plan and do a 2d one . tho i’m not that dissappointed how good 2-d also looks !!! RIGHT? . i have also added spots (HOTSPOTS )(its looking really messy !!) where when you click opens there information in the right side located info panel i’m currently working on feeding the database(the example in the screen shot is short i will surely make it more precise !!) and its really hard to manage all the stuff at the same time . i don’t want to bore you with my talking so that’s all !!B’BYE !!!
HEY !!!!! this is my fourth update on BodyAtlas and today i have added the database !! HURRAY !! which means that if you click on a hotspot it will show lot of information about that particular thing in the info panel . i had to do it manually so feeding all the data for only 4 organs (which i did ) took 1 hours and there are approx 11-12 more left so don’t know how much time it will take and i have also reduced the side of hotspot cuz it was looking messy and they are still left to be positioned . sope that’s all i did in this session and next update will come in the evening !!BYE !!! i hope i get to see awesome projects from you all !!!
heyyy !! this the fifth update on my webs.. BodyAtlas . so i did completed all the data feeding and if i really say i took help of ai to collect all the data it would centuries . and i did a did of editind in interface , i changed the quickbar to medical hub . next i’ll be working on quiz system and this project is really testing my patience !! but i will really be happy when this project will be completed !! BYE !!!<3
hey guyss this is gonna be short but i did add the quiz section in the BodyAtlas and again changed the medical hub from mediceine and diesease explorar to how it works . i added the another page and all which i will be sharing in other devlog !! BYE !!
Hey !! this is the maybee sixth update on body atlas and i have added the front page for ’how it works ’ . this is the step from where the main haed part begins , and i will make sure to put double efforts here !!
HEY !!! this is the new update on BodyAtlas . i have put the videos for better explanation in bodyatlas’s how does it work , i took all the video from youtube so the credit goes to respective owners and i think i just completed my project and i’m so HAPPPPYY i just turned out how i imagened it and maybee even better !!!! BYE !!!
HEYY !!! I CAN FINALLY SAY NOW MY PROJECT IS COMPLETED !!! I AM SO HAPPY IT TURNED OUT BETTER THAN HOW I IMAGINED IT !! AND NOW IT EVEN HAVE ANIMATED VIDEO FOR CONCEPT !! I GUESS NOT ITS TIME FOR ME TO SIGN OFF !!!
hi everybody , I shipped my project and just got the review saying that my project looks too much AI . is it so ? I don’t think so cause I did several things on my own and yes I agree I took help of AI in many places of my project even for debugging and all those errors I could not understand . but the reviewer also said I should add features of my own ! I did everything ! each and feature is my own ! what do you think , that AI can up with those ideas , it was me who thought of each and everything from the theme to the content, from the howdoesitwork? to the quiz section . I am not writting this to go against the reviewer but i wanna have honest opinions on my project guys !!
HEY !!! I just thought why not keep BodyAtlas going ? so here I am with just another super duper starry feature … drum rolls please …… its a competitive mode where you can chose the level and topic you wanna get it on and the press ‘lets go’ button and then you see a brandnew page with question .. but what makes it diffrent from normal quiz section present in just the main BodyAtlas .. its that it have a timer and you get points for each correct answers and it also takes away some points for wrong answer and when you collect a specific number of point you unlock access to special animated video of how does it work !! ad you can power up your level the more u play .. it a whole diffrent animal (game)…..built inside my webs.. tho its still ongoing I will try my best to make it more interactive and …sugar honey ice tea….BYE !!!
heyy guys this is an update on body atlas and from now on less updates will be posted . ok so I added other screen and and arranged hotspots using percen rather than px so it stays stable regardless of the condition . I have made js part also which controls the question appearing and timer and points and all the interface is basic and I will upgrade it soon . and I want a opinion from you all , should I add this game in the medicines hub or at the front screen top bar or any other place ?
hey !!! I changed all the wallpapers turn the body transparent with no background and re did all the logic part of challenge mode and today was a easy but time consuming day !! I’m happy it’s coming alive .. BYE !!
hey guys I just PURIFIED the competitive mode and it took a lot of time and I also added the popups for .. u can see below I’m sleepy , ’kay bye !!
hi guys !! this time, i just try to fix all the error and bugs as i could and not only the one thought who create a problem those also which were found by my fellow friends !!
hey !!! this time i did some debugging , changed UI ,and wrote the final README . this is a short update !! bye !!
HI GUYS !! i noticed or you can say realized that i totally forgot to expand my data base and shipped it with less questions so if i choose specific field from the challenge mode it display either one or two question because no questions related to those mode will be found within the database .
Ships:
HEY !!! this is a webs.. that lets you explore human body and it is called BodyAtlas .when opened it first land on a landing page where date , day, time are displayed and there is also a section about this project . then it takes you to main page where there is a main screen with a left , right panel , dock at bottom . in the main screen initially i thought to add maybe like a 3d body which can rotate and do cool stuff but there were no free options so i had to change my plan and do a 2d one . tho I’m not that disappointed how good 2-d also looks !!! RIGHT? . i have also added spots (HOTSPOTS ) where when you click opens there information in the right side located info panel witch have a inbuilt the database for source . the bottom dock have options for organ which you can visit . the left panel is the most important because it have two part the medicines hub and body system . when you select a body system from the given option the respective organs glow telling you about the organs involved . in the medicine hub there are two options the quiz (YAS !! actually working quiz )and a how does it work ? option when opened takes you to a screen where you can explore the various things like diseases , medicines , medical tests, surgeries , body processes and instrument using animated video which are taken frame Youtube and the credits goes to their respective owners . this project has been a important part of my whole stardance journey hope you like it !!! BYE !!!
HEY !!! this is a webs.. that lets you explore human body and it is called BodyAtlas .when opened it first land on a landing page where date , day, time are displayed and there is also a section about this project . then it takes you to main page where there is a main screen with a left , right panel , dock at bottom . in the main screen initially i thought to add maybe like a 3d body which can rotate and do cool stuff but there were no free options so i had to change my plan and do a 2d one . tho I’m not that disappointed how good 2-d also looks !!! RIGHT? . i have also added spots (HOTSPOTS ) where when you click opens there information in the right side located info panel witch have a inbuilt the database for source . the bottom dock have options for organ which you can visit . the left panel is the most important because it have two part the medicines hub and body system . when you select a body system from the given option the respective organs glow telling you about the organs involved . in the medicine hub there are two options the quiz (YAS !! actually working quiz )and a how does it work ? option when opened takes you to a screen where you can explore the various things like diseases , medicines , medical tests, surgeries , body processes and instrument using animated video which are taken frame Youtube and the credits goes to their respective owners . i have also added a challenge mode where you can select difficulty and topic and it will give you questions , for each answer you gain points and for each wrong answer your points are deducted this project has been a important part of my whole stardance journey hope you like it !!! BYE !!!
hi guys !! (read the other ships before to know but the project) this is going to be short cuz i only wanted to increase the data base and its quite easy …but I added Only very very few question because i have EXAMS !! but its okay ill manage in future .. so i guess that’s all !! BYE !!...
|
1793123526.4150498
|
1793209926.4150498
|
|
31204
|
Cupcakes by @DinoLife | Stardance
|
DinoLife
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T10:01:16Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a website to sell cupcake. I am really happy that i could make it send you an email confirmation.", "repo": "https://github.com/karwals/Cupcakes", "demo": "https://cupcakes-wellington.netlify.app/"}]...
|
[{"post_id": 27564, "ts": "202 [{"post_id": 27564, "ts": "2026-07-13T08:21:28Z", "hours": 3.3958, "text": "I have created the landing page and the admin page(where you will be able to set the cupcake for the week) for the wedsite. I have also set it up on github pages so that i can host it for free. The way I made the admin page update the cupcakes list is the following. The admin page edits the cupcake list in the browser, using the locally saved GitHub token, then sends a PUT request to GitHub’s Contents API.That request commits the new public/data/weekly-cupcakes.json to karwals/Cupcakes on master, which triggers the GitHub Pages deploy workflow. i have not made the images of the cupcakes work yet that is the next step. and making the order now work."}]...
|
Title: Cupcakes by @DinoLife | Stardance
Devlogs: Title: Cupcakes by @DinoLife | Stardance
Devlogs:
I have created the landing page and the admin page(where you will be able to set the cupcake for the week) for the wedsite. I have also set it up on github pages so that i can host it for free. The way I made the admin page update the cupcakes list is the following. The admin page edits the cupcake list in the browser, using the locally saved GitHub token, then sends a PUT request to GitHub’s Contents API.That request commits the new public/data/weekly-cupcakes.json to karwals/Cupcakes on master, which triggers the GitHub Pages deploy workflow. i have not made the images of the cupcakes work yet that is the next step. and making the order now work.
Ships:
I made a website to sell cupcake. I am really happy that i could make it send you an email confirmation....
|
1793145281.5834181
|
1793231681.5834181
|
|
59311
|
Blender arm controller by @Sparsh01 | Stardance
|
Sparsh01
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T09:11:27Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made controller in blender using python to controll a 3 dof robotic arm , steps to run it - import ur 3dof robotic arm model,go to edit then click preference add on and choose .zip file i have provided , a pop up will open install pyserial and connect ur arduino with com ,it have a live sync option ,u can put value of stepper motor size like max step it should take 150 is preffered*", "repo": "", "demo": ""}]...
|
[{"post_id": 63437, "ts": "202 [{"post_id": 63437, "ts": "2026-09-07T08:56:25Z", "hours": 0.1, "text": "finally completed the code for the controller of 3dof robotic arm"}]...
|
Title: Blender arm controller by @Sparsh01 | Stard Title: Blender arm controller by @Sparsh01 | Stardance
Devlogs:
finally completed the code for the controller of 3dof robotic arm
Ships:
I have made controller in blender using python to controll a 3 dof robotic arm , steps to run it - import ur 3dof robotic arm model,go to edit then click preference add on and choose .zip file i have provided , a pop up will open install pyserial and connect ur arduino with com ,it have a live sync option ,u can put value of stepper motor size like max step it should take 150 is preffered*...
|
1793127066.5574822
|
1793213466.5574822
|
|
56751
|
Personal Site by @Kabirutreja | Stardance
|
Kabirutreja
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T08:51:29Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What we made A personal portfolio site.. single page, dark theme with purple/pink accents, sections for Home, About, Hobbies, Work, and Contact. Navigation links scroll you to each section instead of loading new pages. There’s also a typing animation in the hero (I’m a… Entrepreneur / Game Developer / Powerlifter / Creator etc…), cards lift up a little when you hover over them. What was challenging Honestly, the biggest thing wasn’t the “fancy” stuff the typing effect and scroll animations came from a library and a few lines of JS. The annoying part was getting local images to actually load. me.jpg, rps.png, glow.png, case sensitivity. What I’m proud of It doesn’t look like a template. But an actual finished project. What people should test Click See my work on the home page and check it jumps you straight to the Work section Try it on your phone, it’s supposed to reflow into a single column, nav shrinks down, Click into the itch.io links on the game cards and make sure they open properly in a new tab Hover over the hobby and project cards on desktop, check they lift up smoothly Thank you……", "repo": "https://github.com/kabirutreja/Personal_Site", "demo": "https://kabirutreja.github.io/Personal_Site/"}]...
|
[{"post_id": 60176, "ts": "202 [{"post_id": 60176, "ts": "2026-09-02T12:08:14Z", "hours": 3.305, "text": "Made the personal website with some cool animation and some scrollable pages and it was a nice experience just had an issue with the time as its almost half of what time I worked.."}]...
|
Title: Personal Site by @Kabirutreja | Stardance
Title: Personal Site by @Kabirutreja | Stardance
Devlogs:
Made the personal website with some cool animation and some scrollable pages and it was a nice experience just had an issue with the time as its almost half of what time I worked..
Ships:
What we made A personal portfolio site.. single page, dark theme with purple/pink accents, sections for Home, About, Hobbies, Work, and Contact. Navigation links scroll you to each section instead of loading new pages. There’s also a typing animation in the hero (I’m a… Entrepreneur / Game Developer / Powerlifter / Creator etc…), cards lift up a little when you hover over them. What was challenging Honestly, the biggest thing wasn’t the “fancy” stuff the typing effect and scroll animations came from a library and a few lines of JS. The annoying part was getting local images to actually load. me.jpg, rps.png, glow.png, case sensitivity. What I’m proud of It doesn’t look like a template. But an actual finished project. What people should test Click See my work on the home page and check it jumps you straight to the Work section Try it on your phone, it’s supposed to reflow into a single column, nav shrinks down, Click into the itch.io links on the game cards and make sure they open properly in a new tab Hover over the hobby and project cards on desktop, check they lift up smoothly Thank you……...
|
1793141712.1363065
|
1793228112.1363065
|
|
4470
|
Edge-AI Home Monitoring System by @Greg_ios | Star Edge-AI Home Monitoring System by @Greg_ios | Stardance...
|
Greg_ios
|
3
|
38.0
|
612
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T08:49:56Z", "hours": 18.0, "multiplier": 17.56, "payout": 308, "blessing": "neutral", "text": "Most smart homes are leased, not owned. Every command you send travels to a cloud you don’t control, owned by a company with interests misaligned to yours. This system proves that meaningful control of your physical space doesn’t require surrendering it to a vendor. Edge-AI Home Monitoring is a locally-governed, vendor-independent home automation platform designed to answer: can a household be sovereign over its own infrastructure?", "repo": "https://github.com/travletothefurureprogramming/Edge-AI-Home-Monitoring-System", "demo": "https://edgeaihomemonitoringsystem.carrd.co/"}, {"ship_num": 2, "ts": "2026-06-30T20:49:56Z", "hours": 11.0, "multiplier": 16.61, "payout": 175, "blessing": "neutral", "text": "Over the past few weeks, Edge-AI Home Monitoring System has evolved from a basic smart home controller into a much more capable home automation platform. New Features Added YOLO-based security monitoring Integrated Telegram bot for remote alerts and device control Added support for Tapo Smart Bulbs Added support for Tapo Smart Plugs Added support for Philips Hue devices Added support for Yeelight devices Added support for LG Smart TVs Added Remote PC Control & Monitoring Infrastructure Improvements Built a full Flask server backend Added a responsive Web Dashboard Improved setup process with automated setup scripts Reworked documentation and README Reliability Improvements Refactored multiple modules with structured exception handling Added better logging and debugging tools Improved API responses and backend stability Enhanced scalability for future device integrations The project is now much closer to becoming a complete privacy-first edge AI smart home hub capable of controlling multiple device ecosystems from a single interface.", "repo": "https://github.com/travletothefurureprogramming/Edge-AI-Home-Monitoring-System", "demo": "https://edgeaihomemonitoringsystem.carrd.co/"}, {"ship_num": 3, "ts": "2026-06-03T14:57:54Z", "hours": 9.0, "multiplier": 15.16, "payout": 129, "blessing": "neutral", "text": "I have made an Edge-AI Home Monitoring System. It is a privacy-first, edge-AI home automation hub using Linux, Flask, and real-time control to orchestrate smart devices.", "repo": "https://github.com/travletothefurureprogramming/Edge-AI-Home-Monitoring-System", "demo": "https://edgeaihomemonitoringsystem.carrd.co/"}]...
|
[{"post_id": 30918, "ts": "202 [{"post_id": 30918, "ts": "2026-07-18T22:06:31Z", "hours": 2.7133, "text": "🧪 Reliability & CI Improvements This update also focuses on improving the project’s reliability and development workflow. What’s New Added 20 Pytest test cases covering the core functionality of the system, helping verify that critical components behave correctly and reducing the risk of regressions. Configured GitHub Actions to automatically execute the entire test suite after every commit and pull request, ensuring new changes don’t break existing functionality. Why It Matters Automated testing and Continuous Integration (CI) make the project more robust, maintainable, and production-ready. Every code change is now automatically validated before it becomes part of the project, providing faster feedback during development and increasing confidence in future updates."}, {"post_id": 29426, "ts": "2026-07-16T11:26:44Z", "hours": 2.9903, "text": "🐳 Docker Setup: 100% Functional Docker support for the Edge-AI Home Monitoring System is now fully working end-to-end. What’s New First-Run Setup via HTML : Instead of manual configuration steps, the very first launch now opens a lightweight HTML setup page that walks through the initial configuration once (credentials, device registration basics, etc.). After this one-time run, it’s never needed again — the container remembers everything through the persisted config volumes. One Command to Rule Them All : The whole system — Flask backend, Docker container, and now the first-run setup — is launched with a single script: Windows: start.bat Linux: start.sh No more manually running docker compose , checking dependencies, or following multi-step instructions. Just run the script for your OS and the entire stack comes up ready to use. Why It Matters This closes the loop on the Docker migration from a few devlogs ago. Before, Docker removed the Python/venv/dependency headaches but still required knowing the right compose commands. Now the onboarding experience is genuinely “clone → run one script → done,” with the HTML first-run page handling the last bit of manual setup that used to require touching config files by hand."}, {"post_id": 27850, "ts": "2026-07-13T18:59:41Z", "hours": 1.8536, "text": "🚀 One of the Biggest Updates: Docker-Based Setup & Minimal Installation The Edge-AI Home Monitoring System has just received its most significant infrastructure overhaul yet! We have completely re-engineered the deployment workflow. Instead of dealing with manual environment configurations, matching Python versions, and tracking down dependency conflicts, the entire ecosystem can now be spun up instantly with a single command. 🐳 What’s New: Containerized Architecture By migrating the platform to a fully containerized backend , we’ve moved away from fragile local setups closer to a production-grade deployment. Key Improvements: Isolated Environment: The Flask backend and all its core libraries run inside an isolated Docker container, completely immune to host-system configuration drifts. Automated Dependency Management: All heavy-lifting dependencies are resolved and cached automatically inside the image. State & Configuration Persistence: Your custom devices_config.json , automation rules, and local database models are securely mapped via Docker volumes, meaning they persist perfectly across container restarts and updates. High Portability: Moving the hub from a development PC to a dedicated home server (like a Fedora Linux box or a Raspberry Pi) is now completely seamless. ⚡ Setup: Before vs. After The difference in onboarding friction is night and day. Look at how the installation footprint has shrunk: Old Manual Setup New Docker Workflow ❌ Install Python manually & match versions 📦 Pre-configured runtime environment ❌ Create virtual environments ( venv ) 📦 Isolated container filesystems ❌ Debug pip dependency conflicts 📦 One-time automated image build ❌ Manually set environment variables 📦 Declarative configuration via Compose ❌ Run background scripts step-by-step 📦 Single-command multi-service launch The New Minimal Installation Path: Now, launching your privacy-first smart home hub requires nothing more than standard container tools: # Clone the repository git clone https://github.com/travletothefurureprogramming/Edge-AI-Home-Monitoring-System # Navigate to the project root cd Edge-AI-Home-Monitoring-System # Spin up the entire system in detached mode docker compose up -d"}, {"post_id": 27230, "ts": "2026-07-12T16:46:07Z", "hours": 0.7819, "text": "UI Modernization & Native Sonos Integration 🎵🎨 A massive structural and visual update has landed! The Edge-AI Home Monitoring System dashboard has been rewritten into a production-grade, single-page interface using the modern Inter typeface family. Alongside this visual overhaul, we are introducing native, local-only support for Sonos Smart Audio Devices . What’s New 1. High-End Minimalist UI & CSS Token Architecture The new interface shifts away from crowded layouts to a highly scannable, component-driven architecture featuring a strict color and spacing utility system built directly into :root . Unified Palette System: Built entirely on minimal token foundations: light-mode canvas backgrounds ( #fafafa ), precise surface modules ( #ffffff ), and structural crisp border outlines ( #e7e7e7 / #d9d9d9 ). Blur-Effects Navigation Header ( .topbar ): A sticky system header utilizing backdrop-filter: blur(8px) that embeds the new brand mark ( A Home ) alongside a live status strip displaying the total device count, registered automations, and an immediate visual green heartbeat indicator ( .live-dot ). Decoupled Grid Control ( .grid ): Devices are rendered dynamically using a responsive auto-fill layout ( minmax(240px, 1fr) ) with explicit styling classes for device actions ( .btn.on for soft green feedback, .btn.off for soft red, and .btn.accent for special triggers). Asynchronous AI Assistant Component ( .ai-panel ): A dedicated section housing the local LLM interaction logic, optimized with a smooth CSS-animated text typing loop ( @keyframes dotfade ) to indicate processing states without blocking UI interactions. 2. Native Sonos Smart Audio Core Integration Audio control joins our local device tree. The system now natively communicates with Sonos devices over the local network via unified backend hooks, matching our privacy-first design patterns. The control grid maps the specific target API endpoints directly to native UI inputs, enabling immediate transmission of core execution parameters: play — Resumes audio streaming ( .btn.on ) pause — Pauses current media layout tracking stop — Breaks audio buffering completely ( .btn.off ) volume_up & volume_down — Alters hardware volume steps Real-Time “Now Playing” UI Subview Sonos control cards now dynamically build and inject an interactive media HUD element ( .now-playing ). Dynamic Media Binding: Communicates with the new /api/music/current endpoint via explicit POST JSON payloads ( { room, type, number, command: 'get', device } ). Visual Playback Flags: Implements dynamic active toggles ( .now-playing.playing ) that shift asset opacity states depending on network audio feedback. Non-Blocking Control Pulls: The inline manual update button ( .np-refresh ) relies on an isolated asynchronous CSS loop wrapper ( @keyframes spin ) allowing updates without triggering full dashboard asset re-renders."}, {"post_id": 27152, "ts": "2026-07-12T13:36:12Z", "hours": 0.6378, "text": "Samsung Smart TV Support Added 📺 The Edge-AI Home Monitoring System now includes full support for Samsung Smart TVs running Tizen OS, expanding the platform’s smart device ecosystem with another major TV manufacturer. This integration uses the Samsung TV WebSocket API, allowing the system to communicate directly with compatible TVs over the local network without requiring additional hardware such as IR blasters. What’s New Added a new Samsung TV backend integration using the samsungtvws Python library. Implemented support for: Power control (ON/OFF) Remote key commands Volume control Device information retrieval Samsung TVs are now registered as a native device type inside the system, following the same architecture used by other integrations such as LG WebOS, Daikin, Tapo, Hue, Yeelight, Shelly, and Broadlink. Why It Matters Until now, TV support was mainly focused on LG Smart TVs and IR-controlled televisions through Broadlink. With Samsung Smart TV support, the system can now directly control another major smart TV ecosystem using its official network interface. This improves: Response time compared to IR control Local-only communication (no cloud dependency) Compatibility with more homes Technical Details The integration communicates with Samsung TVs through: Samsung Tizen WebSocket API Local network TCP communication Device authentication pairing The system keeps the same device abstraction model used by the rest of the project, making Samsung TVs behave like any other controllable smart device. Challenges Some challenges during implementation: Handling Samsung’s first-time pairing approval system Managing WebSocket connections reliably Ensuring compatibility between different Tizen TV models Mapping Samsung remote key codes into the existing device command structure Next Steps Future improvements: Add automatic Samsung TV discovery Add real-time TV status feedback (power state, current app, volume) Add voice assistant commands for Samsung TVs - Add more controls Samsung Smart TVs are now another fully supported platform in the Edge-AI Home Monitoring System, bringing the project closer to becoming a complete privacy-first smart home hub."}, {"post_id": 26718, "ts": "2026-07-11T17:52:05Z", "hours": 0.8892, "text": "Full Broadlink Universal Remote Support The Edge-AI Home Monitoring System now includes complete support for Broadlink Universal Remotes , allowing the platform not only to learn IR commands but also to transmit them directly to infrared-controlled devices. What’s New Added a dedicated Broadlink backend integration for sending stored IR commands. Implemented a new /api/broadlink endpoint for controlling Broadlink devices from the dashboard and automation engine. Added a Broadlink device class responsible for: Connecting and authenticating with Broadlink RM-series devices. Reading learned IR codes from broadlink_codes.json . Sending IR packets using device.send_data() . Full support for controlling: TVs Air Conditioners TV Decoders / Set-Top Boxes Broadlink devices are now treated like any other supported smart device and can be used throughout the entire system. Why It Matters This is a major milestone because the system is no longer limited to devices with official APIs. Thousands of legacy appliances—including older televisions, air conditioners, and cable/satellite decoders—can now be integrated into the smart home ecosystem using only their existing infrared remote controls. Users can control these devices from: The Web Dashboard Automation Rules Future Voice Assistant integrations Any API client connected to the system This significantly expands compatibility while maintaining the project’s privacy-first, local-control philosophy. Challenges IR packets must be converted back into raw byte format before transmission. Maintaining synchronization between learned codes and registered Broadlink devices remains important as the number of supported devices grows. Multiple Broadlink hubs on the same network still require a device selection mechanism, which will be addressed in a future update. Next Steps Add automatic Broadlink hub discovery and selection. Integrate Broadlink commands into the Rule Engine as event triggers. Add support for macro commands (multiple IR signals with delays). Improve the dashboard with command management and testing tools."}, {"post_id": 26187, "ts": "2026-07-10T20:47:59Z", "hours": 1.8417, "text": "Broadlink IR Learning App + Voice Guidance in Setup The Edge-AI Home Monitoring System now has its own tool for learning IR signals, as well as voice guidance throughout the setup process. What’s Added Broadlink IR Learning App New desktop application (customtkinter) that connects to a Broadlink device (RM-series) via broadlink.discover() and authenticates automatically. Device type selection (TV / AC / Decoder) with dynamic list of commands depending on the type (on/off, channel up/down, volume, direction, menu, etc.). “Learn & Save” function: Broadlink enters learning mode, waits for the signal from the real remote control and saves the hex packet. The signals are stored in two places: broadlink_codes.json — file-library of all codes per room/device/command. devices_config.json — so that the device is automatically registered as an entry in the system’s main config, with flag is_broadlink_device: true . Voice Guidance in Setup Wizard Added text-to-speech (via pyttsx4 , in a separate thread so as not to block the UI) to each step of the setup wizard: installing dependencies, downloading AI model, creating password, setting Tailscale, Telegram token/chat ID, and registering devices. Each device type during registration (Tapo, Philips Hue, Shelly, Broadlink, etc.) now “explains” vocally which fields need to be filled in, making the process more accessible for someone who is setting up the system for the first time without reading documentation. Also added broadlink as a new device type in the setup wizard dropdown, which opens the Learning App directly when selected. Why It Matters Until now, the system only supported devices with official APIs (Tapo, Hue, Yeelight, LG WebOS, Daikin). Many “dumb” devices at home (old ACs, decoders, TVs without smart features) are controlled only via IR remote — the Broadlink learning app paves the way to integrate virtually any device with an IR remote into the ecosystem, without the need for a special library per brand. Voice guidance also makes setup more accessible — less need to read README step by step, the system tells you what to do live. Challenges async_connect of the Kasa class has incorrect syntax ( await self.device = ... instead of self.device = await ... ) — same problem as previous devlog, still pending. In the Learning App, the device data is temporarily stored in two separate files ( broadlink_codes.json and devices_config.json ) — care must be taken to ensure that they do not become out of sync if a write fails in the middle. The Broadlink device is always identified as devices[0] by broadlink.discover() — if there are multiple Broadlink devices on the network, the app will always connect to the first one found, without selection. TTS requires CoInitialize / CoUninitialize on each thread (Windows-specific), which makes the code less portable to other OSes. Next Steps Full support for sending signals via Broadlink devices (not just learning) — i.e. new /api/broadlink endpoint and Broadlink class in the backend that will read the stored hex codes from broadlink_codes.json and send them via device.send_data() . Integrate Broadlink devices as actions in the Rule Engine, so they can be used in automations like any other device. Wiring emit_device_event to Broadlink sends, so they can also be trigger sources. Fix bug in Kasa.async_connect before any other work on Kasa progresses."}, {"post_id": 25929, "ts": "2026-07-10T12:59:31Z", "hours": 0.6778, "text": "Kasa (TP-Link) Support Added The Edge-AI Home Monitoring System now supports TP-Link Kasa smart plugs/switches, using the python-kasa library’s async Discover API for device communication. What’s New New Kasa class that discovers a device by IP via Discover.discover_single() (with optional username/password for cloud-authenticated devices) and wraps turn_on / turn_off / execute_command behind the same asyncio.run() pattern already used for Daikin and the Tapo devices. New /api/kasa endpoint, gated behind @auth.login_required like the rest of the device APIs. Registered kasa in DEVICE_ENDPOINTS and wired it into create_device_action , so Kasa devices can already be used as automation actions from day one. Added send_kasa and send_daikin helper functions alongside the other device senders, for consistency across the codebase. Why This Matters Kasa is one of the most common smart plug ecosystems out there, so this adds another affordable device family to the system without needing a proprietary hub — anything plugged into a Kasa switch can now be turned on/off from the dashboard or from an automation rule, the same way Tapo and Shelly devices already are. Challenges Ran into a syntax issue in async_connect : await self.device = Discover.discover_single(...) isn’t valid — assignment has to come first, i.e. self.device = await Discover.discover_single(...) . Needs fixing before this can actually run. handle_kasa currently points at a config path ( /config/device_config.json ) that doesn’t match the filename ( devices_config.json ) or the relative-path convention used by every other handler — needs to be corrected to \"config/devices_config.json\" . Same route also references data[\"Room\"][room][dev_type][number][ip] with ip unquoted (a variable reference instead of the string key \"ip\" ), which will throw a NameError rather than the intended KeyError . emit_device_event still isn’t wired into the Kasa (or Shelly) handler, so — same as the other non-TV devices — Kasa state changes can’t yet act as automation triggers. Next Steps Fix the await /assignment order bug in Kasa.async_connect , the config path, and the unquoted \"ip\" key in /api/kasa before testing against a real device. Wire emit_device_event into Kasa, Shelly, and the remaining handlers so any device can act as both an action and a trigger. Once event emission is consistent across all device types, move on to energy monitoring for the Tapo smart plugs."}, {"post_id": 25885, "ts": "2026-07-10T11:31:06Z", "hours": 0.695, "text": "Shelly Support Added The Edge-AI Home Monitoring System now supports Shelly smart relays, using the ShellyPy library to control relay-based devices (plugs, switches, etc.) over the local network. What’s New New Shelly class wrapping ShellyPy.Shelly , with turn_on_relay / turn_off_relay methods and an execute_command dispatcher for on / off commands. New /api/shelly endpoint that reads the device’s IP and relay_number from devices_config.json and forwards the command to the relay. Registered shelly in DEVICE_ENDPOINTS and wired it into create_device_action , so Shelly devices can already be used as automation actions (schedule or event triggered), same as every other device type. Why This Matters Shelly relays are a common, cheap way to add “dumb” appliances into the automation system — a fan, a boiler, anything behind a relay can now be toggled from the dashboard or from a rule, without needing a dedicated smart-device ecosystem. Challenges Noticed /api/shelly is currently missing the @auth.login_required decorator that every other device endpoint has — since authentication was added, this is the one route that slipped through. Needs to be fixed before this ships anywhere network-exposed. Shelly relays are addressed by relay_number rather than an id /model like the other integrations, so the config schema needed a small variation ( relay_number field) instead of reusing the existing device pattern exactly. emit_device_event isn’t wired into the Shelly handler yet, so — like the other non-TV devices — a Shelly state change can’t currently act as a trigger for other automations. Next Steps Add the missing @auth.login_required to /api/shelly . Wire emit_device_event into the Shelly (and remaining) handlers so any device can be both an action and a trigger source. Once event emission is consistent across all device types, move on to energy monitoring for the Tapo smart plugs."}, {"post_id": 25861, "ts": "2026-07-10T10:45:47Z", "hours": 0.7478, "text": "Device-Triggered Chaining: Automations Now React to Device State Changes The Rule Engine already supported schedule triggers and one hardcoded event source (the YOLO “person_detected” signal). This update adds a much more general capability: automations can now trigger off of any device state change , not just security events. What’s New Added emit_device_event(room, dev_type, command), a helper that builds an event name in the form {room} {dev_type} {command} (e.g. living_room_lg_tv_on) and forwards it to AutomationManager.trigger_event. Wired this into the /api/tv endpoint: every time a TV command succeeds, the system now emits an event describing exactly what just happened. This means a rule can be created like “when the Living Room TV turns on → turn on the Living Room lights” without any new trigger type — it reuses the same event-rule machinery already built for the security pipeline. Event names are deterministic and human-readable, so building new automations from the dashboard just means picking the right device + command combo as the trigger. Why This Matters Until now, “smart” behavior meant either a fixed schedule or a single special-cased sensor event. This generalizes the pattern: any device action can become a trigger for any other device action, which is the actual foundation of “automation chaining” (TV on → lights on, plug on → AC on, etc.) rather than a one-off integration. Challenges emit_device_event is currently only called from the TV handler. The Tapo, Philips Hue, Yeelight, and Daikin handlers don’t emit events yet, so right now only TV state changes can kick off a chain — everything else is still a dead end as a trigger source. This is the next thing to close. Needed to be careful that emitting the event happens after the command actually succeeds, not just after it’s requested, so a failed TV command doesn’t fire a chain based on a state change that never happened. Next Steps Add emit_device_event calls to the remaining device handlers (Tapo light/LED strip, Hue, Yeelight, Daikin) so any device can act as a trigger, not just TVs. Once persistence for automation actions is fully solid across restarts, move on to energy monitoring for the Tapo smart plugs."}, {"post_id": 23760, "ts": "2026-07-06T21:49:22Z", "hours": 0.7892, "text": "Automations are Live: Schedules & Event Triggers The Rule Engine I mentioned as “next steps” in the last few devlogs is now fully working. The Edge-AI Home Monitoring System can now react on its own, without me touching the dashboard. What’s New New AutomationManager class that manages rules independently of the Flask request lifecycle, running on its own background thread Schedule triggers : fire any device action at a specific time of day (cron-based under the hood, e.g. “turn off all lights at 23:30”) Event triggers : fire actions the moment something happens in the system — currently wired up to the YOLO security pipeline, so a rule can say “when a person is detected, turn on the living room lights” Automations are managed straight from the dashboard: add a rule (pick a device, a command, and either a time or an event), see the active list, delete on demand — no need to touch the config files by hand Rules persist to disk, so they survive a server restart Challenges The trickiest part wasn’t the scheduling logic itself — it was making sure automation actions don’t accidentally go through the same path as normal API requests. Since every device endpoint is gated behind session-based login, having the automation thread call itself over HTTP triggered 401s (a background thread has no browser session, obviously). Fixed by having automation actions call the device classes directly instead of looping back through HTTP — cleaner and faster anyway, since it skips a full request round-trip for something that’s technically internal. Next Steps Energy monitoring for the Tapo smart plugs, so automations can eventually be built around actual consumption data too."}, {"post_id": 23432, "ts": "2026-07-06T12:12:20Z", "hours": 0.7306, "text": "Create Autoation Manager class"}, {"post_id": 23410, "ts": "2026-07-06T10:52:32Z", "hours": 0.8403, "text": "Added Daikin AC Support The Edge-AI Home Monitoring System now extends into climate control. I’ve added full support for Daikin air conditioners, using the pydaikin library for asynchronous communication with the device over the network. What’s New New DaikinAC class with full control: on/off, increase/decrease temperature, and mode switching (auto, cool, heat, dry, fan) New /api/daikin endpoint for device communication Integrated into the same authentication pattern used across the whole system ( @auth.login_required ), so no new device ecosystem opens a security gap Dashboard controls for Daikin devices, including a mode selection dropdown Challenges Since pydaikin is fully asynchronous (async context managers), each client call had to be wrapped with asyncio.run() to fit into the rest of the synchronous Flask backend — the same approach used for the Tapo devices. Next Steps Rule Engine / Automations system, followed by energy monitoring for the Tapo smart plugs."}, {"post_id": 23380, "ts": "2026-07-06T09:40:25Z", "hours": 0.3508, "text": "Improving the Project Structure One of the biggest challenges in the project was the lack of organization. As the codebase grew, it became harder to navigate and maintain. Today I reorganized the project into a much cleaner structure, making the code easier to understand, extend, and maintain. While there’s still room for improvement, this is a solid step toward a more scalable architecture. What’s Next? Add automation features. Implement energy consumption monitoring for Tapo devices."}, {"post_id": 23116, "ts": "2026-07-05T21:29:56Z", "hours": 0.9906, "text": "Added Authentication System Up until now, the dashboard and all API endpoints were completely open to anyone on the network — a serious problem for a system that controls cameras, smart devices, and even has Remote PC Control capabilities. I implemented a single-admin authentication layer using Flask sessions and password hashing (werkzeug), gating access behind a login page. Key changes: Added a /login route with session-based authentication Passwords are hashed (never stored in plain text) using pbkdf2:sha256 Wrapped every sensitive route with a @login_required decorator — dashboard, device control APIs, camera toggle, and system/remote-PC endpoints API routes return a clean 401 Unauthorized instead of redirecting, so the frontend can handle it gracefully Sessions auto-expire, requiring re-login after a set period This closes the biggest security gap in the project — previously, anyone with access to the local network or Tailscale IP could control devices or the PC without any barrier. Now, all of that is locked behind credentials only I know. Next steps: Rule engine for automations (trigger-based actions), followed by energy monitoring for Tapo smart plugs."}, {"post_id": 15904, "ts": "2026-06-25T21:00:48Z", "hours": 1.1647, "text": "One of the biggest improvements in this update is the error handling system. Originally, the project had very minimal error management, which could lead to unstable behavior and unclear debugging. I refactored multiple modules to introduce structured exception handling, improved logging, and more consistent API responses. This makes the system significantly more stable and easier to debug in real-world usage."}, {"post_id": 15616, "ts": "2026-06-25T12:18:35Z", "hours": 0.5661, "text": "Integration of Remote PC Control & Monitoring into Edge-AI Home Monitoring System. This way the user can control the system remotely. There is a problem with the management of Processes due to an error in the backend."}, {"post_id": 7988, "ts": "2026-06-13T10:14:41Z", "hours": 0.3117, "text": "I added support for Yeelight. It may have only taken me 15 minutes but that was because the Yeelight library I used was very simple. Also because the system is easily extensible I managed to do it in a very short time."}, {"post_id": 7979, "ts": "2026-06-13T09:46:03Z", "hours": 0.7483, "text": "Add fully suppourt for phue devices"}, {"post_id": 7959, "ts": "2026-06-13T08:58:51Z", "hours": 0.2869, "text": "Make the main class and logic for the Philips Hue lights"}, {"post_id": 4423, "ts": "2026-06-07T19:02:12Z", "hours": 0.5789, "text": "Add suppourt for Tapo Smart Plugs"}, {"post_id": 2743, "ts": "2026-06-05T14:46:14Z", "hours": 0.3408, "text": "Add model selection for tapo led strip and tapo light bulbs and make a more clear README.md"}, {"post_id": 2730, "ts": "2026-06-05T14:17:19Z", "hours": 0.6944, "text": "Setup the server! The project will be fully ready soon!!!"}, {"post_id": 2703, "ts": "2026-06-05T12:30:07Z", "hours": 0.5861, "text": "A better setup and run for servers and a more clear README.md"}, {"post_id": 2689, "ts": "2026-06-05T11:33:31Z", "hours": 1.47, "text": "Make a functional server App"}, {"post_id": 2100, "ts": "2026-06-04T13:04:12Z", "hours": 0.7119, "text": "LG TVs in Edge AI Home Monitoring System from now!!!!!!"}, {"post_id": 2071, "ts": "2026-06-04T11:56:50Z", "hours": 0.5139, "text": "Working on LG TV suppourt"}, {"post_id": 2060, "ts": "2026-06-04T11:23:24Z", "hours": 1.1203, "text": "From now Edge-AI Home Monitoring System suppourt tapo smart bulbs!!!!"}, {"post_id": 1538, "ts": "2026-06-03T16:50:58Z", "hours": 0.5186, "text": "Make a telegram bot for easily security and device control"}, {"post_id": 1509, "ts": "2026-06-03T16:05:24Z", "hours": 0.9681, "text": "Making a sequrity system using YOLO and Telegram"}, {"post_id": 1467, "ts": "2026-06-03T14:56:45Z", "hours": 0.5039, "text": "Make a better README.md file and finalize the setup proccess"}, {"post_id": 1426, "ts": "2026-06-03T13:37:14Z", "hours": 0.7961, "text": "Make better readme"}, {"post_id": 1394, "ts": "2026-06-03T12:31:57Z", "hours": 1.1769, "text": "Make a setup script"}, {"post_id": 1370, "ts": "2026-06-03T11:15:13Z", "hours": 1.5264, "text": "Make an app for easy use of AI and also ad functional control for the L900 tapo ledstrip"}, {"post_id": 1343, "ts": "2026-06-03T09:16:06Z", "hours": 1.48, "text": "A new modern dashboard and more devices"}, {"post_id": 757, "ts": "2026-06-02T12:08:30Z", "hours": 1.3436, "text": "Performance Optimization & Frontend Integration After intensive testing, the communication system with Android TV devices has been fully upgraded. The latency observed in command execution has been eliminated, and the project now features its own Web Dashboard. Key Achievements: ADB Server Persistence: Resolved the critical issue regarding the continuous restart of the ADB server. By adopting the Registry Pattern, connections are now maintained (persistent), drastically reducing response time from 5+ seconds to near-zero (real-time). Scalability: The backend has been developed to support the simultaneous control of multiple Android TVs. The system now dynamically manages connections via a central dictionary, allowing for the addition of unlimited devices through devices.json. Frontend Dashboard: Developed a minimal and responsive interface (HTML/JS) that provides full device control. Communication with the server is now handled via the Fetch API with proper CORS and JSON payload handling. Robust Error Handling: Upgraded the error reporting mechanism. The server now actively monitors module status and allows for automatic reset in case of connection restoration. Next Steps: Integration of real-time status feedback to monitor whether a TV is ON/OFF directly on the dashboard. Further optimization of utils.py for more secure inter-module communication."}, {"post_id": 723, "ts": "2026-06-02T09:50:03Z", "hours": 1.6753, "text": "Establishing the Backend Infrastructure for Edge AI Home Monitoring System Today, I successfully built the core communication layer for my Edge AI Home Monitoring System. I focused on creating a robust backend using Flask, enabling the system to act as a central hub for my home devices. Key Achievements: API Orchestration: Developed Flask endpoints (/api/light and /api/tv) to handle state management and device control requests efficiently. Hardware Integration: Implemented an abstraction layer for AndroidTV control, allowing the server to issue commands like power toggles, volume adjustment, and channel navigation over the network. Dynamic Configuration: Built a utility module to handle JSON-based device mapping, ensuring the system can scale easily by reading device IPs and types from a central devices.json configuration file. Logging System: Integrated a custom logger to monitor command execution in real-time, which is essential for debugging my edge-computing setup. Next Steps: Now that the server is successfully running and handling commands, the next phase is to add more devices and create the frontend dashboard."}]...
|
Title: Edge-AI Home Monitoring System by @Greg_ios Title: Edge-AI Home Monitoring System by @Greg_ios | Stardance
Devlogs:
Establishing the Backend Infrastructure for Edge AI Home Monitoring System Today, I successfully built the core communication layer for my Edge AI Home Monitoring System. I focused on creating a robust backend using Flask, enabling the system to act as a central hub for my home devices. Key Achievements: API Orchestration: Developed Flask endpoints (/api/light and /api/tv) to handle state management and device control requests efficiently. Hardware Integration: Implemented an abstraction layer for AndroidTV control, allowing the server to issue commands like power toggles, volume adjustment, and channel navigation over the network. Dynamic Configuration: Built a utility module to handle JSON-based device mapping, ensuring the system can scale easily by reading device IPs and types from a central devices.json configuration file. Logging System: Integrated a custom logger to monitor command execution in real-time, which is essential for debugging my edge-computing setup. Next Steps: Now that the server is successfully running and handling commands, the next phase is to add more devices and create the frontend dashboard.
Performance Optimization & Frontend Integration After intensive testing, the communication system with Android TV devices has been fully upgraded. The latency observed in command execution has been eliminated, and the project now features its own Web Dashboard. Key Achievements: ADB Server Persistence: Resolved the critical issue regarding the continuous restart of the ADB server. By adopting the Registry Pattern, connections are now maintained (persistent), drastically reducing response time from 5+ seconds to near-zero (real-time). Scalability: The backend has been developed to support the simultaneous control of multiple Android TVs. The system now dynamically manages connections via a central dictionary, allowing for the addition of unlimited devices through devices.json. Frontend Dashboard: Developed a minimal and responsive interface (HTML/JS) that provides full device control. Communication with the server is now handled via the Fetch API with proper CORS and JSON payload handling. Robust Error Handling: Upgraded the error reporting mechanism. The server now actively monitors module status and allows for automatic reset in case of connection restoration. Next Steps: Integration of real-time status feedback to monitor whether a TV is ON/OFF directly on the dashboard. Further optimization of utils.py for more secure inter-module communication.
A new modern dashboard and more devices
Make an app for easy use of AI and also ad functional control for the L900 tapo ledstrip
Make a setup script
Make better readme
Make a better README.md file and finalize the setup proccess
Making a sequrity system using YOLO and Telegram
Make a telegram bot for easily security and device control
From now Edge-AI Home Monitoring System suppourt tapo smart bulbs!!!!
Working on LG TV suppourt
LG TVs in Edge AI Home Monitoring System from now!!!!!!
Make a functional server App
A better setup and run for servers and a more clear README.md
Setup the server! The project will be fully ready soon!!!
Add model selection for tapo led strip and tapo light bulbs and make a more clear README.md
Add suppourt for Tapo Smart Plugs
Make the main class and logic for the Philips Hue lights
Add fully suppourt for phue devices
I added support for Yeelight. It may have only taken me 15 minutes but that was because the Yeelight library I used was very simple. Also because the system is easily extensible I managed to do it in a very short time.
Integration of Remote PC Control & Monitoring into Edge-AI Home Monitoring System. This way the user can control the system remotely. There is a problem with the management of Processes due to an error in the backend.
One of the biggest improvements in this update is the error handling system. Originally, the project had very minimal error management, which could lead to unstable behavior and unclear debugging. I refactored multiple modules to introduce structured exception handling, improved logging, and more consistent API responses. This makes the system significantly more stable and easier to debug in real-world usage.
Added Authentication System Up until now, the dashboard and all API endpoints were completely open to anyone on the network — a serious problem for a system that controls cameras, smart devices, and even has Remote PC Control capabilities. I implemented a single-admin authentication layer using Flask sessions and password hashing (werkzeug), gating access behind a login page. Key changes: Added a /login route with session-based authentication Passwords are hashed (never stored in plain text) using pbkdf2:sha256 Wrapped every sensitive route with a @login_required decorator — dashboard, device control APIs, camera toggle, and system/remote-PC endpoints API routes return a clean 401 Unauthorized instead of redirecting, so the frontend can handle it gracefully Sessions auto-expire, requiring re-login after a set period This closes the biggest security gap in the project — previously, anyone with access to the local network or Tailscale IP could control devices or the PC without any barrier. Now, all of that is locked behind credentials only I know. Next steps: Rule engine for automations (trigger-based actions), followed by energy monitoring for Tapo smart plugs.
Improving the Project Structure One of the biggest challenges in the project was the lack of organization. As the codebase grew, it became harder to navigate and maintain. Today I reorganized the project into a much cleaner structure, making the code easier to understand, extend, and maintain. While there’s still room for improvement, this is a solid step toward a more scalable architecture. What’s Next? Add automation features. Implement energy consumption monitoring for Tapo devices.
Added Daikin AC Support The Edge-AI Home Monitoring System now extends into climate control. I’ve added full support for Daikin air conditioners, using the pydaikin library for asynchronous communication with the device over the network. What’s New New DaikinAC class with full control: on/off, increase/decrease temperature, and mode switching (auto, cool, heat, dry, fan) New /api/daikin endpoint for device communication Integrated into the same authentication pattern used across the whole system ( @auth.login_required ), so no new device ecosystem opens a security gap Dashboard controls for Daikin devices, including a mode selection dropdown Challenges Since pydaikin is fully asynchronous (async context managers), each client call had to be wrapped with asyncio.run() to fit into the rest of the synchronous Flask backend — the same approach used for the Tapo devices. Next Steps Rule Engine / Automations system, followed by energy monitoring for the Tapo smart plugs.
Create Autoation Manager class
Automations are Live: Schedules & Event Triggers The Rule Engine I mentioned as “next steps” in the last few devlogs is now fully working. The Edge-AI Home Monitoring System can now react on its own, without me touching the dashboard. What’s New New AutomationManager class that manages rules independently of the Flask request lifecycle, running on its own background thread Schedule triggers : fire any device action at a specific time of day (cron-based under the hood, e.g. “turn off all lights at 23:30”) Event triggers : fire actions the moment something happens in the system — currently wired up to the YOLO security pipeline, so a rule can say “when a person is detected, turn on the living room lights” Automations are managed straight from the dashboard: add a rule (pick a device, a command, and either a time or an event), see the active list, delete on demand — no need to touch the config files by hand Rules persist to disk, so they survive a server restart Challenges The trickiest part wasn’t the scheduling logic itself — it was making sure automation actions don’t accidentally go through the same path as normal API requests. Since every device endpoint is gated behind session-based login, having the automation thread call itself over HTTP triggered 401s (a background thread has no browser session, obviously). Fixed by having automation actions call the device classes directly instead of looping back through HTTP — cleaner and faster anyway, since it skips a full request round-trip for something that’s technically internal. Next Steps Energy monitoring for the Tapo smart plugs, so automations can eventually be built around actual consumption data too.
Device-Triggered Chaining: Automations Now React to Device State Changes The Rule Engine already supported schedule triggers and one hardcoded event source (the YOLO “person_detected” signal). This update adds a much more general capability: automations can now trigger off of any device state change , not just security events. What’s New Added emit_device_event(room, dev_type, command), a helper that builds an event name in the form {room} {dev_type} {command} (e.g. living_room_lg_tv_on) and forwards it to AutomationManager.trigger_event. Wired this into the /api/tv endpoint: every time a TV command succeeds, the system now emits an event describing exactly what just happened. This means a rule can be created like “when the Living Room TV turns on → turn on the Living Room lights” without any new trigger type — it reuses the same event-rule machinery already built for the security pipeline. Event names are deterministic and human-readable, so building new automations from the dashboard just means picking the right device + command combo as the trigger. Why This Matters Until now, “smart” behavior meant either a fixed schedule or a single special-cased sensor event. This generalizes the pattern: any device action can become a trigger for any other device action, which is the actual foundation of “automation chaining” (TV on → lights on, plug on → AC on, etc.) rather than a one-off integration. Challenges emit_device_event is currently only called from the TV handler. The Tapo, Philips Hue, Yeelight, and Daikin handlers don’t emit events yet, so right now only TV state changes can kick off a chain — everything else is still a dead end as a trigger source. This is the next thing to close. Needed to be careful that emitting the event happens after the command actually succeeds, not just after it’s requested, so a failed TV command doesn’t fire a chain based on a state change that never happened. Next Steps Add emit_device_event calls to the remaining device handlers (Tapo light/LED strip, Hue, Yeelight, Daikin) so any device can act as a trigger, not just TVs. Once persistence for automation actions is fully solid across restarts, move on to energy monitoring for the Tapo smart plugs.
Shelly Support Added The Edge-AI Home Monitoring System now supports Shelly smart relays, using the ShellyPy library to control relay-based devices (plugs, switches, etc.) over the local network. What’s New New Shelly class wrapping ShellyPy.Shelly , with turn_on_relay / turn_off_relay methods and an execute_command dispatcher for on / off commands. New /api/shelly endpoint that reads the device’s IP and relay_number from devices_config.json and forwards the command to the relay. Registered shelly in DEVICE_ENDPOINTS and wired it into create_device_action , so Shelly devices can already be used as automation actions (schedule or event triggered), same as every other device type. Why This Matters Shelly relays are a common, cheap way to add “dumb” appliances into the automation system — a fan, a boiler, anything behind a relay can now be toggled from the dashboard or from a rule, without needing a dedicated smart-device ecosystem. Challenges Noticed /api/shelly is currently missing the @auth.login_required decorator that every other device endpoint has — since authentication was added, this is the one route that slipped through. Needs to be fixed before this ships anywhere network-exposed. Shelly relays are addressed by relay_number rather than an id /model like the other integrations, so the config schema needed a small variation ( relay_number field) instead of reusing the existing device pattern exactly. emit_device_event isn’t wired into the Shelly handler yet, so — like the other non-TV devices — a Shelly state change can’t currently act as a trigger for other automations. Next Steps Add the missing @auth.login_required to /api/shelly . Wire emit_device_event into the Shelly (and remaining) handlers so any device can be both an action and a trigger source. Once event emission is consistent across all device types, move on to energy monitoring for the Tapo smart plugs.
Kasa (TP-Link) Support Added The Edge-AI Home Monitoring System now supports TP-Link Kasa smart plugs/switches, using the python-kasa library’s async Discover API for device communication. What’s New New Kasa class that discovers a device by IP via Discover.discover_single() (with optional username/password for cloud-authenticated devices) and wraps turn_on / turn_off / execute_command behind the same asyncio.run() pattern already used for Daikin and the Tapo devices. New /api/kasa endpoint, gated behind @auth.login_required like the rest of the device APIs. Registered kasa in DEVICE_ENDPOINTS and wired it into create_device_action , so Kasa devices can already be used as automation actions from day one. Added send_kasa and send_daikin helper functions alongside the other device senders, for consistency across the codebase. Why This Matters Kasa is one of the most common smart plug ecosystems out there, so this adds another affordable device family to the system without needing a proprietary hub — anything plugged into a Kasa switch can now be turned on/off from the dashboard or from an automation rule, the same way Tapo and Shelly devices already are. Challenges Ran into a syntax issue in async_connect : await self.device = Discover.discover_single(...) isn’t valid — assignment has to come first, i.e. self.device = await Discover.discover_single(...) . Needs fixing before this can actually run. handle_kasa currently points at a config path ( /config/device_config.json ) that doesn’t match the filename ( devices_config.json ) or the relative-path convention used by every other handler — needs to be corrected to "config/devices_config.json" . Same route also references data["Room"][room][dev_type][number][ip] with ip unquoted (a variable reference instead of the string key "ip" ), which will throw a NameError rather than the intended KeyError . emit_device_event still isn’t wired into the Kasa (or Shelly) handler, so — same as the other non-TV devices — Kasa state changes can’t yet act as automation triggers. Next Steps Fix the await /assignment order bug in Kasa.async_connect , the config path, and the unquoted "ip" key in /api/kasa before testing against a real device. Wire emit_device_event into Kasa, Shelly, and the remaining handlers so any device can act as both an action and a trigger. Once event emission is consistent across all device types, move on to energy monitoring for the Tapo smart plugs.
Broadlink IR Learning App + Voice Guidance in Setup The Edge-AI Home Monitoring System now has its own tool for learning IR signals, as well as voice guidance throughout the setup process. What’s Added Broadlink IR Learning App New desktop application (customtkinter) that connects to a Broadlink device (RM-series) via broadlink.discover() and authenticates automatically. Device type selection (TV / AC / Decoder) with dynamic list of commands depending on the type (on/off, channel up/down, volume, direction, menu, etc.). “Learn & Save” function: Broadlink enters learning mode, waits for the signal from the real remote control and saves the hex packet. The signals are stored in two places: broadlink_codes.json — file-library of all codes per room/device/command. devices_config.json — so that the device is automatically registered as an entry in the system’s main config, with flag is_broadlink_device: true . Voice Guidance in Setup Wizard Added text-to-speech (via pyttsx4 , in a separate thread so as not to block the UI) to each step of the setup wizard: installing dependencies, downloading AI model, creating password, setting Tailscale, Telegram token/chat ID, and registering devices. Each device type during registration (Tapo, Philips Hue, Shelly, Broadlink, etc.) now “explains” vocally which fields need to be filled in, making the process more accessible for someone who is setting up the system for the first time without reading documentation. Also added broadlink as a new device type in the setup wizard dropdown, which opens the Learning App directly when selected. Why It Matters Until now, the system only supported devices with official APIs (Tapo, Hue, Yeelight, LG WebOS, Daikin). Many “dumb” devices at home (old ACs, decoders, TVs without smart features) are controlled only via IR remote — the Broadlink learning app paves the way to integrate virtually any device with an IR remote into the ecosystem, without the need for a special library per brand. Voice guidance also makes setup more accessible — less need to read README step by step, the system tells you what to do live. Challenges async_connect of the Kasa class has incorrect syntax ( await self.device = ... instead of self.device = await ... ) — same problem as previous devlog, still pending. In the Learning App, the device data is temporarily stored in two separate files ( broadlink_codes.json and devices_config.json ) — care must be taken to ensure that they do not become out of sync if a write fails in the middle. The Broadlink device is always identified as devices[0] by broadlink.discover() — if there are multiple Broadlink devices on the network, the app will always connect to the first one found, without selection. TTS requires CoInitialize / CoUninitialize on each thread (Windows-specific), which makes the code less portable to other OSes. Next Steps Full support for sending signals via Broadlink devices (not just learning) — i.e. new /api/broadlink endpoint and Broadlink class in the backend that will read the stored hex codes from broadlink_codes.json and send them via device.send_data() . Integrate Broadlink devices as actions in the Rule Engine, so they can be used in automations like any other device. Wiring emit_device_event to Broadlink sends, so they can also be trigger sources. Fix bug in Kasa.async_connect before any other work on Kasa progresses.
Full Broadlink Universal Remote Support The Edge-AI Home Monitoring System now includes complete support for Broadlink Universal Remotes , allowing the platform not only to learn IR commands but also to transmit them directly to infrared-controlled devices. What’s New Added a dedicated Broadlink backend integration for sending stored IR commands. Implemented a new /api/broadlink endpoint for controlling Broadlink devices from the dashboard and automation engine. Added a Broadlink device class responsible for: Connecting and authenticating with Broadlink RM-series devices. Reading learned IR codes from broadlink_codes.json . Sending IR packets using device.send_data() . Full support for controlling: TVs Air Conditioners TV Decoders / Set-Top Boxes Broadlink devices are now treated like any other supported smart device and can be used throughout the entire system. Why It Matters This is a major milestone because the system is no longer limited to devices with official APIs. Thousands of legacy appliances—including older televisions, air conditioners, and cable/satellite decoders—can now be integrated into the smart home ecosystem using only their existing infrared remote controls. Users can control these devices from: The Web Dashboard Automation Rules Future Voice Assistant integrations Any API client connected to the system This significantly expands compatibility while maintaining the project’s privacy-first, local-control philosophy. Challenges IR packets must be converted back into raw byte format before transmission. Maintaining synchronization between learned codes and registered Broadlink devices remains important as the number of supported devices grows. Multiple Broadlink hubs on the same network still require a device selection mechanism, which will be addressed in a future update. Next Steps Add automatic Broadlink hub discovery and selection. Integrate Broadlink commands into the Rule Engine as event triggers. Add support for macro commands (multiple IR signals with delays). Improve the dashboard with command management and testing tools.
Samsung Smart TV Support Added 📺 The Edge-AI Home Monitoring System now includes full support for Samsung Smart TVs running Tizen OS, expanding the platform’s smart device ecosystem with another major TV manufacturer. This integration uses the Samsung TV WebSocket API, allowing the system to communicate directly with compatible TVs over the local network without requiring additional hardware such as IR blasters. What’s New Added a new Samsung TV backend integration using the samsungtvws Python library. Implemented support for: Power control (ON/OFF) Remote key commands Volume control Device information retrieval Samsung TVs are now registered as a native device type inside the system, following the same architecture used by other integrations such as LG WebOS, Daikin, Tapo, Hue, Yeelight, Shelly, and Broadlink. Why It Matters Until now, TV support was mainly focused on LG Smart TVs and IR-controlled televisions through Broadlink. With Samsung Smart TV support, the system can now directly control another major smart TV ecosystem using its official network interface. This improves: Response time compared to IR control Local-only communication (no cloud dependency) Compatibility with more homes Technical Details The integration communicates with Samsung TVs through: Samsung Tizen WebSocket API Local network TCP communication Device authentication pairing The system keeps the same device abstraction model used by the rest of the project, making Samsung TVs behave like any other controllable smart device. Challenges Some challenges during implementation: Handling Samsung’s first-time pairing approval system Managing WebSocket connections reliably Ensuring compatibility between different Tizen TV models Mapping Samsung remote key codes into the existing device command structure Next Steps Future improvements: Add automatic Samsung TV discovery Add real-time TV status feedback (power state, current app, volume) Add voice assistant commands for Samsung TVs - Add more controls Samsung Smart TVs are now another fully supported platform in the Edge-AI Home Monitoring System, bringing the project closer to becoming a complete privacy-first smart home hub.
UI Modernization & Native Sonos Integration 🎵🎨 A massive structural and visual update has landed! The Edge-AI Home Monitoring System dashboard has been rewritten into a production-grade, single-page interface using the modern Inter typeface family. Alongside this visual overhaul, we are introducing native, local-only support for Sonos Smart Audio Devices . What’s New 1. High-End Minimalist UI & CSS Token Architecture The new interface shifts away from crowded layouts to a highly scannable, component-driven architecture featuring a strict color and spacing utility system built directly into :root . Unified Palette System: Built entirely on minimal token foundations: light-mode canvas backgrounds ( #fafafa ), precise surface modules ( #ffffff ), and structural crisp border outlines ( #e7e7e7 / #d9d9d9 ). Blur-Effects Navigation Header ( .topbar ): A sticky system header utilizing backdrop-filter: blur(8px) that embeds the new brand mark ( A Home ) alongside a live status strip displaying the total device count, registered automations, and an immediate visual green heartbeat indicator ( .live-dot ). Decoupled Grid Control ( .grid ): Devices are rendered dynamically using a responsive auto-fill layout ( minmax(240px, 1fr) ) with explicit styling classes for device actions ( .btn.on for soft green feedback, .btn.off for soft red, and .btn.accent for special triggers). Asynchronous AI Assistant Component ( .ai-panel ): A dedicated section housing the local LLM interaction logic, optimized with a smooth CSS-animated text typing loop ( @keyframes dotfade ) to indicate processing states without blocking UI interactions. 2. Native Sonos Smart Audio Core Integration Audio control joins our local device tree. The system now natively communicates with Sonos devices over the local network via unified backend hooks, matching our privacy-first design patterns. The control grid maps the specific target API endpoints directly to native UI inputs, enabling immediate transmission of core execution parameters: play — Resumes audio streaming ( .btn.on ) pause — Pauses current media layout tracking stop — Breaks audio buffering completely ( .btn.off ) volume_up & volume_down — Alters hardware volume steps Real-Time “Now Playing” UI Subview Sonos control cards now dynamically build and inject an interactive media HUD element ( .now-playing ). Dynamic Media Binding: Communicates with the new /api/music/current endpoint via explicit POST JSON payloads ( { room, type, number, command: 'get', device } ). Visual Playback Flags: Implements dynamic active toggles ( .now-playing.playing ) that shift asset opacity states depending on network audio feedback. Non-Blocking Control Pulls: The inline manual update button ( .np-refresh ) relies on an isolated asynchronous CSS loop wrapper ( @keyframes spin ) allowing updates without triggering full dashboard asset re-renders.
🚀 One of the Biggest Updates: Docker-Based Setup & Minimal Installation The Edge-AI Home Monitoring System has just received its most significant infrastructure overhaul yet! We have completely re-engineered the deployment workflow. Instead of dealing with manual environment configurations, matching Python versions, and tracking down dependency conflicts, the entire ecosystem can now be spun up instantly with a single command. 🐳 What’s New: Containerized Architecture By migrating the platform to a fully containerized backend , we’ve moved away from fragile local setups closer to a production-grade deployment. Key Improvements: Isolated Environment: The Flask backend and all its core libraries run inside an isolated Docker container, completely immune to host-system configuration drifts. Automated Dependency Management: All heavy-lifting dependencies are resolved and cached automatically inside the image. State & Configuration Persistence: Your custom devices_config.json , automation rules, and local database models are securely mapped via Docker volumes, meaning they persist perfectly across container restarts and updates. High Portability: Moving the hub from a development PC to a dedicated home server (like a Fedora Linux box or a Raspberry Pi) is now completely seamless. ⚡ Setup: Before vs. After The difference in onboarding friction is night and day. Look at how the installation footprint has shrunk: Old Manual Setup New Docker Workflow ❌ Install Python manually & match versions 📦 Pre-configured runtime environment ❌ Create virtual environments ( venv ) 📦 Isolated container filesystems ❌ Debug pip dependency conflicts 📦 One-time automated image build ❌ Manually set environment variables 📦 Declarative configuration via Compose ❌ Run background scripts step-by-step 📦 Single-command multi-service launch The New Minimal Installation Path: Now, launching your privacy-first smart home hub requires nothing more than standard container tools: # Clone the repository git clone https://github.com/travletothefurureprogramming/Edge-AI-Home-Monitoring-System # Navigate to the project root cd Edge-AI-Home-Monitoring-System # Spin up the entire system in detached mode docker compose up -d
🐳 Docker Setup: 100% Functional Docker support for the Edge-AI Home Monitoring System is now fully working end-to-end. What’s New First-Run Setup via HTML : Instead of manual configuration steps, the very first launch now opens a lightweight HTML setup page that walks through the initial configuration once (credentials, device registration basics, etc.). After this one-time run, it’s never needed again — the container remembers everything through the persisted config volumes. One Command to Rule Them All : The whole system — Flask backend, Docker container, and now the first-run setup — is launched with a single script: Windows: start.bat Linux: start.sh No more manually running docker compose , checking dependencies, or following multi-step instructions. Just run the script for your OS and the entire stack comes up ready to use. Why It Matters This closes the loop on the Docker migration from a few devlogs ago. Before, Docker removed the Python/venv/dependency headaches but still required knowing the right compose commands. Now the onboarding experience is genuinely “clone → run one script → done,” with the HTML first-run page handling the last bit of manual setup that used to require touching config files by hand.
🧪 Reliability & CI Improvements This update also focuses on improving the project’s reliability and development workflow. What’s New Added 20 Pytest test cases covering the core functionality of the system, helping verify that critical components behave correctly and reducing the risk of regressions. Configured GitHub Actions to automatically execute the entire test suite after every commit and pull request, ensuring new changes don’t break existing functionality. Why It Matters Automated testing and Continuous Integration (CI) make the project more robust, maintainable, and production-ready. Every code change is now automatically validated before it becomes part of the project, providing faster feedback during development and increasing confidence in future updates.
Ships:
I have made an Edge-AI Home Monitoring System. It is a privacy-first, edge-AI home automation hub using Linux, Flask, and real-time control to orchestrate smart devices.
Over the past few weeks, Edge-AI Home Monitoring System has evolved from a basic smart home controller into a much more capable home automation platform. New Features Added YOLO-based security monitoring Integrated Telegram bot for remote alerts and device control Added support for Tapo Smart Bulbs Added support for Tapo Smart Plugs Added support for Philips Hue devices Added support for Yeelight devices Added support for LG Smart TVs Added Remote PC Control & Monitoring Infrastructure Improvements Built a full Flask server backend Added a responsive Web Dashboard Improved setup process with automated setup scripts Reworked documentation and README Reliability Improvements Refactored multiple modules with structured exception handling Added better logging and debugging tools Improved API responses and backend stability Enhanced scalability for future device integrations The project is now much closer to becoming a complete privacy-first edge AI smart home hub capable of controlling multiple device ecosystems from a single interface.
Most smart homes are leased, not owned. Every command you send travels to a cloud you don’t control, owned by a company with interests misaligned to yours. This system proves that meaningful control of your physical space doesn’t require surrendering it to a vendor. Edge-AI Home Monitoring is a locally-governed, vendor-independent home automation platform designed to answer: can a household be sovereign over its own infrastructure?...
|
1793134513.7648993
|
1793220913.7648993
|
|
58861
|
Perfect Weather by @photosoflaptop12 | Stardance
|
photosoflaptop12
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T05:45:41Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I make a weather forecasting application by using python . And it is too good because when you search city name then it show the weather of that city.", "repo": "https://github.com/Prashant2881/Perfect-Weather", "demo": "https://youtu.be/O8Vi1NRqaqw"}]...
|
[{"post_id": 63386, "ts": "202 [{"post_id": 63386, "ts": "2026-09-07T05:42:38Z", "hours": 1.9592, "text": "I was working on the weather forecasting application by using python , through this project i more learning about python."}]...
|
Title: Perfect Weather by @photosoflaptop12 | Star Title: Perfect Weather by @photosoflaptop12 | Stardance
Devlogs:
I was working on the weather forecasting application by using python , through this project i more learning about python.
Ships:
I make a weather forecasting application by using python . And it is too good because when you search city name then it show the weather of that city....
|
1792878508.814414
|
1793742508.814414
|
|
34601
|
Tempo by @evanssidhu | Stardance
|
evanssidhu
|
2
|
97.0
|
1805
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T05:07:17Z", "hours": 4.0, "multiplier": 11.52, "payout": 50, "blessing": "neutral", "text": "This is the second ship of the project. This is a pretty small ship aimed at addressing some feedback posted during my last ship. Originally I planned to do a complete UI overhaul, but I decided to just focus on minor improvements now since I have to balance projects with school and don’t know if I am going to have time to work on projects as much. I also want to take a little break from projects to focus on my mental health as well since I have been dedicating multiple hours almost every day purely on making projects. Anyways, enough about that and back to the project. If you want to see the changes from the previous ship, I have them outlined in the devlog below. If you want to see the main features added in the first ship, I have it posted as well shortly below to read. Thank you and I hope you like using my project, if you have any more feedback please outline it in your vote message as I love hearing how I can make my projects better. If you do not want to scroll down to the previous ship message or the readme, here is it posted below. Previous Ship Message Tempo is finally complete. It took way too many hours to finish, mostly through self inflicted pain of using hooks instead of asynchronous functions for the engine. I know that this might not be the greatest project for how long it took, but I am proud to say that it’s finally been shipped even after the many times I wanted to quit. I made this project because I play a little bit of chess and after getting limited to only 1 game review per day I thought it would be a good idea to make my own game review (yes I know other sites exist but wheres the fun in that). Anyways enough about that, here are the project features (definetly not copied from the readme) Features Game Review: Check how well you played in your previous games by simply entering your chess.com username or by manually loading a pgn file. Move Feedback: Instant updates on how well the engine thinks your move is. Move Classifications: How well the engine evaluates your moves. Classifications such as Miss, Great, or Brilliant are also included. Engine Lines: What the engine thinks is the best line to play in a position. Accuracies: How accurate you played relative to the best moves Graph: A visual and interactive graph on how much your expected win percentage changed throughout a game Classification Report: A total summary of how many of each type of move you played History Tree: View the total game history and easily branch off the main path. Play: Play against a friend in person, or play against the engine. Custom positions can be used as well. Custom Positions: Set up a custom position to load later. Settings: Change the app or board theme. If you are still reading this, thank you and I hope you enjoy using my site.", "repo": "https://github.com/es1228/Tempo", "demo": "https://es1228.github.io/Tempo/"}, {"ship_num": 2, "ts": "2026-08-16T22:48:34Z", "hours": 93.0, "multiplier": 18.77, "payout": 1755, "blessing": "neutral", "text": "Ship Message Tempo is finally complete. It took way too many hours to finish, mostly through self inflicted pain of using hooks instead of asynchronous functions for the engine. I know that this might not be the greatest project for how long it took, but I am proud to say that it’s finally been shipped even after the many times I wanted to quit. I made this project because I play a little bit of chess and after getting limited to only 1 game review per day I thought it would be a good idea to make my own game review (yes I know other sites exist but wheres the fun in that). Anyways enough about that, here are the project features (definetly not copied from the readme) Features Game Review: Check how well you played in your previous games by simply entering your chess.com username or by manually loading a pgn file. Move Feedback: Instant updates on how well the engine thinks your move is. Move Classifications: How well the engine evaluates your moves. Classifications such as Miss, Great, or Brilliant are also included. Engine Lines: What the engine thinks is the best line to play in a position. Accuracies: How accurate you played relative to the best moves Graph: A visual and interactive graph on how much your expected win percentage changed throughout a game Classification Report: A total summary of how many of each type of move you played History Tree: View the total game history and easily branch off the main path. Play: Play against a friend in person, or play against the engine. Custom positions can be used as well. Custom Positions: Set up a custom position to load later. Settings: Change the app or board theme. If you are still reading this, thank you and I hope you enjoy using my site.", "repo": "https://github.com/es1228/Tempo", "demo": "https://es1228.github.io/Tempo/"}]...
|
[{"post_id": 63372, "ts": "202 [{"post_id": 63372, "ts": "2026-09-07T04:54:05Z", "hours": 0.6231, "text": "Devlog 24 Small devlog, I was about to do another ship after addressing the feedback from last time, but I noticed a small bug where brilliant moves did not show sometimes. It turns out the issue was much simpler than I was testing for and it was due to a small multiplication sign error when converting the mate evaluation to centipawns to check if a move was winning."}, {"post_id": 63350, "ts": "2026-09-07T03:58:57Z", "hours": 3.7075, "text": "Devlog 23 Hello again everybody! I know its been a long time since I last worked on this project, but I read the feedback on this project and addressed your suggestions. Most of the feedback was on ui/ux improvements, so as a result I removed all mentions of infinity/nan on the site, as it looks rather unpolished and unprofessional. I also changed the modal dialogs from the built in alert function to a less intrusive custom toast notification. Lastly, a couple people said the engine took slightly long to make moves, so I slightly lowered the engine depth for games and also removed another delay I originally added to make the engine feel more human like in its thinking time. In terms of the game review engine I decided to keep it the same as it works pretty quickly due to a worker pool being used, but I did change the dialog slightly to make it feel like something is happening in the background, which suprisingly actually makes it feel faster. Anyways, to everyone that tried this project and gave feedback, thank you as it was much appreciated."}, {"post_id": 48501, "ts": "2026-08-16T21:30:43Z", "hours": 1.5022, "text": "Devlog 22 The site is now live. I actually had a lot of issues in deploying this site for some reason (mainly due to the large stockfish binaries stored in git lfs and the coi serviceworker) and my deployments just kept failing. I eventually got it straightened out now and I am ready to ship the project."}, {"post_id": 47758, "ts": "2026-08-15T21:57:35Z", "hours": 2.4678, "text": "Devlog 21 The history view has finally been properly migrated to a tree structure. Now since that is finally complete, I know it has been long overdue but it is finally time to ship this project."}, {"post_id": 47293, "ts": "2026-08-15T04:37:46Z", "hours": 6.0658, "text": "Devlog 20 Another devlog here focusing on bug fixes, and I am happy to say that almost everything is pretty much complete. I’ve fixed pretty much every out of sync issue, and even got game reviews to load pretty much instantly. It literally took only around 5 seconds to load a 65 move game, so that is finally optimized. I think the issue was some web workers were not terminating properly and taking up too much memory. Anyways I hope to finally have this project out very soon, and the only thing I might to is try to get the history tree working. Today I actually did kind of get it to work but it caused massive performance degradations for some reason and was causing some conflicts with other components as well."}, {"post_id": 47078, "ts": "2026-08-14T18:24:08Z", "hours": 4.785, "text": "Devlog 19 More progress has been made adding features and fixing bugs. I’ll highlight the changes below. Features Game Chart The game chart has been updated to include custom dots and lines showing the move classifications and key points during the game (brilliant moves, great moves, mistake, blunder, and miss). You can also click on the chart to go to that move. History View The history view has now been updated to show the classification icons next to the move, which should make it easier to find moves you are looking for Fixes/Optimizations Memoization Data in the game chart has now been memoized. This prevents the chart from crashing the page due to trying to process data many times per second. Stockfish evaluations Game review evaluations now use an active worker pool to run multiple evaluations at once rather than just one at a time. Positions are also cached now so all evaluations share 1 chess instance. In practice, this has reduced the game review time for a 20 move game from over 1 minute to around 7 seconds, which is around a 90% decrease."}, {"post_id": 46601, "ts": "2026-08-13T23:14:42Z", "hours": 2.3281, "text": "Devlog 18 A few things in this devlog, I separated the game review panel into 2 sections containing the review report and engine analysis. I’ve also refined the classifications for great and brilliant. Brilliant Move Changes The sacrifice can now be anywhere on the board, not just for the piece that moved Trading a lower value piece for a higher value piece (ex: taking a knight but losing a pawn) no longer counts as brilliant Illegal moves (pins, checks, etc.,) no longer contribute to the attacking piece values Great Move Changes Taking a hanging piece or trading lower value pieces for higher value pieces (ex: capturing a hanging queen or recapturing during a trade) no longer count as great moves."}, {"post_id": 46134, "ts": "2026-08-13T04:37:45Z", "hours": 1.8517, "text": "Devlog 17 After a long time, I’ve finally added brilliant moves. This was done by comparing a squares attackers and defenders to determine if the piece is hanging. If a move results in that piece being hanging/sacrificed, and is the top engine move, then the classification will return brilliant. I’ve attached an example below in a game where GothamChess does what he does best and sacrifices both his rooks."}, {"post_id": 46084, "ts": "2026-08-13T01:13:20Z", "hours": 3.2308, "text": "Devlog 16 I’ve added the last 2 features related to game review, accuracies and the eval chart. The last thing I plan to to is add some polish, brilliant moves, and maybe try working on the history/pgn tree again."}, {"post_id": 45932, "ts": "2026-08-12T18:35:37Z", "hours": 2.4761, "text": "Devlog 15 I’ve added a few more features related to game review in this devlog. First, I added a section to view the top 2 engine lines on each move. I’ve also added a table to view classifications for the entire game."}, {"post_id": 45416, "ts": "2026-08-11T20:58:03Z", "hours": 0.9417, "text": "Devlog 14 I’m going to post more frequently as this project gets wrapped up, and I’ve just finished caching the game review data so feedback is instant if you load in game to review. I also decided to add colors to the start and end squares based on classification because it looks nice. I’ve attached a video below, I don’t know why my screen recorder records very laggy but I promise it’s not actually that laggy."}, {"post_id": 45004, "ts": "2026-08-11T04:20:50Z", "hours": 4.3753, "text": "Devlog 13 I’ve been working on the game review stats, and i’ve implemented a function to classify an entire game and tally up the classifications (which was actually harder than it looked, since i needed to rewrite my hooks since hooks cannot be called within functions). It now works pretty decently, but I do want to optimize performance a bit since it takes a while. Funnily enough there was an issue where if the worker resolved too early it would not terminate and create a memory leak and eat your entire system memory, but thats fixed now."}, {"post_id": 44308, "ts": "2026-08-09T23:45:35Z", "hours": 7.9586, "text": "Devlog 12 I really don’t like going this long without posting a devlog, but debugging move classifications was really painful. I encountered an issue where if you went through many moves very quickly, it resulted in classifications not working properly since stockfish could only give evaluations for the current move. This is not ideal since most classifications require checking the evaluation drop, which requires 2+ points of evaluation. I tried many things, first I tried running 3 different stockfish web workers inside the stockfish hook, which caused a couple issues and was not very performant. Next I tried using a single worker and passing in 3 positions, however since the web worker is single threaded it didn’t really work all that well. I also tried using a queue to run each instance one at a time, but that got complex quickly and still did not work. I also wanted to merge the classification and evaluation hooks, which created a 500 line mess of a file which was a nightmare to maintain. Finally, I decided to revert all my changes and keep the hooks separate and simple, and created 3 instances of evaluation hooks within my classification hook. This was much cleaner and actually worked really well, so I wasted 8 hours making things too complex.# Devlog 12 I really don’t like going this long without posting a devlog, but debugging move classifications was really painful. I encountered an issue where if you went through many moves very quickly, it resulted in classifications not working properly since stockfish could only give evaluations for the current move. This is not ideal since most classifications require checking the evaluation drop, which requires 2+ points of evaluation. I tried many things, first I tried running 3 different stockfish web workers inside the stockfish hook, which caused a couple issues and was not very performant. Next I tried using a single worker and passing in 3 positions, however since the web worker is single threaded it didn’t really work all that well. I also tried using a queue to run each instance one at a time, but that got complex quickly and still did not work. I also wanted to merge the classification and evaluation hooks, which created a 500 line mess of a file which was a nightmare to maintain. Finally, I decided to revert all my changes and keep the hooks separate and simple, and created 3 instances of evaluation hooks within my classification hook. This was much cleaner and actually worked really well, so I wasted 8 hours making things too complex."}, {"post_id": 41619, "ts": "2026-08-05T22:47:45Z", "hours": 2.9967, "text": "Devlog 11 I am finally back to this project, and this time did not wait 8 hours to post a devlog. Anyways, I added two major features today, custom position imports (which I forgot to do last time) and engine play. Features Custom Position Imports You can now import a position into the custom position editor, which is great for things like loading puzzles and endgames to practice against the engine. You can also export positions by pressing the copy button to copy the position fen to the clipboard. Play Against Engine You can now play games against stockfish, and choose a difficulty level from 0-20. As mentioned above I believe this is a quite useful feature for things like just playing by yourself or practicing different endgames against the computer. Roadmap Stockfish Web Worker Chessboard/Gameplay Basic Classifications Opening Names Evaluation Bar Site Styling Board Controls Importing from other sources (FEN, PGN, Chess.com, etc.,) Playback Controls Board Themes/Styles Miss and Great moves History View Play In Person Custom Position Setup Play Against Engine Full Game Review/Engine Analysis (In Progress) Brilliant Moves"}, {"post_id": 37328, "ts": "2026-07-29T23:27:39Z", "hours": 8.7039, "text": "Devlog 10 I finished work on in-person gameplay and custom position setups, all that is left now is to finish adding engine play, polish game review, and add brilliant moves. Promotions You can now choose the piece you would like to promote to (no longer auto queen). In Person Play You can now create a game to be played in person between 2 people. Time controls are also availible. Custom Positions You can now load custom positions via drag and drop, which is useful for practicing endgames or creating puzzles. Roadmap Stockfish Web Worker Chessboard/Gameplay Basic Classifications Opening Names Evaluation Bar Site Styling Board Controls Importing from other sources (FEN, PGN, Chess.com, etc.,) Playback Controls Board Themes/Styles Miss and Great moves History View Play In Person Custom Position Setup [] Full Game Review/Engine Analysis (In Progress) Play Against Engine (In Progress) Brilliant Moves"}, {"post_id": 36679, "ts": "2026-07-28T21:54:34Z", "hours": 8.5064, "text": "Devlog 9 I tried to convert the history from a linear array into a tree, and it did not go well. I spent literal hours trying to get it to work and look at tutorials, but it just did not want to work. So for now i’ve decided to stop working on that feature, and just focus on the last few remaining tasks. I do have to fix a couple of things since a lot of features are currently in progress, but I will post another devlog later showing the updated features."}, {"post_id": 34189, "ts": "2026-07-24T18:26:16Z", "hours": 7.4164, "text": "Devlog 8 Sorry again for the long devlog, some things took a bit longer than I expected. Anyways, icons/glyphs have been added in this devlog. I’ve also fixed some issues with move backtracking. Additional classifications such as miss and great have been added, which took a while since I had to do a lot of refactors to store all the data in cache, and I also didn’t realize I sometimes was tracking the evaluations for the next moves, not the ones just played, which took a while New classifications Miss : Miss is when the previous player makes a bad move, but the next player fails to capitalize on it causing the evaluation to drop back to near where it was before. Great : Great moves are the only moves in the position that work, provided that the outcome is drawn or winning and you are not already winning had you not played the move. It compares 2 lines of stockfish to evaluate the evaluation difference and check for the conditions outlined above. Roadmap Stockfish Web Worker Chessboard/Gameplay Basic Classifications Opening Names Evaluation Bar Site Styling Board Controls Importing from other sources (FEN, PGN, Chess.com, etc.,) Playback Controls Board Themes/Styles Miss and Great moves History View (In Progress) Full Game Review/Engine Analysis (In Progress) Play In Person Play Against Engine Custom Position Setup Brilliant Moves"}, {"post_id": 33467, "ts": "2026-07-23T13:22:55Z", "hours": 2.5939, "text": "Devlog 7 Lots of QOL features and fixes added today, i’ve added a basic view of move history, and added a settings page where you can change the theme of the website or board. Next, I do want to work on features that do not involve the game review, such as pass and play or engine play. Move History You can now properly go through a game’s moves and view all played moves in the side pane. Themes Website theming has been added, alongside being able to choose the colors you would like the board to be. Roadmap Stockfish Web Worker Chessboard/Gameplay Basic Classifications Opening Names Evaluation Bar Site Styling Board Controls Importing from other sources (FEN, PGN, Chess.com, etc.,) Playback Controls Board Themes/Styles History View (In Progress) Full Game Review/Engine Analysis (In Progress) Play In Person Play Against Engine Custom Position Setup Advanced Classifications (Miss, Great, Brilliant)"}, {"post_id": 32763, "ts": "2026-07-22T03:57:08Z", "hours": 3.5231, "text": "Devlog 6 Second devlog today, this is more of an extension of the previous devlog since a lot of features were not fully polished yet. Since then move playback has been added and I also added a game review container. Most of the logic has now been implemented, all thats left now is a little polish and styling. The only logic thats left is trying to find a way to add proper move history and advanced classifications. I also attached a demo video this time since I forgot to last devlog. Move Playback It is now possible to use arrows to traverse forwards and backwards if a PGN file is imported. Game Review Container I added a little side container which will be used to show the stats of the game review. Currently it only shows the opening and move feedback, but it will be expanded to show accuracies and a full breakdown of the analysis and position similar to chess.com. Roadmap Stockfish Web Worker Chessboard/Gameplay Basic Classifications Opening Names Evaluation Bar Site Styling Board Controls Importing from other sources (FEN, PGN, Chess.com, etc.,) Playback Controls History View Board Themes/Styles Play In Person Play Against Engine Custom Position Setup Advanced Classifications (Miss, Great, Brilliant) Changelog 0e4db3c e2552b0"}, {"post_id": 32610, "ts": "2026-07-21T21:52:00Z", "hours": 8.4406, "text": "Devlog 5 Sorry for the long devlog, some things took longer than expected. First I decided to waste time trying to improve the UI until I remembered I suck at design and just decided to revert to the original design. Then I spent forever wondering why my input textbox would not work properly just for me to change e.target.value to e.currentTarget.value. Although I guess where would the fun be if there was no struggle. Anyways, here are the features I added. Board Controls It is now possible to flip the board and go forwards and backwards through moves. Importing from other sources This one took a bit of time, but now you can import games from Chess.com, or provide your own PGN/FEN. Later on I’ll probably also add Lichess as an import source as well. Roadmap Stockfish Web Worker Chessboard/Gameplay Basic Classifications Opening Names Evaluation Bar Site Styling Board Controls Importing from other sources (FEN, PGN, Chess.com, Lichess, etc.,) (In Progress) Playback/History Controls (In Progress) Board Themes/Styles Play In Person Play Against Engine Custom Position Setup Advanced Classifications (Miss, Great, Brilliant)"}, {"post_id": 31026, "ts": "2026-07-19T02:37:20Z", "hours": 3.3967, "text": "Devlog 4 Site Styling Site styling has been added in this commit, and it also comes with light/dark mode. The evaluation bar has also been added, and is responsive based on the win probability formula. Roadmap Stockfish Web Worker Chessboard/Gameplay Basic Classifications Opening Names Evaluation Bar Site Styling Board Themes/Styles Play In Person Play Against Engine Playback/History Controls Importing from other sources (FEN, PGN, Chess.com, Lichess, etc.,) Custom Position Setup Advanced Classifications (Miss, Great, Brilliant)"}, {"post_id": 30437, "ts": "2026-07-17T23:52:15Z", "hours": 4.6394, "text": "Devlog 3 Move Classifications Move classifications have finally been added. I thought it wouldn’t take this long but instead I spent hours trying to deal with react asynchronous state and trying to coordinate different hooks to play along nicely. Thankfully it works properly now (hopefully). The classifications added are best, excellent, good, inaccuracy, mistake, blunder, and theory. Opening names have also been added as well. Next Steps Next, I’ll work on making the site actually look pretty and have functionality. Importing games should also come next after that. Towards the end i’ll add other classifications as well such as miss, great, and brilliant, however, I expect them to be more difficult as they have slightly stricter classifications."}, {"post_id": 29258, "ts": "2026-07-16T01:54:05Z", "hours": 3.6022, "text": "Devlog 2 Playable Chess! There is now a playable UI to play Chess games. This was done using a mix of chess.js for the logic and react-chessboard for the UI. Most of the logic was handled by the board, however click/drag to move took some time to add. There is also positional evaluations and engine feedback now. Next Steps Next, I plan on creating the actual site design and controls. I also want to add a way to import games from sites like chess.com, and have the ability to load a full game rather than just a position. Move classification is also something that should be implemented soon. Demo Video"}, {"post_id": 28068, "ts": "2026-07-14T02:54:31Z", "hours": 1.6744, "text": "Devlog 1 I started work on Tempo, a chess analysis site to review your games. Chess engines such as Stockfish are easily self-hostable anyways, so there is no reason for sites like chess.com to limit game analysis to 1 per day. What’s New Added move analysis using Stockfish, which is fully selfhosted. Figuring out web workers and UCI was pretty time consuming, but eventually I got the hang of it and figured it out. Next Steps Next, I plan to work on creating the chessboard and site UI. Later I’ll add move classifications such as “Blunder”, “Mistake”, “Excellent”, etc. Maybe i’ll add “Brilliant” moves, but there seems to be no clear definition of one other than “a good sacrifice”."}]...
|
Title: Tempo by @evanssidhu | Stardance
Devlogs:
Title: Tempo by @evanssidhu | Stardance
Devlogs:
Devlog 1 I started work on Tempo, a chess analysis site to review your games. Chess engines such as Stockfish are easily self-hostable anyways, so there is no reason for sites like chess.com to limit game analysis to 1 per day. What’s New Added move analysis using Stockfish, which is fully selfhosted. Figuring out web workers and UCI was pretty time consuming, but eventually I got the hang of it and figured it out. Next Steps Next, I plan to work on creating the chessboard and site UI. Later I’ll add move classifications such as “Blunder”, “Mistake”, “Excellent”, etc. Maybe i’ll add “Brilliant” moves, but there seems to be no clear definition of one other than “a good sacrifice”.
Devlog 2 Playable Chess! There is now a playable UI to play Chess games. This was done using a mix of chess.js for the logic and react-chessboard for the UI. Most of the logic was handled by the board, however click/drag to move took some time to add. There is also positional evaluations and engine feedback now. Next Steps Next, I plan on creating the actual site design and controls. I also want to add a way to import games from sites like chess.com, and have the ability to load a full game rather than just a position. Move classification is also something that should be implemented soon. Demo Video
Devlog 3 Move Classifications Move classifications have finally been added. I thought it wouldn’t take this long but instead I spent hours trying to deal with react asynchronous state and trying to coordinate different hooks to play along nicely. Thankfully it works properly now (hopefully). The classifications added are best, excellent, good, inaccuracy, mistake, blunder, and theory. Opening names have also been added as well. Next Steps Next, I’ll work on making the site actually look pretty and have functionality. Importing games should also come next after that. Towards the end i’ll add other classifications as well such as miss, great, and brilliant, however, I expect them to be more difficult as they have slightly stricter classifications.
Devlog 4 Site Styling Site styling has been added in this commit, and it also comes with light/dark mode. The evaluation bar has also been added, and is responsive based on the win probability formula. Roadmap Stockfish Web Worker Chessboard/Gameplay Basic Classifications Opening Names Evaluation Bar Site Styling Board Themes/Styles Play In Person Play Against Engine Playback/History Controls Importing from other sources (FEN, PGN, Chess.com, Lichess, etc.,) Custom Position Setup Advanced Classifications (Miss, Great, Brilliant)
Devlog 5 Sorry for the long devlog, some things took longer than expected. First I decided to waste time trying to improve the UI until I remembered I suck at design and just decided to revert to the original design. Then I spent forever wondering why my input textbox would not work properly just for me to change e.target.value to e.currentTarget.value. Although I guess where would the fun be if there was no struggle. Anyways, here are the features I added. Board Controls It is now possible to flip the board and go forwards and backwards through moves. Importing from other sources This one took a bit of time, but now you can import games from Chess.com, or provide your own PGN/FEN. Later on I’ll probably also add Lichess as an import source as well. Roadmap Stockfish Web Worker Chessboard/Gameplay Basic Classifications Opening Names Evaluation Bar Site Styling Board Controls Importing from other sources (FEN, PGN, Chess.com, Lichess, etc.,) (In Progress) Playback/History Controls (In Progress) Board Themes/Styles Play In Person Play Against Engine Custom Position Setup Advanced Classifications (Miss, Great, Brilliant)
Devlog 6 Second devlog today, this is more of an extension of the previous devlog since a lot of features were not fully polished yet. Since then move playback has been added and I also added a game review container. Most of the logic has now been implemented, all thats left now is a little polish and styling. The only logic thats left is trying to find a way to add proper move history and advanced classifications. I also attached a demo video this time since I forgot to last devlog. Move Playback It is now possible to use arrows to traverse forwards and backwards if a PGN file is imported. Game Review Container I added a little side container which will be used to show the stats of the game review. Currently it only shows the opening and move feedback, but it will be expanded to show accuracies and a full breakdown of the analysis and position similar to chess.com. Roadmap Stockfish Web Worker Chessboard/Gameplay Basic Classifications Opening Names Evaluation Bar Site Styling Board Controls Importing from other sources (FEN, PGN, Chess.com, etc.,) Playback Controls History View Board Themes/Styles Play In Person Play Against Engine Custom Position Setup Advanced Classifications (Miss, Great, Brilliant) Changelog 0e4db3c e2552b0
Devlog 7 Lots of QOL features and fixes added today, i’ve added a basic view of move history, and added a settings page where you can change the theme of the website or board. Next, I do want to work on features that do not involve the game review, such as pass and play or engine play. Move History You can now properly go through a game’s moves and view all played moves in the side pane. Themes Website theming has been added, alongside being able to choose the colors you would like the board to be. Roadmap Stockfish Web Worker Chessboard/Gameplay Basic Classifications Opening Names Evaluation Bar Site Styling Board Controls Importing from other sources (FEN, PGN, Chess.com, etc.,) Playback Controls Board Themes/Styles History View (In Progress) Full Game Review/Engine Analysis (In Progress) Play In Person Play Against Engine Custom Position Setup Advanced Classifications (Miss, Great, Brilliant)
Devlog 8 Sorry again for the long devlog, some things took a bit longer than I expected. Anyways, icons/glyphs have been added in this devlog. I’ve also fixed some issues with move backtracking. Additional classifications such as miss and great have been added, which took a while since I had to do a lot of refactors to store all the data in cache, and I also didn’t realize I sometimes was tracking the evaluations for the next moves, not the ones just played, which took a while New classifications Miss : Miss is when the previous player makes a bad move, but the next player fails to capitalize on it causing the evaluation to drop back to near where it was before. Great : Great moves are the only moves in the position that work, provided that the outcome is drawn or winning and you are not already winning had you not played the move. It compares 2 lines of stockfish to evaluate the evaluation difference and check for the conditions outlined above. Roadmap Stockfish Web Worker Chessboard/Gameplay Basic Classifications Opening Names Evaluation Bar Site Styling Board Controls Importing from other sources (FEN, PGN, Chess.com, etc.,) Playback Controls Board Themes/Styles Miss and Great moves History View (In Progress) Full Game Review/Engine Analysis (In Progress) Play In Person Play Against Engine Custom Position Setup Brilliant Moves
Devlog 9 I tried to convert the history from a linear array into a tree, and it did not go well. I spent literal hours trying to get it to work and look at tutorials, but it just did not want to work. So for now i’ve decided to stop working on that feature, and just focus on the last few remaining tasks. I do have to fix a couple of things since a lot of features are currently in progress, but I will post another devlog later showing the updated features.
Devlog 10 I finished work on in-person gameplay and custom position setups, all that is left now is to finish adding engine play, polish game review, and add brilliant moves. Promotions You can now choose the piece you would like to promote to (no longer auto queen). In Person Play You can now create a game to be played in person between 2 people. Time controls are also availible. Custom Positions You can now load custom positions via drag and drop, which is useful for practicing endgames or creating puzzles. Roadmap Stockfish Web Worker Chessboard/Gameplay Basic Classifications Opening Names Evaluation Bar Site Styling Board Controls Importing from other sources (FEN, PGN, Chess.com, etc.,) Playback Controls Board Themes/Styles Miss and Great moves History View Play In Person Custom Position Setup [] Full Game Review/Engine Analysis (In Progress) Play Against Engine (In Progress) Brilliant Moves
Devlog 11 I am finally back to this project, and this time did not wait 8 hours to post a devlog. Anyways, I added two major features today, custom position imports (which I forgot to do last time) and engine play. Features Custom Position Imports You can now import a position into the custom position editor, which is great for things like loading puzzles and endgames to practice against the engine. You can also export positions by pressing the copy button to copy the position fen to the clipboard. Play Against Engine You can now play games against stockfish, and choose a difficulty level from 0-20. As mentioned above I believe this is a quite useful feature for things like just playing by yourself or practicing different endgames against the computer. Roadmap Stockfish Web Worker Chessboard/Gameplay Basic Classifications Opening Names Evaluation Bar Site Styling Board Controls Importing from other sources (FEN, PGN, Chess.com, etc.,) Playback Controls Board Themes/Styles Miss and Great moves History View Play In Person Custom Position Setup Play Against Engine Full Game Review/Engine Analysis (In Progress) Brilliant Moves
Devlog 12 I really don’t like going this long without posting a devlog, but debugging move classifications was really painful. I encountered an issue where if you went through many moves very quickly, it resulted in classifications not working properly since stockfish could only give evaluations for the current move. This is not ideal since most classifications require checking the evaluation drop, which requires 2+ points of evaluation. I tried many things, first I tried running 3 different stockfish web workers inside the stockfish hook, which caused a couple issues and was not very performant. Next I tried using a single worker and passing in 3 positions, however since the web worker is single threaded it didn’t really work all that well. I also tried using a queue to run each instance one at a time, but that got complex quickly and still did not work. I also wanted to merge the classification and evaluation hooks, which created a 500 line mess of a file which was a nightmare to maintain. Finally, I decided to revert all my changes and keep the hooks separate and simple, and created 3 instances of evaluation hooks within my classification hook. This was much cleaner and actually worked really well, so I wasted 8 hours making things too complex.# Devlog 12 I really don’t like going this long without posting a devlog, but debugging move classifications was really painful. I encountered an issue where if you went through many moves very quickly, it resulted in classifications not working properly since stockfish could only give evaluations for the current move. This is not ideal since most classifications require checking the evaluation drop, which requires 2+ points of evaluation. I tried many things, first I tried running 3 different stockfish web workers inside the stockfish hook, which caused a couple issues and was not very performant. Next I tried using a single worker and passing in 3 positions, however since the web worker is single threaded it didn’t really work all that well. I also tried using a queue to run each instance one at a time, but that got complex quickly and still did not work. I also wanted to merge the classification and evaluation hooks, which created a 500 line mess of a file which was a nightmare to maintain. Finally, I decided to revert all my changes and keep the hooks separate and simple, and created 3 instances of evaluation hooks within my classification hook. This was much cleaner and actually worked really well, so I wasted 8 hours making things too complex.
Devlog 13 I’ve been working on the game review stats, and i’ve implemented a function to classify an entire game and tally up the classifications (which was actually harder than it looked, since i needed to rewrite my hooks since hooks cannot be called within functions). It now works pretty decently, but I do want to optimize performance a bit since it takes a while. Funnily enough there was an issue where if the worker resolved too early it would not terminate and create a memory leak and eat your entire system memory, but thats fixed now.
Devlog 14 I’m going to post more frequently as this project gets wrapped up, and I’ve just finished caching the game review data so feedback is instant if you load in game to review. I also decided to add colors to the start and end squares based on classification because it looks nice. I’ve attached a video below, I don’t know why my screen recorder records very laggy but I promise it’s not actually that laggy.
Devlog 15 I’ve added a few more features related to game review in this devlog. First, I added a section to view the top 2 engine lines on each move. I’ve also added a table to view classifications for the entire game.
Devlog 16 I’ve added the last 2 features related to game review, accuracies and the eval chart. The last thing I plan to to is add some polish, brilliant moves, and maybe try working on the history/pgn tree again.
Devlog 17 After a long time, I’ve finally added brilliant moves. This was done by comparing a squares attackers and defenders to determine if the piece is hanging. If a move results in that piece being hanging/sacrificed, and is the top engine move, then the classification will return brilliant. I’ve attached an example below in a game where GothamChess does what he does best and sacrifices both his rooks.
Devlog 18 A few things in this devlog, I separated the game review panel into 2 sections containing the review report and engine analysis. I’ve also refined the classifications for great and brilliant. Brilliant Move Changes The sacrifice can now be anywhere on the board, not just for the piece that moved Trading a lower value piece for a higher value piece (ex: taking a knight but losing a pawn) no longer counts as brilliant Illegal moves (pins, checks, etc.,) no longer contribute to the attacking piece values Great Move Changes Taking a hanging piece or trading lower value pieces for higher value pieces (ex: capturing a hanging queen or recapturing during a trade) no longer count as great moves.
Devlog 19 More progress has been made adding features and fixing bugs. I’ll highlight the changes below. Features Game Chart The game chart has been updated to include custom dots and lines showing the move classifications and key points during the game (brilliant moves, great moves, mistake, blunder, and miss). You can also click on the chart to go to that move. History View The history view has now been updated to show the classification icons next to the move, which should make it easier to find moves you are looking for Fixes/Optimizations Memoization Data in the game chart has now been memoized. This prevents the chart from crashing the page due to trying to process data many times per second. Stockfish evaluations Game review evaluations now use an active worker pool to run multiple evaluations at once rather than just one at a time. Positions are also cached now so all evaluations share 1 chess instance. In practice, this has reduced the game review time for a 20 move game from over 1 minute to around 7 seconds, which is around a 90% decrease.
Devlog 20 Another devlog here focusing on bug fixes, and I am happy to say that almost everything is pretty much complete. I’ve fixed pretty much every out of sync issue, and even got game reviews to load pretty much instantly. It literally took only around 5 seconds to load a 65 move game, so that is finally optimized. I think the issue was some web workers were not terminating properly and taking up too much memory. Anyways I hope to finally have this project out very soon, and the only thing I might to is try to get the history tree working. Today I actually did kind of get it to work but it caused massive performance degradations for some reason and was causing some conflicts with other components as well.
Devlog 21 The history view has finally been properly migrated to a tree structure. Now since that is finally complete, I know it has been long overdue but it is finally time to ship this project.
Devlog 22 The site is now live. I actually had a lot of issues in deploying this site for some reason (mainly due to the large stockfish binaries stored in git lfs and the coi serviceworker) and my deployments just kept failing. I eventually got it straightened out now and I am ready to ship the project.
Devlog 23 Hello again everybody! I know its been a long time since I last worked on this project, but I read the feedback on this project and addressed your suggestions. Most of the feedback was on ui/ux improvements, so as a result I removed all mentions of infinity/nan on the site, as it looks rather unpolished and unprofessional. I also changed the modal dialogs from the built in alert function to a less intrusive custom toast notification. Lastly, a couple people said the engine took slightly long to make moves, so I slightly lowered the engine depth for games and also removed another delay I originally added to make the engine feel more human like in its thinking time. In terms of the game review engine I decided to keep it the same as it works pretty quickly due to a worker pool being used, but I did change the dialog slightly to make it feel like something is happening in the background, which suprisingly actually makes it feel faster. Anyways, to everyone that tried this project and gave feedback, thank you as it was much appreciated.
Devlog 24 Small devlog, I was about to do another ship after addressing the feedback from last time, but I noticed a small bug where brilliant moves did not show sometimes. It turns out the issue was much simpler than I was testing for and it was due to a small multiplication sign error when converting the mate evaluation to centipawns to check if a move was winning.
Ships:
Ship Message Tempo is finally complete. It took way too many hours to finish, mostly through self inflicted pain of using hooks instead of asynchronous functions for the engine. I know that this might not be the greatest project for how long it took, but I am proud to say that it’s finally been shipped even after the many times I wanted to quit. I made this project because I play a little bit of chess and after getting limited to only 1 game review per day I thought it would be a good idea to make my own game review (yes I know other sites exist but wheres the fun in that). Anyways enough about that, here are the project features (definetly not copied from the readme) Features Game Review: Check how well you played in your previous games by simply entering your chess.com username or by manually loading a pgn file. Move Feedback: Instant updates on how well the engine thinks your move is. Move Classifications: How well the engine evaluates your moves. Classifications such as Miss, Great, or Brilliant are also included. Engine Lines: What the engine thinks is the best line to play in a position. Accuracies: How accurate you played relative to the best moves Graph: A visual and interactive graph on how much your expected win percentage changed throughout a game Classification Report: A total summary of how many of each type of move you played History Tree: View the total game history and easily branch off the main path. Play: Play against a friend in person, or play against the engine. Custom positions can be used as well. Custom Positions: Set up a custom position to load later. Settings: Change the app or board theme. If you are still reading this, thank you and I hope you enjoy using my site.
This is the second ship of the project. This is a pretty small ship aimed at addressing some feedback posted during my last ship. Originally I planned to do a complete UI overhaul, but I decided to just focus on minor improvements now since I have to balance projects with school and don’t know if I am going to have time to work on projects as much. I also want to take a little break from projects to focus on my mental health as well since I have been dedicating multiple hours almost every day purely on making projects. Anyways, enough about that and back to the project. If you want to see the changes from the previous ship, I have them outlined in the devlog below. If you want to see the main features added in the first ship, I have it posted as well shortly below to read. Thank you and I hope you like using my project, if you have any more feedback please outline it in your vote message as I love hearing how I can make my projects better. If you do not want to scroll down to the previous ship message or the readme, here is it posted below. Previous Ship Message Tempo is finally complete. It took way too many hours to finish, mostly through self inflicted pain of using hooks instead of asynchronous functions for the engine. I know that this might not be the greatest project for how long it took, but I am proud to say that it’s finally been shipped even after the many times I wanted to quit. I made this project because I play a little bit of chess and after getting limited to only 1 game review per day I thought it would be a good idea to make my own game review (yes I know other sites exist but wheres the fun in that). Anyways enough about that, here are the project features (definetly not copied from the readme) Features Game Review: Check how well you played in your previous games by simply entering your chess.com username or by manually loading a pgn file. Move Feedback: Instant updates on how well the engine thinks your move is. Move Classifications: How well the engine evaluates your moves. Classifications such as Miss, Great, or Brilliant are also included. Engine Lines: What the engine thinks is the best line to play in a position. Accuracies: How accurate you played relative to the best moves Graph: A visual and interactive graph on how much your expected win percentage changed throughout a game Classification Report: A total summary of how many of each type of move you played History Tree: View the total game history and easily branch off the main path. Play: Play against a friend in person, or play against the engine. Custom positions can be used as well. Custom Positions: Set up a custom position to load later. Settings: Change the app or board theme. If you are still reading this, thank you and I hope you enjoy using my site....
|
1793116514.0810313
|
1793202914.0810313
|
|
48837
|
FunTab by @Finity | Stardance
|
Finity
|
2
|
6.0
|
30
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T04:30:15Z", "hours": 3.0, "multiplier": 11.53, "payout": 30, "blessing": "neutral", "text": "FunTab is finally done, a new tab page themed around dad jokes. I initially had the idea of a page that would tell jokes randomly, and what began as my first JS project just kind of grew and grew! Now it has a clock with time based greetings, music, a focus timer, quick notes, and a customizable color scheme and cursor. It’s been fun figuring things out, and I hope yall like it.", "repo": "https://github.com/Finity16/fun-tab", "demo": "https://finity16.github.io/fun-tab/"}, {"ship_num": 2, "ts": "2026-08-17T03:49:20Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a fun little new tab page was a “tab-ulous” twist, it tells you a dad joke every load! I themed the website around humor, I guess, with a circus background and “Entry of the Gladiators” playing in the background. It has a working clock and date, some handy shortcuts, and customizable colors!", "repo": "https://github.com/Finity16/fun-tab", "demo": "https://finity16.github.io/fun-tab/"}]...
|
[{"post_id": 63362, "ts": "202 [{"post_id": 63362, "ts": "2026-09-07T04:24:38Z", "hours": 1.0014, "text": "Added a time-based greeting that questions your sleep schedule, and polished everything up overall. Searching anything with special symbols broke the google URL. Ended up wrapping the query in encodeURIComponent so special characters get escaped properly."}, {"post_id": 60630, "ts": "2026-09-03T03:13:24Z", "hours": 1.0494, "text": "Added a focus timer and a customizable cursor. Focus timer can be paused and time can be added in increments of 5, and cursor can be replaced with any image on your device."}, {"post_id": 56313, "ts": "2026-08-28T01:30:40Z", "hours": 0.5128, "text": "Added a quick notes section and buttons that enlarge on hover. You can also now click the joke box to get a new joke without having to refresh like before."}, {"post_id": 48636, "ts": "2026-08-17T03:32:51Z", "hours": 1.0728, "text": "Polished everything up and made it all look nice. Struggled a bit with getting the icons on the shortcuts to work. The three main colors used can also be customized at the bottom. Wrapping up and preparing to ship!!"}, {"post_id": 48589, "ts": "2026-08-17T01:28:08Z", "hours": 0.6672, "text": "Added a date, four shortcuts, and circus music that can be toggled on and off. There is also a list of 30 dad jokes, one will be randomly chosen every time the website is opened. Ready to polish things up and make everything look nice with CSS."}, {"post_id": 48458, "ts": "2026-08-16T20:12:26Z", "hours": 0.8397, "text": "Added a clock feature and a search bar that can be triggered by both the button and enter key."}]...
|
Title: FunTab by @Finity | Stardance
Devlogs:
Add Title: FunTab by @Finity | Stardance
Devlogs:
Added a clock feature and a search bar that can be triggered by both the button and enter key.
Added a date, four shortcuts, and circus music that can be toggled on and off. There is also a list of 30 dad jokes, one will be randomly chosen every time the website is opened. Ready to polish things up and make everything look nice with CSS.
Polished everything up and made it all look nice. Struggled a bit with getting the icons on the shortcuts to work. The three main colors used can also be customized at the bottom. Wrapping up and preparing to ship!!
Added a quick notes section and buttons that enlarge on hover. You can also now click the joke box to get a new joke without having to refresh like before.
Added a focus timer and a customizable cursor. Focus timer can be paused and time can be added in increments of 5, and cursor can be replaced with any image on your device.
Added a time-based greeting that questions your sleep schedule, and polished everything up overall. Searching anything with special symbols broke the google URL. Ended up wrapping the query in encodeURIComponent so special characters get escaped properly.
Ships:
I made a fun little new tab page was a “tab-ulous” twist, it tells you a dad joke every load! I themed the website around humor, I guess, with a circus background and “Entry of the Gladiators” playing in the background. It has a working clock and date, some handy shortcuts, and customizable colors!
FunTab is finally done, a new tab page themed around dad jokes. I initially had the idea of a page that would tell jokes randomly, and what began as my first JS project just kind of grew and grew! Now it has a clock with time based greetings, music, a focus timer, quick notes, and a customizable color scheme and cursor. It’s been fun figuring things out, and I hope yall like it....
|
1793101691.81642
|
1793188091.81642
|
|
56997
|
eXPlayer by @arthihalder | Stardance
|
arthihalder
|
1
|
12.0
|
25
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T04:27:25Z", "hours": 12.0, "multiplier": 4.18, "payout": 25, "blessing": "neutral", "text": "eXPlayer eXPlayer is a terminal-based music player with LRC lyrics support! to install it run the command : pip install explayer How to use it? After using the command to install it simply run explayer it will open the player window, now you need to set the directory or music folder. press [c] on your keyboard to open the command window from there you can set the music folder using command: cd “[music folder path]” and head back to the player with back And now just simply press [p] to play the songs in shuffle! run the command help to learn about more commands! Usage of AI: Just Gpt is used in this project mainly to fix bugs. Though i did not fully copy gpts code i did write the snippets it gave me. It was used in making the lyrics function, config.json saving and loading function, playing next and previous song function, shuffle function, centering the logo. Other places i use it to help me fix bugs like 2 songs skipping at once when pressed next, not setted directory crashing the player. Honestly it was a fun experience for me making my first usable py project!", "repo": "https://github.com/bsastudio601/eXPlayer", "demo": "https://github.com/bsastudio601/eXPlayer/releases/tag/v1.0.0"}]...
|
[{"post_id": 63358, "ts": "202 [{"post_id": 63358, "ts": "2026-09-07T04:23:23Z", "hours": 3.6189, "text": "final devlog: Finally i made the build and hosted it on PyPl. it took me a bit longer that i would like to admit though it was my first time making a py package. but it works now! run the command : pip install explayer to try it out!"}, {"post_id": 62670, "ts": "2026-09-06T04:41:43Z", "hours": 0.6189, "text": "devlog#4 finally added a config,json and save and load function to save the music file path. now it can remember the path so that you dont need to change the path everytime you want to play songs! Next i will add basic customization and fix a few bugs."}, {"post_id": 60209, "ts": "2026-09-02T13:11:26Z", "hours": 2.7856, "text": "devlog#3Finally made the command window for my music player you do a bunch of thing here! though making it was lot harder than i expected specially the function to make the song shuffle and after the first itteration there were lot of bugs so it took help from gpt to fix it! but it works fine now !"}, {"post_id": 60043, "ts": "2026-09-02T04:41:03Z", "hours": 2.5203, "text": "devlog#2 well this happened. though it looked cool. after talking to gpt a bit i fixed it! it seems to be working fine now. Next i have plan to add a command tab or windows where you can customize color, playlist, etc."}, {"post_id": 59462, "ts": "2026-09-01T10:21:02Z", "hours": 2.1431, "text": "devlog#1 For a few days im seeing those reels in insta where people play lyrics in terminal. Im wanting to do the same but making it more dynamic with features such as playing songs in suffle, repeat, finding lyrics file and loadin on its own and a few customization! Today i get the lyrics and basic control system to work. I used this https://www.pygame.org/docs/ref/music.html for basics of playing music. I took the help of gpt to write the code that formates the lrc file. fnally im making the ui with ascii"}]...
|
Title: eXPlayer by @arthihalder | Stardance
Devlo Title: eXPlayer by @arthihalder | Stardance
Devlogs:
devlog#1 For a few days im seeing those reels in insta where people play lyrics in terminal. Im wanting to do the same but making it more dynamic with features such as playing songs in suffle, repeat, finding lyrics file and loadin on its own and a few customization! Today i get the lyrics and basic control system to work. I used this https://www.pygame.org/docs/ref/music.html for basics of playing music. I took the help of gpt to write the code that formates the lrc file. fnally im making the ui with ascii
devlog#2 well this happened. though it looked cool. after talking to gpt a bit i fixed it! it seems to be working fine now. Next i have plan to add a command tab or windows where you can customize color, playlist, etc.
devlog#3Finally made the command window for my music player you do a bunch of thing here! though making it was lot harder than i expected specially the function to make the song shuffle and after the first itteration there were lot of bugs so it took help from gpt to fix it! but it works fine now !
devlog#4 finally added a config,json and save and load function to save the music file path. now it can remember the path so that you dont need to change the path everytime you want to play songs! Next i will add basic customization and fix a few bugs.
final devlog: Finally i made the build and hosted it on PyPl. it took me a bit longer that i would like to admit though it was my first time making a py package. but it works now! run the command : pip install explayer to try it out!
Ships:
eXPlayer eXPlayer is a terminal-based music player with LRC lyrics support! to install it run the command : pip install explayer How to use it? After using the command to install it simply run explayer it will open the player window, now you need to set the directory or music folder. press [c] on your keyboard to open the command window from there you can set the music folder using command: cd “[music folder path]” and head back to the player with back And now just simply press [p] to play the songs in shuffle! run the command help to learn about more commands! Usage of AI: Just Gpt is used in this project mainly to fix bugs. Though i did not fully copy gpts code i did write the snippets it gave me. It was used in making the lyrics function, config.json saving and loading function, playing next and previous song function, shuffle function, centering the logo. Other places i use it to help me fix bugs like 2 songs skipping at once when pressed next, not setted directory crashing the player. Honestly it was a fun experience for me making my first usable py project!...
|
1793084094.4456968
|
1793170494.4456968
|
|
40644
|
Math Crossword by @TejalK | Stardance
|
TejalK
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T04:21:28Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a single-file math crossword game with 5 puzzles (Algebra, Geometry, Numbers, Statistics, Functions) and 100 clues that runs entirely in your browser - no install, no server, no dependencies. The hardest part was getting the keyboard navigation to feel natural: arrow keys move you through a word, Tab flips between Across and Down, and typing auto-advances to the next cell without letting you wander into random squares. I also had to manually sort and number every clue start position, which was tedious but necessary since I didn’t write an auto-grid generator. I’m proud that it works completely offline and still feels like a real app. The instant check button (green for right, red for wrong, yellow for empty) and the reveal-letter hint make it forgiving enough that you actually want to keep playing instead of rage-quitting. To test it, just open index.html in any browser - Chrome, Safari, Firefox, whatever. Click a square to start typing, use Tab to switch direction, and hit the Check button when you want feedback. That’s it.", "repo": "https://github.com/TejalK10-hash/math-crossword", "demo": "https://math-crossword.netlify.app/"}]...
|
[{"post_id": 63352, "ts": "202 [{"post_id": 63352, "ts": "2026-09-07T04:18:09Z", "hours": 3.2528, "text": "Built a single-file math crossword game with 5 themed puzzles and 100 clues using vanilla HTML/CSS/JS - no build tools, no dependencies. The trickiest part was implementing keyboard navigation (arrow keys, tab-to-toggle, auto-advance) while keeping movement locked to the current word. Grid generation and clue numbering work well enough, though the data format is hand-crafted rather than auto-generated. Mobile layout is functional but needs polish; localStorage save and a timer are next on the list. Overall it’s a working v1.0 that runs anywhere you can open a browser."}]...
|
Title: Math Crossword by @TejalK | Stardance
Devl Title: Math Crossword by @TejalK | Stardance
Devlogs:
Built a single-file math crossword game with 5 themed puzzles and 100 clues using vanilla HTML/CSS/JS - no build tools, no dependencies. The trickiest part was implementing keyboard navigation (arrow keys, tab-to-toggle, auto-advance) while keeping movement locked to the current word. Grid generation and clue numbering work well enough, though the data format is hand-crafted rather than auto-generated. Mobile layout is functional but needs polish; localStorage save and a timer are next on the list. Overall it’s a working v1.0 that runs anywhere you can open a browser.
Ships:
I built a single-file math crossword game with 5 puzzles (Algebra, Geometry, Numbers, Statistics, Functions) and 100 clues that runs entirely in your browser - no install, no server, no dependencies. The hardest part was getting the keyboard navigation to feel natural: arrow keys move you through a word, Tab flips between Across and Down, and typing auto-advances to the next cell without letting you wander into random squares. I also had to manually sort and number every clue start position, which was tedious but necessary since I didn’t write an auto-grid generator. I’m proud that it works completely offline and still feels like a real app. The instant check button (green for right, red for wrong, yellow for empty) and the reveal-letter hint make it forgiving enough that you actually want to keep playing instead of rage-quitting. To test it, just open index.html in any browser - Chrome, Safari, Firefox, whatever. Click a square to start typing, use Tab to switch direction, and hit the Check button when you want feedback. That’s it....
|
1792860543.7158513
|
1793724543.7158513
|
|
42948
|
Space-Os by @joelj | Stardance
|
joelj
|
1
|
26.08
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T03:25:53Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Space themed Operating system .(or aleast tried to 😅) It features a : - Welcome page : introduces the os -Space notes : a notes app based on actual nasa apollo framework - Orbital rader: a visual representation of our dear solar system with a small description for each planet - Custom cursor : a small cute rocket Main problems : The hacktime setup : this was the problem that took the longest . The standard WakaTime extension out of the box was attempting to sync with official WakaTime proprietary servers rather than the specialized Hackatime endpoints, resulting in broke communication loops. Small bugs for each feature : Its always there , its expected and we can solve them -The curser problem : The custom cursor was only apearng in the main html and not the iframes Things i learned : -How to use html and code a site Mastered divs -Used css a lot Most importantly : Persistence and determination", "repo": "https://github.com/Johan-jim123/JJ-OS", "demo": "https://johan-jim123.github.io/Space-Os/"}]...
|
[{"post_id": 76617, "ts": "202 [{"post_id": 76617, "ts": "2026-10-04T06:01:35Z", "hours": 2.1844, "text": "Devlog#5😁: -Added the music feature ( now you will be able to listenspace ambience) -Added a button to activate it -My codespace is back to copied my code from pycharm to there🥳🥳"}, {"post_id": 74339, "ts": "2026-09-27T06:16:59Z", "hours": 0.6183, "text": "Devlog #4😎😎 : -Made different themes : Using css variables theme-color and theme-glow , changed the look of all elemtns based on the theme . Added the Mode//button to change the theme -Added a special theme button to the notes app so u can miss-match theme combos"}, {"post_id": 73835, "ts": "2026-09-26T03:46:58Z", "hours": 3.56, "text": "Devlog#3 : -added a login-page 😁😁 -my free codespaces ended , so switched to pycharmm used the localstorage to save ur username and password"}, {"post_id": 69711, "ts": "2026-09-17T16:56:22Z", "hours": 4.4192, "text": "Devlog#2: -added localStorage: Bascially u store ur data locally so that when u refresh ur window or clsoe it it doesnt dissapear Added this feature to my Space notes , now u guys r able to add more logs TOO MUCH DEBUGING😭😭"}, {"post_id": 66586, "ts": "2026-09-12T13:05:32Z", "hours": 5.2986, "text": "Rewrote the entire css and made base for the new apps"}, {"post_id": 63321, "ts": "2026-09-07T02:36:26Z", "hours": 0.8678, "text": "Devlog#8: Made a visual representation of our solar system added all our planets (srry pluto) -visualised them with the glowing circle -Made a CUSTOM curser (the little rocket) -with particles that follow it Guys this marks the end of my WebOS 1. thanks for all your support that pushed me this far . See you on WebOs2"}, {"post_id": 62705, "ts": "2026-09-06T06:08:41Z", "hours": 1.4828, "text": "Devlog#7🥳: worked on my space notes app designed it based on real nasa notes and framework😎 -added 4 logs containing actual notes from the apollo and other renowned missions -Made the new log button , helping the user to create their own logs"}, {"post_id": 62025, "ts": "2026-09-05T07:34:54Z", "hours": 1.8303, "text": "Devlog#6👍: Made a new app ( Space notes)😎 -Added it to the desktop with a animated icon -Created a window for the app -Created functions to make the selected window come front -Solved bugs that came with it😭"}, {"post_id": 61361, "ts": "2026-09-04T07:29:35Z", "hours": 1.5322, "text": "Devlog#5😁:(spend a lot more time than i expected) Made the window draggable (by the heading) -Added the close and open buttons ( nasa themed😎 Made the class for those buttons -solved the bugs that came with each step"}, {"post_id": 60919, "ts": "2026-09-03T16:05:51Z", "hours": 0.9767, "text": "Devlog #4 😎: Make the destop of the Os and added my welcome page to it -customized the welcome page by finding this cool bg and added different styles to my div (8 to be precise 😭 ) and solved the bugs that came with it Make the clock and customized it with the Courier New font"}, {"post_id": 60323, "ts": "2026-09-02T16:35:01Z", "hours": 0.3964, "text": "Devlog #4 : - Made a working demo link , started with the Live Server extension by Ritwick Dey. But the link doesn’t work when the codespace is offline 😭. - Then i decided to make a github page which provided as a vaiable solution and allowed to run the website even without the codespace being online 😎."}, {"post_id": 59603, "ts": "2026-09-01T14:52:17Z", "hours": 0.9997, "text": "Worked on these neon pop up texts and found a good bg . Solved many bugs (that’s why it took soo loong 😭)"}, {"post_id": 59018, "ts": "2026-08-31T16:30:05Z", "hours": 0.4831, "text": "Added a coulourful bg , and worked wiht different fonts and colours 😎😎"}, {"post_id": 58182, "ts": "2026-08-30T15:18:00Z", "hours": 1.7658, "text": "Yoo started working on the project 😎. Finally figured out the hacktime in codespace😅. hope to create something speciall!"}]...
|
Title: Space-Os by @joelj | Stardance
Devlogs:
Yo Title: Space-Os by @joelj | Stardance
Devlogs:
Yoo started working on the project 😎. Finally figured out the hacktime in codespace😅. hope to create something speciall!
Added a coulourful bg , and worked wiht different fonts and colours 😎😎
Worked on these neon pop up texts and found a good bg . Solved many bugs (that’s why it took soo loong 😭)
Devlog #4 : - Made a working demo link , started with the Live Server extension by Ritwick Dey. But the link doesn’t work when the codespace is offline 😭. - Then i decided to make a github page which provided as a vaiable solution and allowed to run the website even without the codespace being online 😎.
Devlog #4 😎: Make the destop of the Os and added my welcome page to it -customized the welcome page by finding this cool bg and added different styles to my div (8 to be precise 😭 ) and solved the bugs that came with it Make the clock and customized it with the Courier New font
Devlog#5😁:(spend a lot more time than i expected) Made the window draggable (by the heading) -Added the close and open buttons ( nasa themed😎 Made the class for those buttons -solved the bugs that came with each step
Devlog#6👍: Made a new app ( Space notes)😎 -Added it to the desktop with a animated icon -Created a window for the app -Created functions to make the selected window come front -Solved bugs that came with it😭
Devlog#7🥳: worked on my space notes app designed it based on real nasa notes and framework😎 -added 4 logs containing actual notes from the apollo and other renowned missions -Made the new log button , helping the user to create their own logs
Devlog#8: Made a visual representation of our solar system added all our planets (srry pluto) -visualised them with the glowing circle -Made a CUSTOM curser (the little rocket) -with particles that follow it Guys this marks the end of my WebOS 1. thanks for all your support that pushed me this far . See you on WebOs2
Rewrote the entire css and made base for the new apps
Devlog#2: -added localStorage: Bascially u store ur data locally so that when u refresh ur window or clsoe it it doesnt dissapear Added this feature to my Space notes , now u guys r able to add more logs TOO MUCH DEBUGING😭😭
Devlog#3 : -added a login-page 😁😁 -my free codespaces ended , so switched to pycharmm used the localstorage to save ur username and password
Devlog #4😎😎 : -Made different themes : Using css variables theme-color and theme-glow , changed the look of all elemtns based on the theme . Added the Mode//button to change the theme -Added a special theme button to the notes app so u can miss-match theme combos
Devlog#5😁: -Added the music feature ( now you will be able to listenspace ambience) -Added a button to activate it -My codespace is back to copied my code from pycharm to there🥳🥳
Ships:
I made a Space themed Operating system .(or aleast tried to 😅) It features a : - Welcome page : introduces the os -Space notes : a notes app based on actual nasa apollo framework - Orbital rader: a visual representation of our dear solar system with a small description for each planet - Custom cursor : a small cute rocket Main problems : The hacktime setup : this was the problem that took the longest . The standard WakaTime extension out of the box was attempting to sync with official WakaTime proprietary servers rather than the specialized Hackatime endpoints, resulting in broke communication loops. Small bugs for each feature : Its always there , its expected and we can solve them -The curser problem : The custom cursor was only apearng in the main html and not the iframes Things i learned : -How to use html and code a site Mastered divs -Used css a lot Most importantly : Persistence and determination...
|
1793145341.024388
|
1793231741.024388
|
|
58778
|
Telt by @No1Michael | Stardance
|
No1Michael
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T01:57:26Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Telt is fully done! With both a classic and modern twist on Tetris, this super minimal browser extension will probably take up wayy to much time of your day, especially during school!", "repo": "https://github.com/wamichae1/Telt", "demo": "https://chromewebstore.google.com/detail/telt/clecgankennmoeejojcdjhmbjbggjddp"}]...
|
[{"post_id": 63309, "ts": "202 [{"post_id": 63309, "ts": "2026-09-07T01:56:10Z", "hours": 0.3039, "text": "Its Finally Done! I didn’t expect the extension to up so quickly! Check it out, I hope you have fun with it when you are bored in class…"}, {"post_id": 62597, "ts": "2026-09-06T02:06:59Z", "hours": 4.1781, "text": "Just Finished Telt - A Chrome extension which has 2 simple versions of tetris. Demo avaible as soon as it clears through chrome web store review!"}]...
|
Title: Telt by @No1Michael | Stardance
Devlogs:
J Title: Telt by @No1Michael | Stardance
Devlogs:
Just Finished Telt - A Chrome extension which has 2 simple versions of tetris. Demo avaible as soon as it clears through chrome web store review!
Its Finally Done! I didn’t expect the extension to up so quickly! Check it out, I hope you have fun with it when you are bored in class…
Ships:
Telt is fully done! With both a classic and modern twist on Tetris, this super minimal browser extension will probably take up wayy to much time of your day, especially during school!...
|
1792878478.6776097
|
1793742478.6776097
|
|
35875
|
tundra by @pinetree182 | Stardance
|
pinetree182
|
2
|
21.0
|
205
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T01:39:49Z", "hours": 18.0, "multiplier": 11.42, "payout": 205, "blessing": "neutral", "text": "tundra OS i made a web OS called tundra. visually, it’s really similar to Serenity OS and it was a whole lot of fun to make. features lots of apps, like a browser, text editor, and file browser a working(ish) filesystem a whole dialog system 3d graphics elite references", "repo": "https://github.com/annaxiomm/tundra", "demo": "https://annaxiomm.github.io/tundra"}, {"ship_num": 2, "ts": "2026-07-17T08:46:49Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "tundra v0.1.0 (alpha) tundra is finally ready to release! it’s currently very much in its infancy and doesn’t have very many features but it meets the requirements of the ship and i’m proud of it! so far we have: multiple draggable windows that are instanceable and defined as classes in javascript (so you can open more than one of the same app!) a welcome message, notes app (which is really an editable changelog), and a nice assortment of images for you to look at a status bar with the date and a handy app drawer so you can access all (3 of) the cool apps on display! a beautiful font (cozette by the-moonwitch) i hope you all like it so far, and plenty more features will follow in the coming weeks", "repo": "https://github.com/annaxiomm/tundra", "demo": "https://annaxiomm.github.io/tundra"}]...
|
[{"post_id": 63300, "ts": "202 [{"post_id": 63300, "ts": "2026-09-07T01:36:33Z", "hours": 3.1278, "text": "devlog #12 - the end? (for now) this is going to be my last devlog before I ship tundra, i’m really proud of how far it’s come and the fact that i’ve actually managed to finish a project for once! I didn’t quite get to add everything I wanted but most of it is there text editor time! i added a real simple text editor that can save and load files from the “disk”. i don’t really have anything else to say about it rated D for dialogs in order for the text editor to work properly, I had to make save and open dialog boxes. these are basically an unholy frankenstein of the normal dialog box and the file browser app, and they work well enough object permanence using JSON and the world’s jankiest serialization/deserialization system I was able to save the user’s filesystem state to localStorage so that even of you reload or close the page, your precious writing will be preserved you’re getting the boot real operating systems don’t open straight to the desktop - theres a whole boot sequence that leads to this (and if you’re cool and use linux it’s all on display for you). inspired by @cooki ’s FPS-OS (go check it out it’s really cool) i added a boot screen that looks pretty alright I guess. visual imagery finally, I got around to adding icons for each app. they’re 16x16, made in aseprite over the course of about 10 minutes, and work just enough that I don’t need to redesign them constantly. next steps ship it!"}, {"post_id": 61451, "ts": "2026-09-04T11:45:40Z", "hours": 0.8858, "text": "devlog #11 - ctrl+alt+delete this is a bit of a shorter devlog since I basically only added one thing - a functioning shutdown sequence! first a little dialog pops up asking if you’re sure, and then the whole screen goes black and says “shutting down…”, finally followed by an elite reference (Progressbar95 players rise up!)"}, {"post_id": 57784, "ts": "2026-08-30T02:28:02Z", "hours": 3.5117, "text": "devlog #10 - new apps after like a month-long hiatus i thought that i ought to add a few more apps - this is meant to be somewhat useful after all! calculator this is a really basic calculator app, basically when you press a button it adds its value (like 2 or + or . ) to an expression, and when you hit the = button it evaluates the expression with eval() . yes, i know its not the safest but it works. colo(u)r picker this one is also really simple: every time you press a key on your keyboard, a new random colour is generated and the rgb and hex values are shown in the bottom. need i say more? file explorer once again, this is really basic. all it does is gets the contents of the current directory (i had to make a new fs function to return each path’s type as well) and then makes a new element for each path with an icon corresponding to what it is. there’s also a back button if you need to… well.. go back next steps file opening from the file explorer text editor more functions in the calculator / better calculator"}, {"post_id": 41048, "ts": "2026-08-05T00:17:34Z", "hours": 3.0744, "text": "devlog #9 - files! what’s an operating system if you can’t have files? so, i decided to write a basic filesystem for tundra. paired with a simple terminal and now tundra is actually kind of cool! the filesystem tundra uses a really simple filesystem model: there’s a File and a Directory class that both inherit from FSNode, Files have names and contents and Directories have names and children. tundra uses a traditional unix file layout (/home, /bin, /etc and so on) because its cool. the terminal i really wanted some way to navigate the filesystem but didn’t feel like implementing an entire file browser so I added a simple terminal. it has a few methods like writeln and readline which you can use. all the commands (including the shell!) are defined in their own classes, just like apps, which makes it really easy to add new ones. so far, i’ve added cd, ls, mkdir, touch, cat, and my own version of neofetch. next steps an actual file browser some more commands ANSI escape codes for colours a text editor to make files for the filesystem"}, {"post_id": 39219, "ts": "2026-08-02T01:30:03Z", "hours": 3.3094, "text": "devlog #8 - too many changes! my devlogs from here on are going to be getting a lot longer now because i’m really settling into the grind, so i’m going to try out a more structured format. dialogs! i implemented a whole dialog box system into caribou (the window manager). so far it only has confirm (cancel/ok) style dialogs but it’s modular so i’ll be sure to add plenty more in the future. dialogs return promises that resolve with a value when an action happens (like when the dialog is closed), and this can then be used to execute code. this all came about because i wanted to add fullscreen mode but apparently browsers don’t like it when you request fullscreen without user interaction so here we are! changelog changes (?) the changelog, as promised, pulls directly from github to ensure you always get the most up-to-date changes with minimal effort on my end ! it uses marked and DOMPurify to parse the CHANGELOG.md from the repo and to make sure you are personally secure from anyone who’s dumb enough to waste their time trying to attack tundra. preparing for themes soon, i’ll work on adding themes to tundra so i decided i’d make it a bit easier for myself by making every single value that might want to be changed in css a variable. this was excruciatingly painful but we got through it in the end (it took like 10 minutes max). also, the background is now loaded dynamically through js which will lead to custom backgrounds at some point (much to the dismay of my browser’s performance) next steps improve the dialog system and add more dialog types add a filesystem (very scary) add more apps add theming and changeable backgrounds"}, {"post_id": 36136, "ts": "2026-07-28T00:56:50Z", "hours": 1.6256, "text": "devlog #7 - now we’re getting somewhere! tundra is starting to take off! i’ve changed the look of the taskbar very slightly (there’s now more padding), and i’ve also revamped the appdrawer so that it looks cleaner (and more like SerenityOS). also, submenus! now the appdrawer can be more organised as I continue to add apps instead of turning into a wastebin of buttons. i deleted all of the original apps and have replaced them with (so far) an updated welcome/about (with wally, the derpy walrus who’s tundra’s new mascot), a proper changelog (eventually i’ll make it pull from github but for now it’s hardcoded), and a cube to test out threejs."}, {"post_id": 32283, "ts": "2026-07-21T11:04:31Z", "hours": 1.3792, "text": "devlog #6 - more taskbar stuff i decided that it’s probably a good idea to be able to see what apps you have open, so i implemented a little window list in the status bar. it’s pretty rudimentary - it just makes an element for each open window and updates any time a window is added or removed. eventually i’ll get around to adding window logos and context menus that let you close and minimise windows from the taskbar but that’s a bit advanced for the minute."}, {"post_id": 30070, "ts": "2026-07-17T11:10:55Z", "hours": 1.0528, "text": "devlog #5 - visual updates i decided i wanted to make tundra look a bit like serenityOS, so i modified the window header to include the distinctive red gradient. i also added a proper focusing system which required a decent rewrite of a portion of caribou (the wm). also, i worked on centralising the wm. previously, windows handled their own focusing and closing but since i’ve discovered customevents windows now request this behaviour from the wm. finally, windows now auto-focus when you open them!"}, {"post_id": 30022, "ts": "2026-07-17T08:30:14Z", "hours": 1.1878, "text": "devlog #4 - almost time to ship ! after much tedious work i added 2 other apps: a notes app that currently has a small TODO list and a changelog; and an image viewer that shows off a random image i’ve taken. i’ve also prettied the whole thing up a little bit by changing the font from [default] to Cozette, a nice cozy bitmap-ish font. finally, i added an app drawer so you can open all the (3) apps available in v0.1.0! i’m really looking forward to adding tons of new features and making it look super awesome!"}, {"post_id": 29369, "ts": "2026-07-16T08:39:15Z", "hours": 0.5478, "text": "devlog #3 - windows (again!) windows and apps are now instanced and defined purely in their own classes in javascript instead of being predefined in HTML and shown / hidden. i know it’s not strictly part of the mission for WebOS 1 but it makes me feel a bit better about myself AND it’ll make things a whole lot easier for me down the line. since apps are instanced, i can have as many welcomes as i want !"}, {"post_id": 29355, "ts": "2026-07-16T07:46:35Z", "hours": 0.9558, "text": "devlog #2 - windows i started working on the first iteration of caribou - tundra’s window manager (aka a window class and a list of open windows). so far, windows can be dragged around using some very janky freestyled code, and can also be closed (one of the can even be opened again !). it’s currently looking quite… webby , so next i’ll probably work on making it look a bit more personal (maybe a bit like my personal homepage??)"}, {"post_id": 29335, "ts": "2026-07-16T06:41:18Z", "hours": 0.5217, "text": "devlog #1 - let’s make an OS (sort of) ! building my own OS has been a dream of mine for a long, long time but i’ve never actually been able to make one before (because i know next to nothing about low-level programming). so imagine my reaction when i saw that i could get 50 stardust for making one? well, one small catch. it had to be a web-based OS. wait, is that really a catch though? its like a thousand times easier, and has just enough instant gratification for my short-form content-fried dopamine-addicted brain. so here we are. so far, tundra has a window and a status bar, and thats about it (also, the wallpaper is a photo i took down at the beach today !). i’m really looking forward to adding a ton more features to tundra in the future."}]...
|
Title: tundra by @pinetree182 | Stardance
Devlogs Title: tundra by @pinetree182 | Stardance
Devlogs:
devlog #1 - let’s make an OS (sort of) ! building my own OS has been a dream of mine for a long, long time but i’ve never actually been able to make one before (because i know next to nothing about low-level programming). so imagine my reaction when i saw that i could get 50 stardust for making one? well, one small catch. it had to be a web-based OS. wait, is that really a catch though? its like a thousand times easier, and has just enough instant gratification for my short-form content-fried dopamine-addicted brain. so here we are. so far, tundra has a window and a status bar, and thats about it (also, the wallpaper is a photo i took down at the beach today !). i’m really looking forward to adding a ton more features to tundra in the future.
devlog #2 - windows i started working on the first iteration of caribou - tundra’s window manager (aka a window class and a list of open windows). so far, windows can be dragged around using some very janky freestyled code, and can also be closed (one of the can even be opened again !). it’s currently looking quite… webby , so next i’ll probably work on making it look a bit more personal (maybe a bit like my personal homepage??)
devlog #3 - windows (again!) windows and apps are now instanced and defined purely in their own classes in javascript instead of being predefined in HTML and shown / hidden. i know it’s not strictly part of the mission for WebOS 1 but it makes me feel a bit better about myself AND it’ll make things a whole lot easier for me down the line. since apps are instanced, i can have as many welcomes as i want !
devlog #4 - almost time to ship ! after much tedious work i added 2 other apps: a notes app that currently has a small TODO list and a changelog; and an image viewer that shows off a random image i’ve taken. i’ve also prettied the whole thing up a little bit by changing the font from [default] to Cozette, a nice cozy bitmap-ish font. finally, i added an app drawer so you can open all the (3) apps available in v0.1.0! i’m really looking forward to adding tons of new features and making it look super awesome!
devlog #5 - visual updates i decided i wanted to make tundra look a bit like serenityOS, so i modified the window header to include the distinctive red gradient. i also added a proper focusing system which required a decent rewrite of a portion of caribou (the wm). also, i worked on centralising the wm. previously, windows handled their own focusing and closing but since i’ve discovered customevents windows now request this behaviour from the wm. finally, windows now auto-focus when you open them!
devlog #6 - more taskbar stuff i decided that it’s probably a good idea to be able to see what apps you have open, so i implemented a little window list in the status bar. it’s pretty rudimentary - it just makes an element for each open window and updates any time a window is added or removed. eventually i’ll get around to adding window logos and context menus that let you close and minimise windows from the taskbar but that’s a bit advanced for the minute.
devlog #7 - now we’re getting somewhere! tundra is starting to take off! i’ve changed the look of the taskbar very slightly (there’s now more padding), and i’ve also revamped the appdrawer so that it looks cleaner (and more like SerenityOS). also, submenus! now the appdrawer can be more organised as I continue to add apps instead of turning into a wastebin of buttons. i deleted all of the original apps and have replaced them with (so far) an updated welcome/about (with wally, the derpy walrus who’s tundra’s new mascot), a proper changelog (eventually i’ll make it pull from github but for now it’s hardcoded), and a cube to test out threejs.
devlog #8 - too many changes! my devlogs from here on are going to be getting a lot longer now because i’m really settling into the grind, so i’m going to try out a more structured format. dialogs! i implemented a whole dialog box system into caribou (the window manager). so far it only has confirm (cancel/ok) style dialogs but it’s modular so i’ll be sure to add plenty more in the future. dialogs return promises that resolve with a value when an action happens (like when the dialog is closed), and this can then be used to execute code. this all came about because i wanted to add fullscreen mode but apparently browsers don’t like it when you request fullscreen without user interaction so here we are! changelog changes (?) the changelog, as promised, pulls directly from github to ensure you always get the most up-to-date changes with minimal effort on my end ! it uses marked and DOMPurify to parse the CHANGELOG.md from the repo and to make sure you are personally secure from anyone who’s dumb enough to waste their time trying to attack tundra. preparing for themes soon, i’ll work on adding themes to tundra so i decided i’d make it a bit easier for myself by making every single value that might want to be changed in css a variable. this was excruciatingly painful but we got through it in the end (it took like 10 minutes max). also, the background is now loaded dynamically through js which will lead to custom backgrounds at some point (much to the dismay of my browser’s performance) next steps improve the dialog system and add more dialog types add a filesystem (very scary) add more apps add theming and changeable backgrounds
devlog #9 - files! what’s an operating system if you can’t have files? so, i decided to write a basic filesystem for tundra. paired with a simple terminal and now tundra is actually kind of cool! the filesystem tundra uses a really simple filesystem model: there’s a File and a Directory class that both inherit from FSNode, Files have names and contents and Directories have names and children. tundra uses a traditional unix file layout (/home, /bin, /etc and so on) because its cool. the terminal i really wanted some way to navigate the filesystem but didn’t feel like implementing an entire file browser so I added a simple terminal. it has a few methods like writeln and readline which you can use. all the commands (including the shell!) are defined in their own classes, just like apps, which makes it really easy to add new ones. so far, i’ve added cd, ls, mkdir, touch, cat, and my own version of neofetch. next steps an actual file browser some more commands ANSI escape codes for colours a text editor to make files for the filesystem
devlog #10 - new apps after like a month-long hiatus i thought that i ought to add a few more apps - this is meant to be somewhat useful after all! calculator this is a really basic calculator app, basically when you press a button it adds its value (like 2 or + or . ) to an expression, and when you hit the = button it evaluates the expression with eval() . yes, i know its not the safest but it works. colo(u)r picker this one is also really simple: every time you press a key on your keyboard, a new random colour is generated and the rgb and hex values are shown in the bottom. need i say more? file explorer once again, this is really basic. all it does is gets the contents of the current directory (i had to make a new fs function to return each path’s type as well) and then makes a new element for each path with an icon corresponding to what it is. there’s also a back button if you need to… well.. go back next steps file opening from the file explorer text editor more functions in the calculator / better calculator
devlog #11 - ctrl+alt+delete this is a bit of a shorter devlog since I basically only added one thing - a functioning shutdown sequence! first a little dialog pops up asking if you’re sure, and then the whole screen goes black and says “shutting down…”, finally followed by an elite reference (Progressbar95 players rise up!)
devlog #12 - the end? (for now) this is going to be my last devlog before I ship tundra, i’m really proud of how far it’s come and the fact that i’ve actually managed to finish a project for once! I didn’t quite get to add everything I wanted but most of it is there text editor time! i added a real simple text editor that can save and load files from the “disk”. i don’t really have anything else to say about it rated D for dialogs in order for the text editor to work properly, I had to make save and open dialog boxes. these are basically an unholy frankenstein of the normal dialog box and the file browser app, and they work well enough object permanence using JSON and the world’s jankiest serialization/deserialization system I was able to save the user’s filesystem state to localStorage so that even of you reload or close the page, your precious writing will be preserved you’re getting the boot real operating systems don’t open straight to the desktop - theres a whole boot sequence that leads to this (and if you’re cool and use linux it’s all on display for you). inspired by @cooki ’s FPS-OS (go check it out it’s really cool) i added a boot screen that looks pretty alright I guess. visual imagery finally, I got around to adding icons for each app. they’re 16x16, made in aseprite over the course of about 10 minutes, and work just enough that I don’t need to redesign them constantly. next steps ship it!
Ships:
tundra v0.1.0 (alpha) tundra is finally ready to release! it’s currently very much in its infancy and doesn’t have very many features but it meets the requirements of the ship and i’m proud of it! so far we have: multiple draggable windows that are instanceable and defined as classes in javascript (so you can open more than one of the same app!) a welcome message, notes app (which is really an editable changelog), and a nice assortment of images for you to look at a status bar with the date and a handy app drawer so you can access all (3 of) the cool apps on display! a beautiful font (cozette by the-moonwitch) i hope you all like it so far, and plenty more features will follow in the coming weeks
tundra OS i made a web OS called tundra. visually, it’s really similar to Serenity OS and it was a whole lot of fun to make. features lots of apps, like a browser, text editor, and file browser a working(ish) filesystem a whole dialog system 3d graphics elite references...
|
1793087801.67265
|
1793174201.67265
|
|
59191
|
keltime by @desibanana | Stardance
|
desibanana
|
1
|
2.44
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T01:33:23Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my personal website hosted on nekoweb.org that I have been updating frequently for almost 2 years now. For the record, I have definitely worked over an hour on this :cold-sweat:", "repo": "https://github.com/moldy-banana/keltime", "demo": "https://keltime.nekoweb.org"}]...
|
[{"post_id": 64622, "ts": "202 [{"post_id": 64622, "ts": "2026-09-09T05:01:54Z", "hours": 0.3436, "text": "Blog + diary nested CSS to create a different color scheme I used the same layout for my blog and diary, but I wanted to keep both of them visually distinct while having the same layout. The solution was to change up the color scheme. One way to do this is by completely copy and pasting the diary’s css and making a blog.css to change all the colors by hand. Tedious… I chose the less (maybe more) painful option of creating a class for the body of the blog called .blog and recoloring each element by calling on their class/identifier and giving them a green color. I recently heard about nested CSS on an article. It is still pretty messy to use, but I would say that using this technique to change the colors of a layout is pretty harm-free. If you’ve made it this far, thank you for reading and have a music rec! Ilia’s Omen by acloudyskye"}, {"post_id": 63959, "ts": "2026-09-08T01:38:26Z", "hours": 0.7578, "text": "Music Page Fixes + Updates 🧰 Fixed a CSS issue where track titles in the album reviews on my music page overflowed onto the next album. Set the height of each container to height: fit-content; and added padding to the inside of each container for visual aesthetic. 🎉 Added 2 new albums: “SMILE! :D” and “834.184” to celebrate. 💿 fr the CD (it’s actually a dvd) in the background rotates! is it tuff or nah"}, {"post_id": 63338, "ts": "2026-09-07T03:20:19Z", "hours": 0.3336, "text": "Tweaked the splash text javascript on my about me page and the css on the last-played last.fm widget for visual clarity. The last.fm widget normally bugs out if an artist name/song title is long and I have been trying to fix it through css. As you can see here, it seems to be working properly now. Before, I was using the unit % to try and fix the bug but it turns out the % was actually the issue itself. As a subsitute, I am now using the unit ‘em’ and the song seems to be displaying properly with 2 different songs."}, {"post_id": 63276, "ts": "2026-09-07T00:51:50Z", "hours": 0.6325, "text": "A simple shrine page based off of the FIELD NOTES notebook, and a tour of my little shrine for the video game OFF (2006). Totally go play it if you can (it’s free)!"}]...
|
Title: keltime by @desibanana | Stardance
Devlogs Title: keltime by @desibanana | Stardance
Devlogs:
A simple shrine page based off of the FIELD NOTES notebook, and a tour of my little shrine for the video game OFF (2006). Totally go play it if you can (it’s free)!
Tweaked the splash text javascript on my about me page and the css on the last-played last.fm widget for visual clarity. The last.fm widget normally bugs out if an artist name/song title is long and I have been trying to fix it through css. As you can see here, it seems to be working properly now. Before, I was using the unit % to try and fix the bug but it turns out the % was actually the issue itself. As a subsitute, I am now using the unit ‘em’ and the song seems to be displaying properly with 2 different songs.
Music Page Fixes + Updates 🧰 Fixed a CSS issue where track titles in the album reviews on my music page overflowed onto the next album. Set the height of each container to height: fit-content; and added padding to the inside of each container for visual aesthetic. 🎉 Added 2 new albums: “SMILE! :D” and “834.184” to celebrate. 💿 fr the CD (it’s actually a dvd) in the background rotates! is it tuff or nah
Blog + diary nested CSS to create a different color scheme I used the same layout for my blog and diary, but I wanted to keep both of them visually distinct while having the same layout. The solution was to change up the color scheme. One way to do this is by completely copy and pasting the diary’s css and making a blog.css to change all the colors by hand. Tedious… I chose the less (maybe more) painful option of creating a class for the body of the blog called .blog and recoloring each element by calling on their class/identifier and giving them a green color. I recently heard about nested CSS on an article. It is still pretty messy to use, but I would say that using this technique to change the colors of a layout is pretty harm-free. If you’ve made it this far, thank you for reading and have a music rec! Ilia’s Omen by acloudyskye
Ships:
This is my personal website hosted on nekoweb.org that I have been updating frequently for almost 2 years now. For the record, I have definitely worked over an hour on this :cold-sweat:...
|
1793119976.5888414
|
1793206376.5888414
|
|
42920
|
Personal Portfolio Website by @self-taught-scribe Personal Portfolio Website by @self-taught-scribe | Stardance...
|
self-taught-scribe
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T01:09:23Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This started as a school web dev assessment and passion project I’ve been meaning to do for a while, but quickly grew way past that. I built a full portfolio site with a Catppuccin based light/dark theme, Home/About/Blog/Projects/Contact pages, and a system that auto-generates cards for blog posts and projects from JSON data. Along the way I fixed a bunch of bugs, such as my broken image fallback logic (was checking .ok on an unresolved fetch Promise), an undiscoverable native multi-select filter (replaced with clickable pill buttons), a missing closing that broke my page layout, and hardcoded NZ date formatting. The part I’m proudest of is three live data widgets. They’re a GitHub commit tracker, a GitHub contribution graph matching my profile heatmap, and a Hackatime coding time dashboard. All three needed lots of debugging. I finished by adding responsive breakpoints, since none of my layouts adapted to mobile at all. Most of this project was debugging, not writing new code, which taught me more than the actual building did.", "repo": "https://github.com/Astral-Scribe/Personal-Portfolio-Site", "demo": "https://owhitedevportfolio.ddns.net/"}]...
|
[{"post_id": 61892, "ts": "202 [{"post_id": 61892, "ts": "2026-09-05T01:53:12Z", "hours": 6.1092, "text": "This started as a school web dev assessment and passion project I’ve been meaning to do for a while, but quickly grew way past that. I built a full portfolio site with a Catppuccin based light/dark theme, Home/About/Blog/Projects/Contact pages, and a system that auto-generates cards for blog posts and projects from JSON data. Along the way I fixed a bunch of bugs, such as my broken image fallback logic (was checking .ok on an unresolved fetch Promise), an undiscoverable native multi-select filter (replaced with clickable pill buttons), a missing closing that broke my page layout, and hardcoded NZ date formatting. The part I’m proudest of is three live data widgets. They’re a GitHub commit tracker, a GitHub contribution graph matching my profile heatmap, and a Hackatime coding time dashboard. All three needed lots of debugging. I finished by adding responsive breakpoints, since none of my layouts adapted to mobile at all. Most of this project was debugging, not writing new code, which taught me more than the actual building did."}]...
|
Title: Personal Portfolio Website by @self-taught- Title: Personal Portfolio Website by @self-taught-scribe | Stardance
Devlogs:
This started as a school web dev assessment and passion project I’ve been meaning to do for a while, but quickly grew way past that. I built a full portfolio site with a Catppuccin based light/dark theme, Home/About/Blog/Projects/Contact pages, and a system that auto-generates cards for blog posts and projects from JSON data. Along the way I fixed a bunch of bugs, such as my broken image fallback logic (was checking .ok on an unresolved fetch Promise), an undiscoverable native multi-select filter (replaced with clickable pill buttons), a missing closing that broke my page layout, and hardcoded NZ date formatting. The part I’m proudest of is three live data widgets. They’re a GitHub commit tracker, a GitHub contribution graph matching my profile heatmap, and a Hackatime coding time dashboard. All three needed lots of debugging. I finished by adding responsive breakpoints, since none of my layouts adapted to mobile at all. Most of this project was debugging, not writing new code, which taught me more than the actual building did.
Ships:
This started as a school web dev assessment and passion project I’ve been meaning to do for a while, but quickly grew way past that. I built a full portfolio site with a Catppuccin based light/dark theme, Home/About/Blog/Projects/Contact pages, and a system that auto-generates cards for blog posts and projects from JSON data. Along the way I fixed a bunch of bugs, such as my broken image fallback logic (was checking .ok on an unresolved fetch Promise), an undiscoverable native multi-select filter (replaced with clickable pill buttons), a missing closing that broke my page layout, and hardcoded NZ date formatting. The part I’m proudest of is three live data widgets. They’re a GitHub commit tracker, a GitHub contribution graph matching my profile heatmap, and a Hackatime coding time dashboard. All three needed lots of debugging. I finished by adding responsive breakpoints, since none of my layouts adapted to mobile at all. Most of this project was debugging, not writing new code, which taught me more than the actual building did....
|
1793145335.3682477
|
1793231735.3682477
|
|
59196
|
React Calculator (My First React Project) by @arpa React Calculator (My First React Project) by @arpanshah102 | Stardance...
|
arpanshah102
|
1
|
15.0
|
23
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T00:53:55Z", "hours": 15.0, "multiplier": 2.34, "payout": 23, "blessing": "neutral", "text": "For this project, I made a React Calculator. But when I started, I didn’t know React so I had to learn it. I followed a nice tutorial that was very helpful and useful. It’s linked in the project description if you want to follow it but the code exercises from that tutorial were so hard lol. I spent a long time solving them but I’m glad I did because I understand React better. This calculator is a basic representation of all that I learned from it. It includes many features but here’s a quick rundown. Basic arithmetic operations Keyboard support Simple responsive UI Small screen and large screen support Multiple Pages 404 Handling Sound Effects", "repo": "https://github.com/Arpan-Shah-102/react-calculator", "demo": "https://react-calculator-seven-lac.vercel.app/"}]...
|
[{"post_id": 63273, "ts": "202 [{"post_id": 63273, "ts": "2026-09-07T00:45:29Z", "hours": 15.4969, "text": "I lowkey forgot I was in stardance so that’s why everything is in only one devlog. I have documented things in my README though so atleast I have a timeline. I have my code in two repos, one repo for my tutorial’s exercises and the other for the actual calculator. Exercise Repo: https://github.com/Arpan-Shah-102/learning-react Calculator Repo: https://github.com/Arpan-Shah-102/react-calculator The calculator includes a multitude of features. Here are the ones listed below: Basic arithmetic operations Keyboard support Simple responsive UI Small screen and large screen support Multiple Pages 404 Handling Sound Effects Here is a timeline of what I did on the tutorial and how far I got into it. Day 5 - 6/22/2026 Rest of Lesson 7 Lesson 7 Exercises 7a - 7o 8 :01 :00 Day 4 - 6/21/2026 Part of Lesson 7 7:03:57 Day 3 - 6/20/2026 Lesson 5 Lesson 5 Exercises 5a - 5k Lesson 6 Lesson 6 Exercises 6a - 6k 6 :09 :56 Day 2 - 6/19/2026 Lesson 3 Lesson 3 Exercises 3a - 3m Lesson 4 Lesson 4 Exercises 4a - 4l 3:48:50 Day 1 - 6/18/2026 Lesson 1 Lesson 1 Exercises 1a - 1j Lesson 2 Lesson 2 Exercises 2a - 2j 1:36:50"}]...
|
Title: React Calculator (My First React Project) b Title: React Calculator (My First React Project) by @arpanshah102 | Stardance
Devlogs:
I lowkey forgot I was in stardance so that’s why everything is in only one devlog. I have documented things in my README though so atleast I have a timeline. I have my code in two repos, one repo for my tutorial’s exercises and the other for the actual calculator. Exercise Repo: https://github.com/Arpan-Shah-102/learning-react Calculator Repo: https://github.com/Arpan-Shah-102/react-calculator The calculator includes a multitude of features. Here are the ones listed below: Basic arithmetic operations Keyboard support Simple responsive UI Small screen and large screen support Multiple Pages 404 Handling Sound Effects Here is a timeline of what I did on the tutorial and how far I got into it. Day 5 - 6/22/2026 Rest of Lesson 7 Lesson 7 Exercises 7a - 7o 8 :01 :00 Day 4 - 6/21/2026 Part of Lesson 7 7:03:57 Day 3 - 6/20/2026 Lesson 5 Lesson 5 Exercises 5a - 5k Lesson 6 Lesson 6 Exercises 6a - 6k 6 :09 :56 Day 2 - 6/19/2026 Lesson 3 Lesson 3 Exercises 3a - 3m Lesson 4 Lesson 4 Exercises 4a - 4l 3:48:50 Day 1 - 6/18/2026 Lesson 1 Lesson 1 Exercises 1a - 1j Lesson 2 Lesson 2 Exercises 2a - 2j 1:36:50
Ships:
For this project, I made a React Calculator. But when I started, I didn’t know React so I had to learn it. I followed a nice tutorial that was very helpful and useful. It’s linked in the project description if you want to follow it but the code exercises from that tutorial were so hard lol. I spent a long time solving them but I’m glad I did because I understand React better. This calculator is a basic representation of all that I learned from it. It includes many features but here’s a quick rundown. Basic arithmetic operations Keyboard support Simple responsive UI Small screen and large screen support Multiple Pages 404 Handling Sound Effects...
|
1793119979.4923246
|
1793206379.4923246
|
|
39237
|
Nature's Map by @KoushikT | Stardance
|
KoushikT
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T00:14:46Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Nature’s Map is a website where people can learn about nature and animals. It was made so people can learn more about the world. We can see where some iconic animals like lions are from on a Map. We can see 12+ cams there to see animals not only in zoos but also in the wild 24/7 with this website. I also added a way to go to the WWF website so we can donate. Some problems I had along the way were finding zoos and places that have cams that can be embedded into other websites. This is just the first ship; I will do more ships. Don’t judge it too harshly, as I am going to add more to it. Just need the stardust quickly right now. Humans may rule the world; A True Leader Helps Those They Rule!", "repo": "https://github.com/Koushik919-del/Nature-s-Map", "demo": "https://nature-s-map.vercel.app/#"}]...
|
[{"post_id": 63261, "ts": "202 [{"post_id": 63261, "ts": "2026-09-07T00:03:15Z", "hours": 1.4581, "text": "I got to know that the cams I that I was going to use can be embedded into this website, so I started using others like Zoos Victoria. I added more animals to the map. I also gave it a style. A nature-y green style. I removed MrBunny AI for now."}, {"post_id": 62511, "ts": "2026-09-05T22:20:47Z", "hours": 1.9736, "text": "Still working on it. Took 2 hours to completely add this. This is a feature to be able to watch animals at zoos like the San Diego Zoo and Safari Park, Reid Park Zoo, and the Georgia Aquarium."}, {"post_id": 58543, "ts": "2026-08-30T23:49:49Z", "hours": 1.0667, "text": "Finally started this dream project I always had. This is an all-in-one nature website that is going to have an interactive map that shows animals around the world, live feeds from zoos and aquariums to show animals, biome education, and that is the idea for now. Just started; it is far from done."}]...
|
Title: Nature's Map by @KoushikT | Stardance
Title: Nature's Map by @KoushikT | Stardance
Devlogs:
Finally started this dream project I always had. This is an all-in-one nature website that is going to have an interactive map that shows animals around the world, live feeds from zoos and aquariums to show animals, biome education, and that is the idea for now. Just started; it is far from done.
Still working on it. Took 2 hours to completely add this. This is a feature to be able to watch animals at zoos like the San Diego Zoo and Safari Park, Reid Park Zoo, and the Georgia Aquarium.
I got to know that the cams I that I was going to use can be embedded into this website, so I started using others like Zoos Victoria. I added more animals to the map. I also gave it a style. A nature-y green style. I removed MrBunny AI for now.
Ships:
Nature’s Map is a website where people can learn about nature and animals. It was made so people can learn more about the world. We can see where some iconic animals like lions are from on a Map. We can see 12+ cams there to see animals not only in zoos but also in the wild 24/7 with this website. I also added a way to go to the WWF website so we can donate. Some problems I had along the way were finding zoos and places that have cams that can be embedded into other websites. This is just the first ship; I will do more ships. Don’t judge it too harshly, as I am going to add more to it. Just need the stardust quickly right now. Humans may rule the world; A True Leader Helps Those They Rule!...
|
1793109175.9895198
|
1793195575.9895198
|
|
59019
|
My slack bot by @torren | Stardance
|
torren
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T23:40:09Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "what did you make? a slack bot for hack club with 11 slash commands, all prefixed /sripin- so they don’t clash with other bots. it does weather, dictionary lookups, jokes, cat facts, quotes, dice rolls, a magic 8-ball, coin flips and more, built on slack bolt over socket mode. what was challenging? getting the two slack tokens right and understanding socket mode, since the bot has no public url and just opens a websocket to slack. also hit a bug where my little health server would crash the whole bot if its port was taken. what are you proud of? that it’s actually solid, not just a toy. every api call has a timeout and try/catch so a dead api can’t kill it, a couple have offline fallbacks, and it shuts down cleanly so systemd restarts don’t break anything. what should people know so they can test it? invite the bot to a channel like #bot-spam, then try /sripin-help to see everything. good ones to start with: /sripin-weather london, /sripin-roll 2d6, /sripin-8ball will this work, /sripin-define serendipity.", "repo": "https://github.com/nadellasripad11/stardance-slack-bot", "demo": "https://hackclub.slack.com/app_redirect?app=A0C0156NAMS"}]...
|
[{"post_id": 63250, "ts": "202 [{"post_id": 63250, "ts": "2026-09-06T23:30:50Z", "hours": 0.5889, "text": "built the bot on node + slack bolt in socket mode, so it talks to slack over a websocket with no public url. made the slack app from a manifest (auto-adds the slash commands, scopes, socket mode and the @mention event), generated the app-level and bot tokens, dropped them in a gitignored .env, and verified both against the slack api — “bot is running! now connected to slack”.then made it better: 11 commands now, all prefixed /sripin- so they don’t collide with other bots — ping, help, catfact, joke, quote, weather (wttr.in, no api key), define, 8ball, roll (NdM dice), flip, choose. every api call has a timeout and try/catch so a dead api can’t crash the bot, and a couple have offline fallbacks. fun commands post in-channel so everyone sees them. also fixed a real bug where the little http health endpoint would kill the whole bot if its port was taken, now it just disables itself — and added an error handler, clean sigint/sigterm shutdown, and a line that logs every incoming command. last step is deploying to hack club nest so it stays live 24/7 with my laptop closed."}, {"post_id": 62986, "ts": "2026-09-06T15:37:48Z", "hours": 4.9414, "text": "day 1 on my stardance slack bot. started by reading through the whole guide so i knew what i was building - a slack bot that answers slash commands. first thing i actually set up was builting the bot itself - a node project using slack bolt in socket mode, so it talks to slack over a websocket and doesn’t need a public url. wrote four slash commands: /sripin-ping replies with the bot’s latency, /sripin-help lists the commands, and /sripin-catfact and /sripin-joke pull from public apis with axios and have try/catch so a dead api doesn’t crash the bot. also added a tiny http health endpoint on port 3000 so there’s still something to open in a browser, plus a systemd service file for deploying on nest later. set up the git repo, wrote the readme, and pushed everything to github. next up: make the actual slack app, get the xoxb + xapp tokens into .env, run npm install, and test it live in #bot-spam."}]...
|
Title: My slack bot by @torren | Stardance
Devlog Title: My slack bot by @torren | Stardance
Devlogs:
day 1 on my stardance slack bot. started by reading through the whole guide so i knew what i was building - a slack bot that answers slash commands. first thing i actually set up was builting the bot itself - a node project using slack bolt in socket mode, so it talks to slack over a websocket and doesn’t need a public url. wrote four slash commands: /sripin-ping replies with the bot’s latency, /sripin-help lists the commands, and /sripin-catfact and /sripin-joke pull from public apis with axios and have try/catch so a dead api doesn’t crash the bot. also added a tiny http health endpoint on port 3000 so there’s still something to open in a browser, plus a systemd service file for deploying on nest later. set up the git repo, wrote the readme, and pushed everything to github. next up: make the actual slack app, get the xoxb + xapp tokens into .env, run npm install, and test it live in #bot-spam.
built the bot on node + slack bolt in socket mode, so it talks to slack over a websocket with no public url. made the slack app from a manifest (auto-adds the slash commands, scopes, socket mode and the @mention event), generated the app-level and bot tokens, dropped them in a gitignored .env, and verified both against the slack api — “bot is running! now connected to slack”.then made it better: 11 commands now, all prefixed /sripin- so they don’t collide with other bots — ping, help, catfact, joke, quote, weather (wttr.in, no api key), define, 8ball, roll (NdM dice), flip, choose. every api call has a timeout and try/catch so a dead api can’t crash the bot, and a couple have offline fallbacks. fun commands post in-channel so everyone sees them. also fixed a real bug where the little http health endpoint would kill the whole bot if its port was taken, now it just disables itself — and added an error handler, clean sigint/sigterm shutdown, and a line that logs every incoming command. last step is deploying to hack club nest so it stays live 24/7 with my laptop closed.
Ships:
what did you make? a slack bot for hack club with 11 slash commands, all prefixed /sripin- so they don’t clash with other bots. it does weather, dictionary lookups, jokes, cat facts, quotes, dice rolls, a magic 8-ball, coin flips and more, built on slack bolt over socket mode. what was challenging? getting the two slack tokens right and understanding socket mode, since the bot has no public url and just opens a websocket to slack. also hit a bug where my little health server would crash the whole bot if its port was taken. what are you proud of? that it’s actually solid, not just a toy. every api call has a timeout and try/catch so a dead api can’t kill it, a couple have offline fallbacks, and it shuts down cleanly so systemd restarts don’t break anything. what should people know so they can test it? invite the bot to a channel like #bot-spam, then try /sripin-help to see everything. good ones to start with: /sripin-weather london, /sripin-roll 2d6, /sripin-8ball will this work, /sripin-define serendipity....
|
1793112740.6151133
|
1793199140.6151133
|
|
58977
|
BuildRank by @dillonyegudkin | Stardance
|
dillonyegudkin
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T23:35:52Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "BuildRank began with a real dirt-bike argument: everyone claims their bike is the cleanest, but there was nowhere for the community to decide. I built a working Django community where riders can create accounts, upload builds, rate bikes 1–10, enter 24-hour battles, and climb global, state, and category rankings. For this ship, I turned that living database into BuildRank Pulse—a custom new-tab dashboard showing the current #1 build, fresh posts, active battles, community totals, local time, saved themes, and keyboard shortcuts. It is fully deployed, uses real community data rather than fake cards, keeps the original feed at /feed/, includes automated route/data tests, and has a privacy-safe public repository with no production accounts, uploads, secrets, or database.", "repo": "https://github.com/DillGrammer/buildrank", "demo": "https://buildrank.pythonanywhere.com/"}]...
|
[{"post_id": 63018, "ts": "202 [{"post_id": 63018, "ts": "2026-09-06T16:12:32Z", "hours": 2.4561, "text": "BuildRank started with one dirt-bike argument: everyone says their bike is the cleanest, but there was nowhere for the community to actually decide.I already had the core Django product working—accounts, photo uploads, 1–10 ratings, state/category/global rankings, and 24-hour head-to-head battles. For this mission I built BuildRank Pulse as a real new-tab front door instead of a disconnected mockup. It reads the existing database to show the current #1 build, fresh posts, active battles, and community totals, plus local time, a saved theme, and keyboard shortcuts.The hardest product decision was making the dashboard summarize real community behavior instead of filling it with decorative widgets. I moved the original feed to /feed/ so none of the community flow was lost, added automated tests for the live data and routes, and published a privacy-safe repo with no production database or rider uploads.The result is a homepage that feels alive because it changes with the riders using it—not because it fakes activity."}]...
|
Title: BuildRank by @dillonyegudkin | Stardance
D Title: BuildRank by @dillonyegudkin | Stardance
Devlogs:
BuildRank started with one dirt-bike argument: everyone says their bike is the cleanest, but there was nowhere for the community to actually decide.I already had the core Django product working—accounts, photo uploads, 1–10 ratings, state/category/global rankings, and 24-hour head-to-head battles. For this mission I built BuildRank Pulse as a real new-tab front door instead of a disconnected mockup. It reads the existing database to show the current #1 build, fresh posts, active battles, and community totals, plus local time, a saved theme, and keyboard shortcuts.The hardest product decision was making the dashboard summarize real community behavior instead of filling it with decorative widgets. I moved the original feed to /feed/ so none of the community flow was lost, added automated tests for the live data and routes, and published a privacy-safe repo with no production database or rider uploads.The result is a homepage that feels alive because it changes with the riders using it—not because it fakes activity.
Ships:
BuildRank began with a real dirt-bike argument: everyone claims their bike is the cleanest, but there was nowhere for the community to decide. I built a working Django community where riders can create accounts, upload builds, rate bikes 1–10, enter 24-hour battles, and climb global, state, and category rankings. For this ship, I turned that living database into BuildRank Pulse—a custom new-tab dashboard showing the current #1 build, fresh posts, active battles, community totals, local time, saved themes, and keyboard shortcuts. It is fully deployed, uses real community data rather than fake cards, keeps the original feed at /feed/, includes automated route/data tests, and has a privacy-safe public repository with no production accounts, uploads, secrets, or database....
|
1793109350.3981502
|
1793195750.3981502
|
|
57826
|
project bingus by @nixi | Stardance
|
nixi
|
1
|
8.9
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T23:12:42Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "the inital window dragging capability was something ive never had to code before this is actually my first time working with electron but I hope to do more with this! I think electron is capable of installing chrome extensions so I think those are installable aswell, multiple windows are draggable which is useful for multitasking when needed you can resize them in both the webos version and in the desktop client I do hope to build more in the future the source code is in the “anion.zip” folder if you wanna read it or something (I just noticed the bug where the buttons on the html version just open wikipedia I had Claude recompile the code I made into a single html so its probably more buggy but in the client it works normally (at least on Mac OS))", "repo": "https://github.com/garry-mod/project-bingus", "demo": "https://exquisite-basbousa-2fee57.netlify.app/"}]...
|
[{"post_id": 64453, "ts": "202 [{"post_id": 64453, "ts": "2026-09-08T20:59:14Z", "hours": 0.3333, "text": "ive just finished a small part of my project for web os 2.0 ive added the ability for the “Start menu” to close I plan on adding this to the desktop app version soon"}, {"post_id": 63794, "ts": "2026-09-07T19:10:17Z", "hours": 0.5636, "text": "I finished fixing the online webs version so it should be good nowww hopefully its better now (it has inconsistances that are out of my control that have to do with websites preventing me from using built in simulated windows)"}, {"post_id": 63203, "ts": "2026-09-06T21:28:37Z", "hours": 2.3467, "text": "I’ve finished the entire project its ready for shipping here’s an early beta picture (sorry I never released it)"}, {"post_id": 62513, "ts": "2026-09-05T22:25:21Z", "hours": 1.7728, "text": "ive finished the final ui after like 2 hours ToT I still need a few more hours to hook everything up and then it should be ready for shipping!!"}, {"post_id": 61798, "ts": "2026-09-04T21:37:31Z", "hours": 1.9697, "text": "I finished the initial window system inside the app im gonna finish the minimize and maximize buttons tommorrow"}, {"post_id": 61697, "ts": "2026-09-04T18:52:57Z", "hours": 0.475, "text": "Published my very first version of aion its live on GitHub right now (only in Mac OS format as I use a Mac I will compile a exe version soon dw) I added a block list to block common ad associated domains"}, {"post_id": 61522, "ts": "2026-09-04T14:05:06Z", "hours": 0.9708, "text": "I finished the base of the whole project im doing via electron when im out of school it’ll be published considering how my school blocks github"}]...
|
Title: project bingus by @nixi | Stardance
Devlog Title: project bingus by @nixi | Stardance
Devlogs:
I finished the base of the whole project im doing via electron when im out of school it’ll be published considering how my school blocks github
Published my very first version of aion its live on GitHub right now (only in Mac OS format as I use a Mac I will compile a exe version soon dw) I added a block list to block common ad associated domains
I finished the initial window system inside the app im gonna finish the minimize and maximize buttons tommorrow
ive finished the final ui after like 2 hours ToT I still need a few more hours to hook everything up and then it should be ready for shipping!!
I’ve finished the entire project its ready for shipping here’s an early beta picture (sorry I never released it)
I finished fixing the online webs version so it should be good nowww hopefully its better now (it has inconsistances that are out of my control that have to do with websites preventing me from using built in simulated windows)
ive just finished a small part of my project for web os 2.0 ive added the ability for the “Start menu” to close I plan on adding this to the desktop app version soon
Ships:
the inital window dragging capability was something ive never had to code before this is actually my first time working with electron but I hope to do more with this! I think electron is capable of installing chrome extensions so I think those are installable aswell, multiple windows are draggable which is useful for multitasking when needed you can resize them in both the webos version and in the desktop client I do hope to build more in the future the source code is in the “anion.zip” folder if you wanna read it or something (I just noticed the bug where the buttons on the html version just open wikipedia I had Claude recompile the code I made into a single html so its probably more buggy but in the client it works normally (at least on Mac OS))...
|
1793126854.600539
|
1793213254.600539
|
|
54771
|
my portfolio by @yugo | Stardance
|
yugo
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T22:38:46Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "hello my people, i made a portfolio about myself and i wanted to make it like a terminal theme. the reason why i have a flower in ascii is because i kinda use it as my logo on my business card and wanted to transfer it here. the most challenging part was getting the base structure and fixing js code when needed. i apologise for not making any devlogs, im not used to it :(", "repo": "https://github.com/YugoBond/portfolio", "demo": "https://yugobond.github.io/portfolio/"}]...
|
[{"post_id": 63230, "ts": "202 [{"post_id": 63230, "ts": "2026-09-06T22:29:35Z", "hours": 3.7858, "text": "hashing function in the portfolio, it turned out really cool and really good :D"}]...
|
Title: my portfolio by @yugo | Stardance
Devlogs: Title: my portfolio by @yugo | Stardance
Devlogs:
hashing function in the portfolio, it turned out really cool and really good :D
Ships:
hello my people, i made a portfolio about myself and i wanted to make it like a terminal theme. the reason why i have a flower in ascii is because i kinda use it as my logo on my business card and wanted to transfer it here. the most challenging part was getting the base structure and fixing js code when needed. i apologise for not making any devlogs, im not used to it :(...
|
1793137913.0923848
|
1793224313.0923848
|