|
70575
|
JuniorOS by @danielkosar | Stardance
|
danielkosar
|
0
|
10.77
|
0
|
[]
|
[{"post_id": 81167, "ts": "202 [{"post_id": 81167, "ts": "2026-10-20T05:25:51Z", "hours": 10.7706, "text": "So i made a basic web OS, where you will get met up with the welcome screen and when you click welcome, you will get into the OS for now there is a working file system, notebook app, settings tab of the OS"}]...
|
Title: JuniorOS by @danielkosar | Stardance
Devlo Title: JuniorOS by @danielkosar | Stardance
Devlogs:
So i made a basic web OS, where you will get met up with the welcome screen and when you click welcome, you will get into the OS for now there is a working file system, notebook app, settings tab of the OS...
|
1793119678.7039661
|
1793724478.7039661
|
|
69440
|
Bamboo cutter by @Jango | Stardance
|
Jango
|
0
|
4.33
|
0
|
[]
|
[{"post_id": 81169, "ts": "202 [{"post_id": 81169, "ts": "2026-10-20T05:33:59Z", "hours": 4.3306, "text": "Finished it but forgot to post devlogs i did a bunch on terra though but its a clicking game with upgrade its simple but there are no visual srry"}]...
|
Title: Bamboo cutter by @Jango | Stardance
Devlog Title: Bamboo cutter by @Jango | Stardance
Devlogs:
Finished it but forgot to post devlogs i did a bunch on terra though but its a clicking game with upgrade its simple but there are no visual srry...
|
1792835415.6783261
|
1793440215.6783261
|
|
70337
|
Prism Bot by @NexnReal | Stardance
|
NexnReal
|
0
|
3.48
|
0
|
[]
|
[{"post_id": 81173, "ts": "202 [{"post_id": 81173, "ts": "2026-10-20T05:57:07Z", "hours": 0.3206, "text": "Devlog 3 Added /prism-wiki : Display any wiki /prism-translate : Translate any english word to spanish (currently supported lang pack) /prism-quote : Display a random quote"}, {"post_id": 81168, "ts": "2026-10-20T05:30:09Z", "hours": 1.8558, "text": "Devlog 2 Added /prism-weather [city] : Displays weather information about that city /prism-country [country name] : Displays information about that country /prism-quote : Displays a quote /prism-wiki [wiki] : Displays that wiki /prism-shorten [url] : Shortens any URL /prism-crypto [cryptocurrency] : Displays info about the crypto"}, {"post_id": 80952, "ts": "2026-10-19T11:16:11Z", "hours": 1.3081, "text": "Devlog 1 Added /prism-define [word] : provide definition and use example of an English word 1/prism-summarize [link]`: will summarize a thread (need the link to the thread) !!! added from official guide !!! /prism-catfact : Say a fact about cats /prism-joke : Say a joke /prism-ping : check if bot is active and latency /prism-help : show all available commands"}]...
|
Title: Prism Bot by @NexnReal | Stardance
Devlogs Title: Prism Bot by @NexnReal | Stardance
Devlogs:
Devlog 1 Added /prism-define [word] : provide definition and use example of an English word 1/prism-summarize [link]`: will summarize a thread (need the link to the thread) !!! added from official guide !!! /prism-catfact : Say a fact about cats /prism-joke : Say a joke /prism-ping : check if bot is active and latency /prism-help : show all available commands
Devlog 2 Added /prism-weather [city] : Displays weather information about that city /prism-country [country name] : Displays information about that country /prism-quote : Displays a quote /prism-wiki [wiki] : Displays that wiki /prism-shorten [url] : Shortens any URL /prism-crypto [cryptocurrency] : Displays info about the crypto
Devlog 3 Added /prism-wiki : Display any wiki /prism-translate : Translate any english word to spanish (currently supported lang pack) /prism-quote : Display a random quote...
|
1793001140.80496
|
1793605940.80496
|
|
62916
|
Parry Sixte by @colgation | Stardance
|
colgation
|
0
|
5.72
|
0
|
[]
|
[{"post_id": 81177, "ts": "202 [{"post_id": 81177, "ts": "2026-10-20T06:07:45Z", "hours": 4.5328, "text": "Lots of updates, all culminating in one post: Spawning mechanics: At set intervals, waves of arrows are programmed to spawn in. Additionally, the size, speed and behaviour of the arrows change as time goes on. Second level in progress: With level one done, the next one is planned to introduce new mechanics and a shield? Stamina bar: A skill ceiling element in the game, this feature prevents mindless spamming and encourages well timed hits. A focal point background: I made this background so it directs attention the the player, increasing focus and engagement without clutter. Death, victory screens: GUI elements…. Finally, I made new arrow variants: Small, Towering, Speedy and Timed."}, {"post_id": 72908, "ts": "2026-09-24T00:28:29Z", "hours": 0.5689, "text": "added an arrow that moves towards the player in my game. Currently, it is just one node triggered on keypress, with no collision. Planning on adding blocking it next"}, {"post_id": 72897, "ts": "2026-09-23T23:48:13Z", "hours": 0.6194, "text": "Created the base slashing mechanism and sprites! The sword on the left is my stamina bar. I am a complete beginner to Godot and making this was challenging, especially understanding how progress bars worked and creating a tween."}]...
|
Title: Parry Sixte by @colgation | Stardance
Devl Title: Parry Sixte by @colgation | Stardance
Devlogs:
Created the base slashing mechanism and sprites! The sword on the left is my stamina bar. I am a complete beginner to Godot and making this was challenging, especially understanding how progress bars worked and creating a tween.
added an arrow that moves towards the player in my game. Currently, it is just one node triggered on keypress, with no collision. Planning on adding blocking it next
Lots of updates, all culminating in one post: Spawning mechanics: At set intervals, waves of arrows are programmed to spawn in. Additionally, the size, speed and behaviour of the arrows change as time goes on. Second level in progress: With level one done, the next one is planned to introduce new mechanics and a shield? Stamina bar: A skill ceiling element in the game, this feature prevents mindless spamming and encourages well timed hits. A focal point background: I made this background so it directs attention the the player, increasing focus and engagement without clutter. Death, victory screens: GUI elements…. Finally, I made new arrow variants: Small, Towering, Speedy and Timed....
|
1793047879.5151818
|
1793652679.5151818
|
|
38886
|
WEB APP FOR STUDENTS by @Uxyamo | Stardance
|
Uxyamo
|
3
|
76.0
|
621
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T06:40:42Z", "hours": 18.0, "multiplier": 8.4, "payout": 99, "blessing": "neutral", "text": "I’m going to continue improving my project with some others creatorsn and thanks you everyone for all the support I had!!! Good luck!!", "repo": "https://github.com/mbbs-iam/APP---FermatNote---Make-my-Grades", "demo": "https://cuentasfermat.web.app/"}, {"ship_num": 2, "ts": "2026-08-28T16:13:00Z", "hours": 4.0, "multiplier": 12.19, "payout": 43, "blessing": "neutral", "text": "Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app.", "repo": "https://github.com/mbbs-iam/APP---FermatNote---Make-my-Grades", "demo": "https://cuentasfermat.web.app/"}, {"ship_num": 3, "ts": "2026-08-16T08:22:09Z", "hours": 54.0, "multiplier": 10.6, "payout": 479, "blessing": "neutral", "text": "Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app. I am developing Fermat-Note, an application designed especially for high school and higher education students to centralize everything: class chat, shared homework management, self-help forums and collective organization. The app allows the class to be more organized and connected to improve class performance. Thanks you so much, I would like you to appreciate it, and if you would like to use it for your class, send me a message!! ❤️👌👌", "repo": "https://github.com/mbbs-iam/APP---FermatNote---Make-my-Grades", "demo": "https://cuentasfermat.web.app/"}]...
|
[{"post_id": 81181, "ts": "202 [{"post_id": 81181, "ts": "2026-10-20T06:39:31Z", "hours": 1.7442, "text": "I decided that because all students use discord, instagram and more I will transform my PWA into an app so they will can use that apps in my app"}, {"post_id": 76794, "ts": "2026-10-04T16:11:16Z", "hours": 15.7992, "text": "Some modifications…"}, {"post_id": 56718, "ts": "2026-08-28T16:12:12Z", "hours": 3.5033, "text": "Hi everyone, there is some students that want to help me the next year, I readed all the messages of my deploy and I decided that it will be international"}, {"post_id": 47987, "ts": "2026-08-16T08:17:36Z", "hours": 0.3178, "text": "I finished the project!! Thanks yo evryone that helped me and followed me in my project!!"}, {"post_id": 47541, "ts": "2026-08-15T14:48:56Z", "hours": 3.5642, "text": "Already finished the diaporama for the students that will use my app!! Take a look please, and say me what to improve!!"}, {"post_id": 46530, "ts": "2026-08-13T20:28:50Z", "hours": 5.1931, "text": "I already deployed the project to 12 firebase accounts to let the students use my project the next year and I would like it to help them. I alse send them to each delegue an email to say them what they have to do"}, {"post_id": 45816, "ts": "2026-08-12T15:19:22Z", "hours": 2.1239, "text": "Use the app now for free with all the hightschools above France!! Link: https://cuentasfermat.web.app/ The password is : ChromaFermat@2026 Have fun!! 😊😊"}, {"post_id": 45595, "ts": "2026-08-12T05:53:03Z", "hours": 1.1178, "text": "Best 12 Hightschools use my app. They’re happy with it Already finished !! I will do an audit to see if they’re is some bugs and I will deploy it !!"}, {"post_id": 45170, "ts": "2026-08-11T14:20:09Z", "hours": 4.26, "text": "There’s 12 Hightshools that will use my app. I already ended the app. Thanks you for all those who helped me, and followed me in my project❤️❤️❤️❤️ I’m sorry that the app is it in french, i will translate to english for the next version. If youre interested to use that app at your hightschool I can translate it to your language."}, {"post_id": 43311, "ts": "2026-08-08T14:38:46Z", "hours": 4.4058, "text": "I finished three sections of my app, I love it. I used the free API of lemonde.fr (french news) to have the news all days. I also finished and added some features on the chat section. And I writed a message to the best High school at France to use it. Finnaly, at the configuration section, I added the list of all the membres of the class (they’re bots)"}, {"post_id": 41494, "ts": "2026-08-05T18:52:57Z", "hours": 1.5481, "text": "Already 10 high schools are going to use my app! I created this app for high schools in France, and a big tech company will help me deploy it throughout France. I will translate it to English next day. I also created a form, and so many people have already responded! I really enjoyed setting it up to connect with everyone."}, {"post_id": 40272, "ts": "2026-08-03T18:13:14Z", "hours": 1.2458, "text": "I configurated the chat section, and it works well, I have some users that use it. I used Firebase with the free trial to connect all the user messages so we can talk together. I did it fast because I already started yesterday, also I added a lot of buttons that spoils all the features that the app will have. Please like my post to let other people se my project, and if they’re interested to use it in they’re class."}, {"post_id": 40025, "ts": "2026-08-03T11:28:39Z", "hours": 2.4278, "text": "I finished the PowerPoint that I will send to delegates from different hightschools in France. I don’t have a good english so I translated it in english with translator. Please tell me what you think about the project, and if you should recommend me to improve some things. Thankss!!"}, {"post_id": 39633, "ts": "2026-08-02T19:12:07Z", "hours": 8.9369, "text": "That’s amazing. Hello !! I’m working on a project for studentsss!!! I’m so motivated because a big tech company will help me giving me servers to deploy it on all France. I’m working a lot, I’ve contacted already some people of the best hightschools in France to use my app. I will improve all and add features. I’m sorry, it’s in French because I’m french and will be used by French people, but if I see that more people are interested I will translate it to english, and at the end of the project I will translate it to english if they’re people that want it"}, {"post_id": 34515, "ts": "2026-07-25T09:32:54Z", "hours": 19.0533, "text": "I’m working a lot, I would like to create a an app that is like the schools apps for see our degrees but for students. It will be fun, and in an Inthership with a big company of tech and they said that they will help me. That motivated me a lot 😊😊"}]...
|
Title: WEB APP FOR STUDENTS by @Uxyamo | Stardance Title: WEB APP FOR STUDENTS by @Uxyamo | Stardance
Devlogs:
I’m working a lot, I would like to create a an app that is like the schools apps for see our degrees but for students. It will be fun, and in an Inthership with a big company of tech and they said that they will help me. That motivated me a lot 😊😊
That’s amazing. Hello !! I’m working on a project for studentsss!!! I’m so motivated because a big tech company will help me giving me servers to deploy it on all France. I’m working a lot, I’ve contacted already some people of the best hightschools in France to use my app. I will improve all and add features. I’m sorry, it’s in French because I’m french and will be used by French people, but if I see that more people are interested I will translate it to english, and at the end of the project I will translate it to english if they’re people that want it
I finished the PowerPoint that I will send to delegates from different hightschools in France. I don’t have a good english so I translated it in english with translator. Please tell me what you think about the project, and if you should recommend me to improve some things. Thankss!!
I configurated the chat section, and it works well, I have some users that use it. I used Firebase with the free trial to connect all the user messages so we can talk together. I did it fast because I already started yesterday, also I added a lot of buttons that spoils all the features that the app will have. Please like my post to let other people se my project, and if they’re interested to use it in they’re class.
Already 10 high schools are going to use my app! I created this app for high schools in France, and a big tech company will help me deploy it throughout France. I will translate it to English next day. I also created a form, and so many people have already responded! I really enjoyed setting it up to connect with everyone.
I finished three sections of my app, I love it. I used the free API of lemonde.fr (french news) to have the news all days. I also finished and added some features on the chat section. And I writed a message to the best High school at France to use it. Finnaly, at the configuration section, I added the list of all the membres of the class (they’re bots)
There’s 12 Hightshools that will use my app. I already ended the app. Thanks you for all those who helped me, and followed me in my project❤️❤️❤️❤️ I’m sorry that the app is it in french, i will translate to english for the next version. If youre interested to use that app at your hightschool I can translate it to your language.
Best 12 Hightschools use my app. They’re happy with it Already finished !! I will do an audit to see if they’re is some bugs and I will deploy it !!
Use the app now for free with all the hightschools above France!! Link: https://cuentasfermat.web.app/ The password is : ChromaFermat@2026 Have fun!! 😊😊
I already deployed the project to 12 firebase accounts to let the students use my project the next year and I would like it to help them. I alse send them to each delegue an email to say them what they have to do
Already finished the diaporama for the students that will use my app!! Take a look please, and say me what to improve!!
I finished the project!! Thanks yo evryone that helped me and followed me in my project!!
Hi everyone, there is some students that want to help me the next year, I readed all the messages of my deploy and I decided that it will be international
Some modifications…
I decided that because all students use discord, instagram and more I will transform my PWA into an app so they will can use that apps in my app
Ships:
Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app. I am developing Fermat-Note, an application designed especially for high school and higher education students to centralize everything: class chat, shared homework management, self-help forums and collective organization. The app allows the class to be more organized and connected to improve class performance. Thanks you so much, I would like you to appreciate it, and if you would like to use it for your class, send me a message!! ❤️👌👌
Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app.
I’m going to continue improving my project with some others creatorsn and thanks you everyone for all the support I had!!! Good luck!!...
|
1793123760.510278
|
1793210160.510278
|
|
70589
|
Matchday by @rudranil | Stardance
|
rudranil
|
0
|
3.83
|
0
|
[]
|
[{"post_id": 81187, "ts": "202 [{"post_id": 81187, "ts": "2026-10-20T07:20:25Z", "hours": 3.8264, "text": "UI UX for matchday"}]...
|
Title: Matchday by @rudranil | Stardance
Devlogs: Title: Matchday by @rudranil | Stardance
Devlogs:
UI UX for matchday...
|
1792482439.2377214
|
1793087239.2377214
|
|
64345
|
Roamly by @rudranil | Stardance
|
rudranil
|
0
|
0.71
|
0
|
[]
|
[{"post_id": 81189, "ts": "202 [{"post_id": 81189, "ts": "2026-10-20T07:25:48Z", "hours": 0.7125, "text": "Working on load testing and fixing bugs and the anti cheat engine"}]...
|
Title: Roamly by @rudranil | Stardance
Devlogs:
W Title: Roamly by @rudranil | Stardance
Devlogs:
Working on load testing and fixing bugs and the anti cheat engine...
|
1793062350.33683
|
1793667150.33683
|
|
63654
|
alarm clock by @Albert | Stardance
|
Albert
|
0
|
1.47
|
0
|
[]
|
[{"post_id": 81192, "ts": "202 [{"post_id": 81192, "ts": "2026-10-20T07:35:07Z", "hours": 1.4664, "text": "still working on this level"}]...
|
Title: alarm clock by @Albert | Stardance
Devlogs Title: alarm clock by @Albert | Stardance
Devlogs:
still working on this level...
|
1793054838.7767692
|
1793659638.7767692
|
|
46626
|
CobraOS by @Prajwol_Gynawali | Stardance
|
Prajwol_Gynawali
|
1
|
5.74
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-13T06:25:00Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "CobraOS is a web-based desktop environment I built with HTML, CSS, and JavaScript, inspired by my Fedora GNOME setup. The biggest challenge was making the different apps, windows, and interactions work together, but I’m proud that I turned a simple WebOS idea into a desktop that feels like my own. I used AI mainly for JavaScript debugging, browser integration, CSS improvements, and solving problems along the way.", "repo": "https://github.com/SnaggingCobra/CobraOS", "demo": "https://snaggingcobra.github.io/CobraOS/"}]...
|
[{"post_id": 81193, "ts": "202 [{"post_id": 81193, "ts": "2026-10-20T07:43:09Z", "hours": 1.085, "text": "finally finished adding paints in the os its a basic paints where you can draaw erse and simple thing"}, {"post_id": 46382, "ts": "2026-08-13T15:39:04Z", "hours": 0.6572, "text": "problem on theme and file explorer fixed"}, {"post_id": 46173, "ts": "2026-08-13T06:20:54Z", "hours": 0.2825, "text": "done in this project live through github pages"}, {"post_id": 46161, "ts": "2026-08-13T05:46:09Z", "hours": 0.3728, "text": "first time writing so much big codes its gettig intresting working icons and much more"}, {"post_id": 45884, "ts": "2026-08-12T16:59:00Z", "hours": 1.0267, "text": "done makinng lot of application working window working but still need to make this actual working"}, {"post_id": 45808, "ts": "2026-08-12T15:06:26Z", "hours": 0.3739, "text": "added working broweser winow inmy webos but coudnt configure how to actually make the sites working can anyone help me"}, {"post_id": 45495, "ts": "2026-08-12T01:03:39Z", "hours": 1.0533, "text": "done making the prototype with real time date and time mac style dock that enlarge when hover added battery indicator but idk it didnt supported still need to make the icon working"}, {"post_id": 45256, "ts": "2026-08-11T16:33:12Z", "hours": 0.65, "text": "added some thing in my web os with a welcome page with a button hat leadds you to main screen also added a task bar at top"}, {"post_id": 45218, "ts": "2026-08-11T15:33:49Z", "hours": 0.3339, "text": "started the project my Webos named it Cobra os just started this im looking a yt vedio to understand how to do these"}]...
|
Title: CobraOS by @Prajwol_Gynawali | Stardance
D Title: CobraOS by @Prajwol_Gynawali | Stardance
Devlogs:
started the project my Webos named it Cobra os just started this im looking a yt vedio to understand how to do these
added some thing in my web os with a welcome page with a button hat leadds you to main screen also added a task bar at top
done making the prototype with real time date and time mac style dock that enlarge when hover added battery indicator but idk it didnt supported still need to make the icon working
added working broweser winow inmy webos but coudnt configure how to actually make the sites working can anyone help me
done makinng lot of application working window working but still need to make this actual working
first time writing so much big codes its gettig intresting working icons and much more
done in this project live through github pages
problem on theme and file explorer fixed
finally finished adding paints in the os its a basic paints where you can draaw erse and simple thing
Ships:
CobraOS is a web-based desktop environment I built with HTML, CSS, and JavaScript, inspired by my Fedora GNOME setup. The biggest challenge was making the different apps, windows, and interactions work together, but I’m proud that I turned a simple WebOS idea into a desktop that feels like my own. I used AI mainly for JavaScript debugging, browser integration, CSS improvements, and solving problems along the way....
|
1793119756.030186
|
1793206156.030186
|
|
70316
|
Cool Table Lamp with boxes. by @Raws | Stardance
|
Raws
|
0
|
2.19
|
0
|
[]
|
[{"post_id": 81194, "ts": "202 [{"post_id": 81194, "ts": "2026-10-20T07:55:07Z", "hours": 0.2917, "text": "Hi so I made changes as my reviewer asked me. Made few design fixes for the small case accommodating the battery and type-c charging module then made dimensions check. Updated the repo as per the design changes I made and updated the design in repo also. Added more clear information in the repo for the build and design ."}, {"post_id": 80701, "ts": "2026-10-18T15:39:14Z", "hours": 1.9008, "text": "So I made an cool table lamp with boxes . I focused on making something that is useful for all rather than something not needed or much useful high tech stuff which I or anyone will rarely use. Kept it simple made the schematic first then the pcb then designed the case made the repo gathered the links of parts I needed finished the repo . Will polish my repo soon"}]...
|
Title: Cool Table Lamp with boxes. by @Raws | Star Title: Cool Table Lamp with boxes. by @Raws | Stardance
Devlogs:
So I made an cool table lamp with boxes . I focused on making something that is useful for all rather than something not needed or much useful high tech stuff which I or anyone will rarely use. Kept it simple made the schematic first then the pcb then designed the case made the repo gathered the links of parts I needed finished the repo . Will polish my repo soon
Hi so I made changes as my reviewer asked me. Made few design fixes for the small case accommodating the battery and type-c charging module then made dimensions check. Updated the repo as per the design changes I made and updated the design in repo also. Added more clear information in the repo for the build and design ....
|
1792990379.3104131
|
1793595179.3104131
|
|
68314
|
inkan by @Vensin | Stardance
|
Vensin
|
0
|
11.67
|
0
|
[]
|
[{"post_id": 81199, "ts": "202 [{"post_id": 81199, "ts": "2026-10-20T08:12:20Z", "hours": 3.8042, "text": "Hello again my little Stardancers ✨ inkan 0.8.0 is out. This one is less about new tricks and more about making inkan something you can actually build on without it shifting under you. The big one: the API is stable now. Every function is marked either stable or experimental. Stable stuff won’t just change or disappear anymore. If I rename something, the old name keeps working with a warning for at least two versions and six months. Before freezing it I had the whole API reviewed and cleaned up the things I would have regretted later, like time options that were seconds in one place and milliseconds in another, or two different names for the same origin setting. There’s also a test now that fails the moment the public types change by accident. Then storage. Until now every feature kept its own little store in memory, so jobs and logins only worked in one process. Now there’s one Store in the core, and four new packages that plug into it: redis, postgres, mongo and mysql. You pass in your own database client, so none of them add a dependency. With one of those, jobs, sessions, logins and rate limits work across several processes and servers. Each adapter has to pass the same test suite, and they’re all tested against real database servers, not fakes. They also got a security review. That found a few real things, like a way to inject SQL into MySQL under unusual server settings, and that my login protection had become weaker than before. All fixed. Smaller stuff: React hooks for live data in @inkanjs /query, so you can show job progress or websocket messages with one hook websockets now also run on uWebSockets.js async handlers got faster and are now as fast as plain node:http on the benchmark a fix where the dev inspector could be reached when it shouldn’t About speed, honestly: on the GitHub runner inkan scored 91.0 and Fastify 89.9. inkan was ahead in two runs and level in the third, so I’m calling it level to slightly ahead, not faster. At first 0.8 even looked slower than 0.7, so I measured the CPU time per request separately, and it’s exactly the same as 0.7. The difference was the test machine moving around. One bug I only found during the release: on Node 22 a websocket that gets refused never tells you, it just waits forever. That’s fixed in 0.8.1. Next: I want to make writing adapters for other servers easier, and I still want someone from Fastify and Hono to look at my benchmark code. See you next time ✨"}, {"post_id": 77878, "ts": "2026-10-08T17:10:32Z", "hours": 1.4211, "text": "Hello again my little Stardancers ✨inkan 0.6.0 is out, and this one was a big one. The plan was simple to say and hard to do: make inkan faster than Fastify on plain node:http, without generating code at runtime the way Fastify does with new Function. I wrote a plan with phases, measured main before touching anything, and then went through it step by step, keeping only what the numbers carried.First the fixed costs. Every request used to make about twenty little objects where six would do, and the request id came from a random UUID. Now the id comes from a counter, everything a route can work out ahead of time is worked out once at start, and a request with a body is only routed once. That alone saved about four percent of CPU per request. Then something odd happened: over HTTP, under full load, it was ten percent slower, even though it spent less CPU. I spent a good while hunting that down, measuring one change at a time against the last one, and it turned out to be fields I had made lazy. Filled on first use, they cost more under load than they saved. Made at once again, and the ten percent were back.Then the schemas. Every schema now checks through one function made once from its rules, which I call its stamp, instead of walking the schema tree on every request. To make sure nothing changed, a test builds every schema twice, once the old way and once the new, and compares two thousand random schemas and values. Same values, same messages, same paths.Writing answers was the lesson of the week. My first idea was a writer in plain JavaScript that writes only what the contract lists in one pass. It was clean, and it was almost twice as slow as the native JSON.stringify. So it went. What stayed: a plain object that holds exactly what the contract lists goes straight to the native writer, and anything else is copied with only the declared fields first. While pinning the old writer down with tests I also found five places where it wrote something it should not have, and two of them could let a key the contract never listed slip out. All five are fixed.And the honest result: on the bench inkan 0.6.0 scores 89.1 against Fastify’s 88.6, with node:http as 100. That is level, not ahead, because the runs overlap, so I am not calling it faster. It is 5.5 percent faster than 0.5, and with inkan seal a body of 50 objects is checked faster than by any server on the bench. Every number, phase by phase, is in the repository, including the ideas that did not work.There is more than speed in this one. The context can answer with text, html, a redirect or a 404 now, and the html tag escapes everything you put into it, so a name someone typed can never become a script on your page. Layouts work per scope, cookies are safe by default, and a handler can hand back rows straight from a database cursor: they go out as they are read, each one trimmed to the contract, as JSON or as one line per row. ctx.csv writes a million rows without holding them in memory, ctx.signal stops a query when the client leaves or the time is up, and a route can cache its answers and ask the database once when ten people ask at the same time.The website got a new logo too, 印 between braces, and the docs now have a real API section with every method and every option in one place.Next up is winning the scenarios where Fastify is still ahead: small requests, the router and middleware. I have a few ideas.See you next time ✨"}, {"post_id": 77789, "ts": "2026-10-08T08:47:47Z", "hours": 1.1386, "text": "Hello again my little Stardancers ✨ It’s devlog time, and this one comes with a confession: I moved a real app onto inkan. Not a todo list. A real one with 55 routes, file uploads, backups of a couple hundred MB, sessions and a mail setup. It ran on Express, and I wanted to know what happens when inkan has to do real work. Turns out: mostly fine. But not completely. And that “not completely” turned into inkan 0.5.0 The first problem was request bodies. inkan read every body into memory, with one 1 MB limit for the whole app. Fine for JSON, less fine for “hey, can I upload this 2 GB backup?” No ❤️ So I paused the migration and fixed the framework first. 0.5.0 brings t.binary() for files sent as the request body, and t.stream() for real streaming uploads: your handler gets the upload chunk by chunk, so the file never sits in memory. Limits are per route, so one endpoint can take 2 GB while the rest stays at 1 MB. On the way I found a fun bug: when a stream hit its limit, or the server answered 401 before the upload was done, the connection could just… hang. Fixed, the response arrives and the rest gets drained properly Then the frontend. Now there’s serveStatic(): hashed assets cached for a year, index.html never stuck in a cache, and unknown routes fall back to the SPA. Except /api, where a typo gets a real 404 instead of your entire frontend 💅 compress() does Brotli and gzip, streams included. In the app I migrated, the bundle went from 75 KB to 18 KB. There’s also ctx.ip for the login rate limiter (Bun and Deno too), per-route body limits and app.bodyFor() for adapter authors. And the benchmarks say no potato: every scenario stayed within ±4% of main on the same GitHub runner. And then something else happened: inkan got integrations 🧩 All in one repo at github.com/inkanjs/integrations. @inkanjs /vite runs your API inside the Vite dev server, so frontend and API share one port. No proxy, no second terminal, just npm run dev. The API reloads on every save, each reload counts as a fresh restart so your timers don’t multiply, the docs and inspector links show up in Vite’s banner, and a broken API shows up in Vite’s error overlay. @inkanjs /next turns an inkan app into Next.js route handlers with one line, works with the Pages Router too, and has direct(app): a typed client for Server Components that calls your API in the same process. CI builds and starts a real Next.js app, because “works on my machine” isn’t a testing strategy. @inkanjs /query is for TanStack Query: keys and types straight from the API paths, failed responses as errors with the problem document, and a retry() that won’t retry a 404 until the heat death of the universe. @inkanjs /uws runs inkan on uWebSockets.js, with graceful shutdown and HTTPS, and it’s the fastest way to run inkan. Nuxt, SvelteKit, Astro and Remix don’t even need a package: app.fetch is enough, and the repo has recipes. And the migration? All 55 routes run on inkan now, split into files by area instead of one 1300-line index.js. Every test passes, the frontend didn’t change a single line, and dev went from two processes, two ports and a proxy to npm run dev on one port. Express, compression and concurrently are gone, 74 packages fewer A real project is great at showing you where your framework doesn’t hold up. inkan had a few of those places. Now it has fewer. npm install @vxnsin / [email protected] See you next time, Stardancers 🌙"}, {"post_id": 77562, "ts": "2026-10-07T14:20:08Z", "hours": 2.1539, "text": "Hello again my little Stardancers ✨ inkan 0.4.0 is out, and I closed the entire milestone in one day. Every single issue. I don’t know who I am anymore either. The one I’m proudest of: npx @vxnsin /inkan learn. It’s a tutorial that lives in your terminal. It sets up a tiny tea shop, gives you twelve quests, and checks your work every time you hit save. Forgot a validation rule? It tells you. Stuck? Press h for a hint, press it again for a less subtle hint. By quest 12 you’ve built routes, contracts, auth, hooks, plugins, and you’ve broken a client on purpose (for science). No other web framework ships a tutorial inside itself, so I figured: why not be the first one. inkan also got grown-up stuff this time. Hooks, plugins and decorators, so you can bolt on your own things without touching the core, and a little rate limiter built on exactly those APIs to prove it works. Routes can now live in a folder tree, routes/teas/[id].ts and friends. And inkan finally leaves the house: app.fetch runs it on Bun, Deno and serverless, workers: “auto” uses every CPU core you own, and there’s an adapter for uWebSockets.js if you want to go absolutely feral. Then there’s inkan seal. It stamps your contracts into plain code ahead of time, so big requests get checked in about half the time. No eval, no runtime magic, just a file you can actually read. And if your contract changes and you forget to reseal, inkan notices and quietly ignores the stale seal. It’s basically a very responsible goldfish. Speed check, because I promised honest numbers: on a fair benchmark inkan beats Hono, by 0.4 points. I’m choosing to celebrate that like it’s 40. Fastify is still a bit ahead, Express is still Express. But put inkan on the uWS adapter and it’s a third faster than plain Node itself. Who’s the framework now. Also: inkan moved into its own home at github.com/inkanjs, and routes can now say who’s allowed in (security: “bearer”) and actually mean it."}, {"post_id": 77516, "ts": "2026-10-07T09:35:21Z", "hours": 2.4317, "text": "Hello again my little Stardancers ✨ inkan 0.3.0 is out, and it has learned to read the room. Specifically: it now notices when you’re about to break things for everyone who depends on you. Which is more than I can say for some group projects. The big one is inkan diff. You give it the OpenAPI document from your last release and your app as it is now, and it tells you exactly which changes would make your clients cry. A field that suddenly became required? Breaking. A route you “cleaned up”? Very breaking. A new optional field? Totally fine, go off. Put it in CI and your pipeline turns red before your users do. Also new: npx @vxnsin /inkan examples drops a whole explained project into your folder. Six of them, from “hello” to “deploy”, each with a README that tells you what to read first and a list of ways to break it on purpose, because honestly that’s how we all learn anyway. There’s a typed client now too: your frontend gets its types straight from the server routes, no codegen, no ritual sacrifices. Typo in a path? It doesn’t compile. Beautiful. And the rest of the goodie bag: server-sent events with a schema per event (even endless streams can be tests now, don’t ask how, it’s magic and also a counter), file uploads with size and type limits, examples that build on each other (“create a tea, then fetch it”), request ids in every log line and every error, a replay button in the inspector that turns real traffic into examples, and you can now edit requests right on the docs page. Huge thanks to AndrewCMD for dates, refinements and recursive schemas, inkan’s brain got noticeably bigger."}, {"post_id": 77381, "ts": "2026-10-06T18:46:55Z", "hours": 0.3147, "text": "Hello again my little Stardancers ✨ inkan 0.2.0 is out, and it has trust issues now, just like my ex. The difference is that inkan’s trust issues are actually helpful. The big one: inkan check now tells you what you forgot to test. If your route promises a 409 but none of your examples ever triggers it, inkan points at it and says “that one, nobody checked that one.” Add –strict and your CI refuses to go green until you write that example. Your docs page shows the same hint, so the lie gets caught twice. Browsers can finally talk to inkan from another origin too. There’s a little cors() middleware, and OPTIONS requests get answered automatically instead of a sad 405. The terminal got its colours, RinZ27’s lifecycle hooks made it in, and the CLI now has real tests of its own. Releasing is one click now as well: a GitHub release publishes to npm with a signed link back to the exact commit, so you can check that what you install is what’s on GitHub."}, {"post_id": 77348, "ts": "2026-10-06T17:02:27Z", "hours": 0.4039, "text": "Hello my little Stardancers ✨ Devlog time! No ship yet, but here’s what’s been cooking. inkan (印鑑) is an API server for Node where the docs can’t lie. Every route gets one contract, and from that inkan validates requests, types your handler, writes OpenAPI and serves docs. The fun part: every example in the docs also runs as a test, so if your code drifts away from what the docs promise, inkan check goes red before anyone reads a lie. Zero dependencies, so your node_modules can finally rest. This week I merged my first community PR 🎉 It adds lifecycle hooks for connecting your database on startup and closing it cleanly on Ctrl+C. Before merging I caught two sneaky bugs: a failing startup hook took the whole server down, and a stuck shutdown hook could keep the process alive forever, like a guest who won’t leave the party. Both are fixed and tested. Next up is better logging, and then the ship is coming soon™ 🫡"}]...
|
Title: inkan by @Vensin | Stardance
Devlogs:
Hell Title: inkan by @Vensin | Stardance
Devlogs:
Hello my little Stardancers ✨ Devlog time! No ship yet, but here’s what’s been cooking. inkan (印鑑) is an API server for Node where the docs can’t lie. Every route gets one contract, and from that inkan validates requests, types your handler, writes OpenAPI and serves docs. The fun part: every example in the docs also runs as a test, so if your code drifts away from what the docs promise, inkan check goes red before anyone reads a lie. Zero dependencies, so your node_modules can finally rest. This week I merged my first community PR 🎉 It adds lifecycle hooks for connecting your database on startup and closing it cleanly on Ctrl+C. Before merging I caught two sneaky bugs: a failing startup hook took the whole server down, and a stuck shutdown hook could keep the process alive forever, like a guest who won’t leave the party. Both are fixed and tested. Next up is better logging, and then the ship is coming soon™ 🫡
Hello again my little Stardancers ✨ inkan 0.2.0 is out, and it has trust issues now, just like my ex. The difference is that inkan’s trust issues are actually helpful. The big one: inkan check now tells you what you forgot to test. If your route promises a 409 but none of your examples ever triggers it, inkan points at it and says “that one, nobody checked that one.” Add –strict and your CI refuses to go green until you write that example. Your docs page shows the same hint, so the lie gets caught twice. Browsers can finally talk to inkan from another origin too. There’s a little cors() middleware, and OPTIONS requests get answered automatically instead of a sad 405. The terminal got its colours, RinZ27’s lifecycle hooks made it in, and the CLI now has real tests of its own. Releasing is one click now as well: a GitHub release publishes to npm with a signed link back to the exact commit, so you can check that what you install is what’s on GitHub.
Hello again my little Stardancers ✨ inkan 0.3.0 is out, and it has learned to read the room. Specifically: it now notices when you’re about to break things for everyone who depends on you. Which is more than I can say for some group projects. The big one is inkan diff. You give it the OpenAPI document from your last release and your app as it is now, and it tells you exactly which changes would make your clients cry. A field that suddenly became required? Breaking. A route you “cleaned up”? Very breaking. A new optional field? Totally fine, go off. Put it in CI and your pipeline turns red before your users do. Also new: npx @vxnsin /inkan examples drops a whole explained project into your folder. Six of them, from “hello” to “deploy”, each with a README that tells you what to read first and a list of ways to break it on purpose, because honestly that’s how we all learn anyway. There’s a typed client now too: your frontend gets its types straight from the server routes, no codegen, no ritual sacrifices. Typo in a path? It doesn’t compile. Beautiful. And the rest of the goodie bag: server-sent events with a schema per event (even endless streams can be tests now, don’t ask how, it’s magic and also a counter), file uploads with size and type limits, examples that build on each other (“create a tea, then fetch it”), request ids in every log line and every error, a replay button in the inspector that turns real traffic into examples, and you can now edit requests right on the docs page. Huge thanks to AndrewCMD for dates, refinements and recursive schemas, inkan’s brain got noticeably bigger.
Hello again my little Stardancers ✨ inkan 0.4.0 is out, and I closed the entire milestone in one day. Every single issue. I don’t know who I am anymore either. The one I’m proudest of: npx @vxnsin /inkan learn. It’s a tutorial that lives in your terminal. It sets up a tiny tea shop, gives you twelve quests, and checks your work every time you hit save. Forgot a validation rule? It tells you. Stuck? Press h for a hint, press it again for a less subtle hint. By quest 12 you’ve built routes, contracts, auth, hooks, plugins, and you’ve broken a client on purpose (for science). No other web framework ships a tutorial inside itself, so I figured: why not be the first one. inkan also got grown-up stuff this time. Hooks, plugins and decorators, so you can bolt on your own things without touching the core, and a little rate limiter built on exactly those APIs to prove it works. Routes can now live in a folder tree, routes/teas/[id].ts and friends. And inkan finally leaves the house: app.fetch runs it on Bun, Deno and serverless, workers: “auto” uses every CPU core you own, and there’s an adapter for uWebSockets.js if you want to go absolutely feral. Then there’s inkan seal. It stamps your contracts into plain code ahead of time, so big requests get checked in about half the time. No eval, no runtime magic, just a file you can actually read. And if your contract changes and you forget to reseal, inkan notices and quietly ignores the stale seal. It’s basically a very responsible goldfish. Speed check, because I promised honest numbers: on a fair benchmark inkan beats Hono, by 0.4 points. I’m choosing to celebrate that like it’s 40. Fastify is still a bit ahead, Express is still Express. But put inkan on the uWS adapter and it’s a third faster than plain Node itself. Who’s the framework now. Also: inkan moved into its own home at github.com/inkanjs, and routes can now say who’s allowed in (security: “bearer”) and actually mean it.
Hello again my little Stardancers ✨ It’s devlog time, and this one comes with a confession: I moved a real app onto inkan. Not a todo list. A real one with 55 routes, file uploads, backups of a couple hundred MB, sessions and a mail setup. It ran on Express, and I wanted to know what happens when inkan has to do real work. Turns out: mostly fine. But not completely. And that “not completely” turned into inkan 0.5.0 The first problem was request bodies. inkan read every body into memory, with one 1 MB limit for the whole app. Fine for JSON, less fine for “hey, can I upload this 2 GB backup?” No ❤️ So I paused the migration and fixed the framework first. 0.5.0 brings t.binary() for files sent as the request body, and t.stream() for real streaming uploads: your handler gets the upload chunk by chunk, so the file never sits in memory. Limits are per route, so one endpoint can take 2 GB while the rest stays at 1 MB. On the way I found a fun bug: when a stream hit its limit, or the server answered 401 before the upload was done, the connection could just… hang. Fixed, the response arrives and the rest gets drained properly Then the frontend. Now there’s serveStatic(): hashed assets cached for a year, index.html never stuck in a cache, and unknown routes fall back to the SPA. Except /api, where a typo gets a real 404 instead of your entire frontend 💅 compress() does Brotli and gzip, streams included. In the app I migrated, the bundle went from 75 KB to 18 KB. There’s also ctx.ip for the login rate limiter (Bun and Deno too), per-route body limits and app.bodyFor() for adapter authors. And the benchmarks say no potato: every scenario stayed within ±4% of main on the same GitHub runner. And then something else happened: inkan got integrations 🧩 All in one repo at github.com/inkanjs/integrations. @inkanjs /vite runs your API inside the Vite dev server, so frontend and API share one port. No proxy, no second terminal, just npm run dev. The API reloads on every save, each reload counts as a fresh restart so your timers don’t multiply, the docs and inspector links show up in Vite’s banner, and a broken API shows up in Vite’s error overlay. @inkanjs /next turns an inkan app into Next.js route handlers with one line, works with the Pages Router too, and has direct(app): a typed client for Server Components that calls your API in the same process. CI builds and starts a real Next.js app, because “works on my machine” isn’t a testing strategy. @inkanjs /query is for TanStack Query: keys and types straight from the API paths, failed responses as errors with the problem document, and a retry() that won’t retry a 404 until the heat death of the universe. @inkanjs /uws runs inkan on uWebSockets.js, with graceful shutdown and HTTPS, and it’s the fastest way to run inkan. Nuxt, SvelteKit, Astro and Remix don’t even need a package: app.fetch is enough, and the repo has recipes. And the migration? All 55 routes run on inkan now, split into files by area instead of one 1300-line index.js. Every test passes, the frontend didn’t change a single line, and dev went from two processes, two ports and a proxy to npm run dev on one port. Express, compression and concurrently are gone, 74 packages fewer A real project is great at showing you where your framework doesn’t hold up. inkan had a few of those places. Now it has fewer. npm install @vxnsin / [email protected] See you next time, Stardancers 🌙
Hello again my little Stardancers ✨inkan 0.6.0 is out, and this one was a big one. The plan was simple to say and hard to do: make inkan faster than Fastify on plain node:http, without generating code at runtime the way Fastify does with new Function. I wrote a plan with phases, measured main before touching anything, and then went through it step by step, keeping only what the numbers carried.First the fixed costs. Every request used to make about twenty little objects where six would do, and the request id came from a random UUID. Now the id comes from a counter, everything a route can work out ahead of time is worked out once at start, and a request with a body is only routed once. That alone saved about four percent of CPU per request. Then something odd happened: over HTTP, under full load, it was ten percent slower, even though it spent less CPU. I spent a good while hunting that down, measuring one change at a time against the last one, and it turned out to be fields I had made lazy. Filled on first use, they cost more under load than they saved. Made at once again, and the ten percent were back.Then the schemas. Every schema now checks through one function made once from its rules, which I call its stamp, instead of walking the schema tree on every request. To make sure nothing changed, a test builds every schema twice, once the old way and once the new, and compares two thousand random schemas and values. Same values, same messages, same paths.Writing answers was the lesson of the week. My first idea was a writer in plain JavaScript that writes only what the contract lists in one pass. It was clean, and it was almost twice as slow as the native JSON.stringify. So it went. What stayed: a plain object that holds exactly what the contract lists goes straight to the native writer, and anything else is copied with only the declared fields first. While pinning the old writer down with tests I also found five places where it wrote something it should not have, and two of them could let a key the contract never listed slip out. All five are fixed.And the honest result: on the bench inkan 0.6.0 scores 89.1 against Fastify’s 88.6, with node:http as 100. That is level, not ahead, because the runs overlap, so I am not calling it faster. It is 5.5 percent faster than 0.5, and with inkan seal a body of 50 objects is checked faster than by any server on the bench. Every number, phase by phase, is in the repository, including the ideas that did not work.There is more than speed in this one. The context can answer with text, html, a redirect or a 404 now, and the html tag escapes everything you put into it, so a name someone typed can never become a script on your page. Layouts work per scope, cookies are safe by default, and a handler can hand back rows straight from a database cursor: they go out as they are read, each one trimmed to the contract, as JSON or as one line per row. ctx.csv writes a million rows without holding them in memory, ctx.signal stops a query when the client leaves or the time is up, and a route can cache its answers and ask the database once when ten people ask at the same time.The website got a new logo too, 印 between braces, and the docs now have a real API section with every method and every option in one place.Next up is winning the scenarios where Fastify is still ahead: small requests, the router and middleware. I have a few ideas.See you next time ✨
Hello again my little Stardancers ✨ inkan 0.8.0 is out. This one is less about new tricks and more about making inkan something you can actually build on without it shifting under you. The big one: the API is stable now. Every function is marked either stable or experimental. Stable stuff won’t just change or disappear anymore. If I rename something, the old name keeps working with a warning for at least two versions and six months. Before freezing it I had the whole API reviewed and cleaned up the things I would have regretted later, like time options that were seconds in one place and milliseconds in another, or two different names for the same origin setting. There’s also a test now that fails the moment the public types change by accident. Then storage. Until now every feature kept its own little store in memory, so jobs and logins only worked in one process. Now there’s one Store in the core, and four new packages that plug into it: redis, postgres, mongo and mysql. You pass in your own database client, so none of them add a dependency. With one of those, jobs, sessions, logins and rate limits work across several processes and servers. Each adapter has to pass the same test suite, and they’re all tested against real database servers, not fakes. They also got a security review. That found a few real things, like a way to inject SQL into MySQL under unusual server settings, and that my login protection had become weaker than before. All fixed. Smaller stuff: React hooks for live data in @inkanjs /query, so you can show job progress or websocket messages with one hook websockets now also run on uWebSockets.js async handlers got faster and are now as fast as plain node:http on the benchmark a fix where the dev inspector could be reached when it shouldn’t About speed, honestly: on the GitHub runner inkan scored 91.0 and Fastify 89.9. inkan was ahead in two runs and level in the third, so I’m calling it level to slightly ahead, not faster. At first 0.8 even looked slower than 0.7, so I measured the CPU time per request separately, and it’s exactly the same as 0.7. The difference was the test machine moving around. One bug I only found during the release: on Node 22 a websocket that gets refused never tells you, it just waits forever. That’s fixed in 0.8.1. Next: I want to make writing adapters for other servers easier, and I still want someone from Fastify and Hono to look at my benchmark code. See you next time ✨...
|
1793119953.4862025
|
1793724753.4862025
|
|
46814
|
text to desmos by @z2 | Stardance
|
z2
|
0
|
45.8
|
0
|
[]
|
[{"post_id": 81202, "ts": "202 [{"post_id": 81202, "ts": "2026-10-20T08:20:32Z", "hours": 2.1039, "text": "Implemented exporting and added text segment metrics. It’s 4 am here. This is my final devlog, goodbye 👋"}, {"post_id": 81174, "ts": "2026-10-20T05:57:42Z", "hours": 11.1444, "text": "Polished up everything. A lot of UI work and a few other changes I can’t remember. Anyways, we finally have something resembling a MVP :)"}, {"post_id": 79239, "ts": "2026-10-13T05:18:31Z", "hours": 7.4878, "text": "Finally embedded the actual calculator (which was surprisingly easy, thanks desmos team!) Also, I fixed a bug where control points were being rounded to a grid at small font sizes. I don’t think the current error metric for bezier curve flatness is good, since it’s a distance that depends on the size of the curve (which depends on font size). Maybe I could just scale the threshold by the font size, but I’d have to look more into it. That’s why in the new screenshot, there are way too many samples, even though I set the tolerance slider to the max. The sampling now happens in glyph space, which is at a way larger scale (1em = around 1000 units) compared to the output space, and I forgot to change the slider’s bounds. Also did a bunch of rewrites, and bumped the text shaping/font loading dependencies; their new API is so much simpler that I was able to get rid of a dependency I previously needed. It’s funny, but I regret that I had to deal with the old API."}, {"post_id": 70388, "ts": "2026-09-19T02:56:00Z", "hours": 1.5586, "text": "Implemented recursive subdivision sampling (why was this so easy?) Basically you split each cubic curve into two cub-curves at t=0.5, and repeat until the curve is approximately a line segment. Though I need to find error metrics that are easy to understand, the current one depends on font size. Image: sample points in black, control points in blue"}, {"post_id": 66194, "ts": "2026-09-11T21:13:10Z", "hours": 4.2167, "text": "Refactoring and cleaning up, in preparation for at least 2 more sampling options (fixed density and adaptive). Also removed duplicated code so that the debug view actually reflects the polygon output, instead of doing its own text shaping. Have random code screenshots now"}, {"post_id": 64570, "ts": "2026-09-09T02:34:21Z", "hours": 2.7386, "text": "Cleaned up the code and implemented a makeshift curve sampler. Currently I’m taking a fixed number of samples for each bezier segment in the glyph splines, so the resolution is inconsistent and there’s way more points than necessary in some places."}, {"post_id": 61702, "ts": "2026-09-04T18:59:18Z", "hours": 5.7539, "text": "Can now load .woff and .woff2 fonts, and the decompressed font & its shaper are stored globally instead of re-parsing every text update. I’m just outputting control points now, but soon I can finally implement the actual sampling. Also, something weird is going on with the Fira code variable font?"}, {"post_id": 50075, "ts": "2026-08-19T04:07:14Z", "hours": 8.8028, "text": "Drawing text to an svg path. Also set up a debug ui to make sure the text shaping (glyph layout, ligatures, etc) is being done properly. For that, I ended up using a recent HarfBuzz port with basically no docs, which was really fun and not at all hard to understand. I also spent a lot of time searching up browser apis on MDN, and figuring out how to work with async. Next up: keep the parsed font loaded on the Rust side detect and decompress .woff files actually convert it to polygon allow specifying fallback fonts find out how to allow more formatted text (italic/bold, line breaks, centering, etc)"}, {"post_id": 45325, "ts": "2026-08-11T18:19:47Z", "hours": 1.9942, "text": "First commit, I finished setting up the tooling and a template for svelte/wasm. Now time to go learn svelte"}]...
|
Title: text to desmos by @z2 | Stardance
Devlogs: Title: text to desmos by @z2 | Stardance
Devlogs:
First commit, I finished setting up the tooling and a template for svelte/wasm. Now time to go learn svelte
Drawing text to an svg path. Also set up a debug ui to make sure the text shaping (glyph layout, ligatures, etc) is being done properly. For that, I ended up using a recent HarfBuzz port with basically no docs, which was really fun and not at all hard to understand. I also spent a lot of time searching up browser apis on MDN, and figuring out how to work with async. Next up: keep the parsed font loaded on the Rust side detect and decompress .woff files actually convert it to polygon allow specifying fallback fonts find out how to allow more formatted text (italic/bold, line breaks, centering, etc)
Can now load .woff and .woff2 fonts, and the decompressed font & its shaper are stored globally instead of re-parsing every text update. I’m just outputting control points now, but soon I can finally implement the actual sampling. Also, something weird is going on with the Fira code variable font?
Cleaned up the code and implemented a makeshift curve sampler. Currently I’m taking a fixed number of samples for each bezier segment in the glyph splines, so the resolution is inconsistent and there’s way more points than necessary in some places.
Refactoring and cleaning up, in preparation for at least 2 more sampling options (fixed density and adaptive). Also removed duplicated code so that the debug view actually reflects the polygon output, instead of doing its own text shaping. Have random code screenshots now
Implemented recursive subdivision sampling (why was this so easy?) Basically you split each cubic curve into two cub-curves at t=0.5, and repeat until the curve is approximately a line segment. Though I need to find error metrics that are easy to understand, the current one depends on font size. Image: sample points in black, control points in blue
Finally embedded the actual calculator (which was surprisingly easy, thanks desmos team!) Also, I fixed a bug where control points were being rounded to a grid at small font sizes. I don’t think the current error metric for bezier curve flatness is good, since it’s a distance that depends on the size of the curve (which depends on font size). Maybe I could just scale the threshold by the font size, but I’d have to look more into it. That’s why in the new screenshot, there are way too many samples, even though I set the tolerance slider to the max. The sampling now happens in glyph space, which is at a way larger scale (1em = around 1000 units) compared to the output space, and I forgot to change the slider’s bounds. Also did a bunch of rewrites, and bumped the text shaping/font loading dependencies; their new API is so much simpler that I was able to get rid of a dependency I previously needed. It’s funny, but I regret that I had to deal with the old API.
Polished up everything. A lot of UI work and a few other changes I can’t remember. Anyways, we finally have something resembling a MVP :)
Implemented exporting and added text segment metrics. It’s 4 am here. This is my final devlog, goodbye 👋...
|
1792489845.8267293
|
1793094645.8267293
|
|
70466
|
ForgeS3 V1 by @izaanhussain | Stardance
|
izaanhussain
|
0
|
3.64
|
0
|
[]
|
[{"post_id": 81203, "ts": "202 [{"post_id": 81203, "ts": "2026-10-20T08:23:50Z", "hours": 3.6378, "text": "I have finished routing and other things fully and i think its ready to ship ,and note this project was earlier submitted to phantom but it didn’t get reviewed so i told to remove it from there thanks"}]...
|
Title: ForgeS3 V1 by @izaanhussain | Stardance
De Title: ForgeS3 V1 by @izaanhussain | Stardance
Devlogs:
I have finished routing and other things fully and i think its ready to ship ,and note this project was earlier submitted to phantom but it didn’t get reviewed so i told to remove it from there thanks...
|
1793011652.3355808
|
1793616452.3355808
|
|
68214
|
oops! by @Al_Lee | Stardance
|
Al_Lee
|
1
|
27.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T09:11:42Z", "hours": 27.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Doodle Jump, and Rise inspired game, about a crow jumping on clouds and shooting obstacles to protect his daughter’s balloon from popping. I found RigidBody2D’s in Godot very challenging, as they had different ways to move than character and area2d’s. I had to rely on Ai to learn and make the code for that part, but once I got 1 rigid body done, most of them I did myself after learning from Ai. I’m proud of stepping out of my comfort zone, and making a unique game instead of a generic platformer. For people testing my project, PLEASE read the controls, and know that the game takes a few attempts to beat.", "repo": "https://github.com/alchoilee-lgtm/Oops", "demo": "https://inzpire.itch.io/oops"}]...
|
[{"post_id": 81204, "ts": "202 [{"post_id": 81204, "ts": "2026-10-20T08:44:28Z", "hours": 5.5825, "text": "Final Game Done I did a lot I think, mostly bug fixing. I made the player have more health, added music, and sound effects. The Yap: I spent a lot of time testing the game on web, because I KEPT FORGETTING TO DO THAT ONE THING. Also for some reason, the particles for player shoot and bomb explosion were being green in the web version, so my fix to this was to make there be NO hue variation. Hue Variation is how much the colour of the particle can vary from the set colour. Also the bird enemies rotation was messsed up, so I had to do some flip_v and flip_h to fix that Also, my friend said the game was TOO HARD, so I made the balloon have some more health. That wasn’t the move, cuz now you could beat the game WITHOUT EVEN SHOOTING…. Anyway I ended up only adding 10 more health instead of the intial 30. Also I added some Hit and Shoot sound effects from JSFXR, which sounds really good, but I dont really know if it is too loud or too soft."}, {"post_id": 79005, "ts": "2026-10-12T09:52:41Z", "hours": 4.065, "text": "Finished the story and like all the art Quick Summary Made story slides Made title screen Made a bunch of art for my game Adjusted difficulty THE YAP: That art took me like most of the day, even though it says it only took me 4 hours. This is because I have no idea how to connect Hackatime to Scratch, which is what I use for my art (pls tell me if you know). I know that scratch is a pretty bad art editor, but I have no idea how to use other engines. A downside of this is that when I import my SVG’s (the file type that scratch uses for Vector mode art), I need to increase the scale of it in the import tab. I neeed to to this for EVERY SINGLE PIECE OF ART I MAKE!!!! Also every time I update art, I need to do it again. Also Scratch’s built in Text doesnt show on Godot for some reason, so I need to A) go to google drawings and type my text in a text box, B) import it as an SVG file C) load it into scratch, and D) if the formatting doesnt work, repeat the process The art isnt the only tiring thing, as I need to make timers for each of my dialogue tell it when to run, because for some reason, I decided to VOICE ACT it… For example, for my first line of text “there was once a happy family of crows, free of troubles and doubts” (i think its something like that) I need to make a timer, attach it to my Sprite2D (it contains the slide art), and set a timer for when to run. I need to do this process for every single piece of dialogue, and I have like 10. It sounds pretty horrible too, but I’ll probably add a toggle for it cuz I spent so long on it. The menu also went through a iteration, cuz at first, I was gonna put a play button on my balloon, and I was gonna make the balloon fly away when clicked. I soon realized (after making it) that it looks ugly so I opted for a space bar approach instead In the next devlog, I’ll make a win screen and death screen, as well as that toggle for story and a skip for the story. Anyways, cya in the next one :D"}, {"post_id": 78857, "ts": "2026-10-11T19:48:04Z", "hours": 1.8739, "text": "Woops Well, I finished up the main game, although I might need to add more difficulty lol I just need to add: -Main Menu -Art -Story -Music In other words, I have like 10 more hours worth of coding left to do More Yap: I tried to make a balance scale with a bunch of obstacles on top, So I attached this long thin RigidBody2D to a StaticBody2D with a Pin Joint, but only after I added it, I realized that For the balance to work, it needs to be in the middle of the balloons path… And it cant move… Thats basically just a instakill machine, so I scrapped the idea. I also added a lot of Linear Drag to the Obstacles at (37 seconds) so that it wouldnt be as easy. Now, you need to hit the middle of the obstacles for it to be cleared, otherwise the balloon gets COOKED I might also need a way of getting ammo, as its too OP just to spam bullets. Oh yeah, and the attack at 18 seconds is unavoidable right now, so I will probably make the attack slower or make the attack spawn at slower intervals, or maybe both lol."}, {"post_id": 78536, "ts": "2026-10-11T03:48:53Z", "hours": 6.0222, "text": "OOps! Made the player a Crow, and made art for him Made some cloud art for the platforms Made some balloon art Also, Balloons take damage now In addition, I added a new “bomb” attack Oh yeah I added a progress bar for how high up you are, and a health bar for the Balloons"}, {"post_id": 78162, "ts": "2026-10-09T20:34:05Z", "hours": 9.5539, "text": "New Game called “oops” The story is about this crow girl who accidently lets go of her helium balloon, so you. as the dad, have jump on the clouds, and shoot off any obstacles that could pop it. I haven’t made any art so its all made out of the godot icon lol, but the premise of the game is basically “do doodle jump while protecting your balloon. I spent a lot of time getting the idea down, but I think it is pretty good :)"}]...
|
Title: oops! by @Al_Lee | Stardance
Devlogs:
New Title: oops! by @Al_Lee | Stardance
Devlogs:
New Game called “oops” The story is about this crow girl who accidently lets go of her helium balloon, so you. as the dad, have jump on the clouds, and shoot off any obstacles that could pop it. I haven’t made any art so its all made out of the godot icon lol, but the premise of the game is basically “do doodle jump while protecting your balloon. I spent a lot of time getting the idea down, but I think it is pretty good :)
OOps! Made the player a Crow, and made art for him Made some cloud art for the platforms Made some balloon art Also, Balloons take damage now In addition, I added a new “bomb” attack Oh yeah I added a progress bar for how high up you are, and a health bar for the Balloons
Woops Well, I finished up the main game, although I might need to add more difficulty lol I just need to add: -Main Menu -Art -Story -Music In other words, I have like 10 more hours worth of coding left to do More Yap: I tried to make a balance scale with a bunch of obstacles on top, So I attached this long thin RigidBody2D to a StaticBody2D with a Pin Joint, but only after I added it, I realized that For the balance to work, it needs to be in the middle of the balloons path… And it cant move… Thats basically just a instakill machine, so I scrapped the idea. I also added a lot of Linear Drag to the Obstacles at (37 seconds) so that it wouldnt be as easy. Now, you need to hit the middle of the obstacles for it to be cleared, otherwise the balloon gets COOKED I might also need a way of getting ammo, as its too OP just to spam bullets. Oh yeah, and the attack at 18 seconds is unavoidable right now, so I will probably make the attack slower or make the attack spawn at slower intervals, or maybe both lol.
Finished the story and like all the art Quick Summary Made story slides Made title screen Made a bunch of art for my game Adjusted difficulty THE YAP: That art took me like most of the day, even though it says it only took me 4 hours. This is because I have no idea how to connect Hackatime to Scratch, which is what I use for my art (pls tell me if you know). I know that scratch is a pretty bad art editor, but I have no idea how to use other engines. A downside of this is that when I import my SVG’s (the file type that scratch uses for Vector mode art), I need to increase the scale of it in the import tab. I neeed to to this for EVERY SINGLE PIECE OF ART I MAKE!!!! Also every time I update art, I need to do it again. Also Scratch’s built in Text doesnt show on Godot for some reason, so I need to A) go to google drawings and type my text in a text box, B) import it as an SVG file C) load it into scratch, and D) if the formatting doesnt work, repeat the process The art isnt the only tiring thing, as I need to make timers for each of my dialogue tell it when to run, because for some reason, I decided to VOICE ACT it… For example, for my first line of text “there was once a happy family of crows, free of troubles and doubts” (i think its something like that) I need to make a timer, attach it to my Sprite2D (it contains the slide art), and set a timer for when to run. I need to do this process for every single piece of dialogue, and I have like 10. It sounds pretty horrible too, but I’ll probably add a toggle for it cuz I spent so long on it. The menu also went through a iteration, cuz at first, I was gonna put a play button on my balloon, and I was gonna make the balloon fly away when clicked. I soon realized (after making it) that it looks ugly so I opted for a space bar approach instead In the next devlog, I’ll make a win screen and death screen, as well as that toggle for story and a skip for the story. Anyways, cya in the next one :D
Final Game Done I did a lot I think, mostly bug fixing. I made the player have more health, added music, and sound effects. The Yap: I spent a lot of time testing the game on web, because I KEPT FORGETTING TO DO THAT ONE THING. Also for some reason, the particles for player shoot and bomb explosion were being green in the web version, so my fix to this was to make there be NO hue variation. Hue Variation is how much the colour of the particle can vary from the set colour. Also the bird enemies rotation was messsed up, so I had to do some flip_v and flip_h to fix that Also, my friend said the game was TOO HARD, so I made the balloon have some more health. That wasn’t the move, cuz now you could beat the game WITHOUT EVEN SHOOTING…. Anyway I ended up only adding 10 more health instead of the intial 30. Also I added some Hit and Shoot sound effects from JSFXR, which sounds really good, but I dont really know if it is too loud or too soft.
Ships:
I made a Doodle Jump, and Rise inspired game, about a crow jumping on clouds and shooting obstacles to protect his daughter’s balloon from popping. I found RigidBody2D’s in Godot very challenging, as they had different ways to move than character and area2d’s. I had to rely on Ai to learn and make the code for that part, but once I got 1 rigid body done, most of them I did myself after learning from Ai. I’m proud of stepping out of my comfort zone, and making a unique game instead of a generic platformer. For people testing my project, PLEASE read the controls, and know that the game takes a few attempts to beat....
|
1793119823.499869
|
1793206223.499869
|
|
70272
|
ControlGS by @NeonGS | Stardance
|
NeonGS
|
0
|
5.27
|
0
|
[]
|
[{"post_id": 81206, "ts": "202 [{"post_id": 81206, "ts": "2026-10-20T09:09:54Z", "hours": 0.7981, "text": "Added Mouse clicks, most of the script is complete, now i’m going to design a GUI using PySide6(i don’t know how it works so i will watch some tutorials for it and maybe take some help from chatGPT) so users can easily map their keys instead of going through my messy code."}, {"post_id": 81076, "ts": "2026-10-19T19:42:07Z", "hours": 0.7439, "text": "Added right joystick controls, this joystick is used to move the player camera. It uses pygame’s mouse move to move the camera, the right joystick might not need to be mapped to something else. I tested it on the browser-based version of GTA Vice City, and it’s actually working!"}, {"post_id": 80910, "ts": "2026-10-19T07:15:05Z", "hours": 1.425, "text": "Today I worked on the joystick to W, A, S, D mapping, the positive and negative axis got mixed up at first because joystick up and down axis was -ve up, +ve down and -ve left, +ve right, why didn’t they mapped it like a coordinate plane but it’s done now."}, {"post_id": 80773, "ts": "2026-10-18T19:03:54Z", "hours": 0.8439, "text": "After working on input from the controller, I worked on the key simulation mapped to a button to check if the mapping actually simulates the key press or not, tested by mapping A on my controller to the space button and adding spaces between “this is” in Notepad. Tomorrow I’ll try mapping the joystick to W, A, S, D."}, {"post_id": 80609, "ts": "2026-10-18T09:27:28Z", "hours": 1.4572, "text": "Hello everyone! I’m working on a desktop application that lets users map their controller buttons to keyboard keys, so that users can play browser-based games directly with their Xbox 360 or other gaming controller. Today i worked on key detection for all 14 buttons."}]...
|
Title: ControlGS by @NeonGS | Stardance
Devlogs:
Title: ControlGS by @NeonGS | Stardance
Devlogs:
Hello everyone! I’m working on a desktop application that lets users map their controller buttons to keyboard keys, so that users can play browser-based games directly with their Xbox 360 or other gaming controller. Today i worked on key detection for all 14 buttons.
After working on input from the controller, I worked on the key simulation mapped to a button to check if the mapping actually simulates the key press or not, tested by mapping A on my controller to the space button and adding spaces between “this is” in Notepad. Tomorrow I’ll try mapping the joystick to W, A, S, D.
Today I worked on the joystick to W, A, S, D mapping, the positive and negative axis got mixed up at first because joystick up and down axis was -ve up, +ve down and -ve left, +ve right, why didn’t they mapped it like a coordinate plane but it’s done now.
Added right joystick controls, this joystick is used to move the player camera. It uses pygame’s mouse move to move the camera, the right joystick might not need to be mapped to something else. I tested it on the browser-based version of GTA Vice City, and it’s actually working!
Added Mouse clicks, most of the script is complete, now i’m going to design a GUI using PySide6(i don’t know how it works so i will watch some tutorials for it and maybe take some help from chatGPT) so users can easily map their keys instead of going through my messy code....
|
1792968760.797243
|
1793573560.797243
|
|
7614
|
UniScan by @dexrn | Stardance
|
dexrn
|
0
|
239.34
|
0
|
[]
|
[{"post_id": 81208, "ts": "202 [{"post_id": 81208, "ts": "2026-10-20T09:19:45Z", "hours": 9.0592, "text": "Coming in the next full update will also be UI modes This is so that the UI is optimized for every device and their input methods This is the Mobile one, and the main page will (when its finished) have all remotes including non-connected ones and a button to add more remotes and such."}, {"post_id": 80144, "ts": "2026-10-16T11:58:28Z", "hours": 3.9517, "text": "Working on settings…! After this there will be configuration on the serverside and then after that, audio streaming!"}, {"post_id": 79731, "ts": "2026-10-15T07:54:37Z", "hours": 6.7103, "text": "New logo! (credits at end) I intend to make the logo customizable by allowing you to change the color of various elements, and choose between different logos (since no other software ive seen does this) Maybe even change the color of the scanner display when someone is talking even… Thanks to Unomelon for the base, which I used to draw the scanner. Check out Unomelon here: https://bsky.app/profile/unomelon.bsky.social , and his very cool game Allumeria here: https://allumeria.com/ (wasnt asked to add this but I think the game is really cool and am somewhat active in the community)"}, {"post_id": 77782, "ts": "2026-10-08T08:12:30Z", "hours": 5.2025, "text": "Finally committed the latest Shiki changes, will release UniScan’s next commit tomorrow."}, {"post_id": 76647, "ts": "2026-10-04T07:57:18Z", "hours": 11.0072, "text": "Have been working on more Shiki refactors and a nice language system for servers in UniScan to provide language strings without being able to overwrite client language strings Reworked most of the TaskPipelineBuilder with many more accepting delegate types and have done some cleanup since Tomorrow I will finish up releasing the next Shiki version and then I think I will be able to release the next UniScan commit and then keep working for an alpha release."}, {"post_id": 73501, "ts": "2026-09-25T07:49:46Z", "hours": 9.2694, "text": "getting yelled at by starpheus because I haven’t made devlog yet spent all nighter last night refactoring shiki’s modulemanagement project and then today I refactored lots of shiki’s taskpipeline project, as well as some work being done on Shiki’s Result and family (shiki is the side project library with most of it’s code originating from UniScan, and UniScan heavily depends on it) Now the browser initialization is much cleaner (but not perfect of course) (first screenshot is new, second is old) Removed HostEnvironment because we usually only grab the parts from DI anyway"}, {"post_id": 73041, "ts": "2026-09-24T08:06:31Z", "hours": 11.4114, "text": "For funzies, here’s the dev build running inside a rooted Oculus Quest 2 (thanks to my friend for testing this) This is also a good test of the netcode over a long distance (they’re in Malaysia while I’m in the US) Getting close to committing this all alongside Shiki and such… Long cleanup process."}, {"post_id": 70021, "ts": "2026-09-18T09:20:00Z", "hours": 2.1572, "text": "Here’s a showcase of my Uniden SDS100 scanning, with UniScan showing the details in real time! I programmed in some garbage test channels so you won’t see any channels talking in this video. Everything shown here is sent by the server and updated by the server… Still somewhat far from complete as I have to figure out more stuff (mainly more stuff for the client to deal with, like hiding state display textblock on null bindings and more UI features/styling)."}, {"post_id": 69912, "ts": "2026-09-18T01:47:47Z", "hours": 10.1983, "text": "Okayyy so I was able to actually completely gut DeviceState and now it’s actually just a class which is also used to serialize individual states. This also means I can nuke reflection from the serialization process since I can just make IDeviceState forced to inherit IStateSerializer which will be much more dynamic!!! This means literally any states can be sent to the client and as long as the server or the module has the UI to render the states, it will work. This also allows states to be diffed and only the changed parts to be sent Second screenshot shows the UI sent by the server, note that the Volume: 0 is actually all being handled on the client via binding strings (where the server only sends the client the device states and the binding strings will look up those states itself)"}, {"post_id": 67990, "ts": "2026-09-14T10:18:38Z", "hours": 0.7964, "text": "And now we can finally start seeing the fruits of our labor"}, {"post_id": 67864, "ts": "2026-09-14T04:29:36Z", "hours": 7.07, "text": "IT FINALLY WORKS The UI shit I built on the server now syncs to the client correctly, and the flow isn’t actually too bad! Although this will be improved by also having a registry…registry…(yeah I know it’s weird) on the client so that UI elements can have values bind to them, and all the server has to do is send the client data to those registries"}, {"post_id": 65237, "ts": "2026-09-10T07:13:02Z", "hours": 3.4144, "text": "Went on a small side-tangent. Icons! (dw still working on the SSR device stuff)"}, {"post_id": 63401, "ts": "2026-09-07T06:50:20Z", "hours": 5.6181, "text": "Sorry, haven’t been super active due to life. Fixed a few bugs in the meantime and implemented most of the SSR binding stuff, but it’s far from finished, hell I haven’t even gotten to test it yet. Will be gone for a bit tomorrow, and the next day I will be at a different house for a few days albeit with my computer."}, {"post_id": 61349, "ts": "2026-09-04T07:02:15Z", "hours": 5.4761, "text": "While I didn’t get to scanner state displaying yet, I did refactor the classes that handle how remotes connect, disconnect, etc so that it’s not spread around the codebase. This fixes a few bugs related to state management due to how originally these viewmodels were constructed separately of eachother. Tomorrow I will be gone for a few hrs but should be back soon enough to hopefully make some more refactors and/or start on the remote display. Pictured is the new disconnect button in the remote on the sidebar"}, {"post_id": 60741, "ts": "2026-09-03T09:41:59Z", "hours": 2.8389, "text": "The client can now disconnect itself, and more styling has been added to the SSR UI (shown here is a Container which is centered and has a slight margin) tomorrow will be some more work on the SSR UI and then finally getting the scanner state to show on the client. I’m not too pleased with the idea that the server may change the look of the device pages on the clients, though… I still feel like there could be some better way to go about this."}, {"post_id": 60674, "ts": "2026-09-03T06:03:58Z", "hours": 7.28, "text": "I FINALLY GOT SSR WORKING MY GOD still too primitive to do anything atm, working on it."}, {"post_id": 59441, "ts": "2026-09-01T09:14:39Z", "hours": 2.6186, "text": "A friend of mine was able to test it on iOS, we got it working. Gonna have them send in the PR later and set up CI for it."}, {"post_id": 58714, "ts": "2026-08-31T07:59:18Z", "hours": 3.1222, "text": "Started working on state sync, will continue tomorrow probably States are synced now but I need to think about how to deal with scanner groups and channels and such because there are different types of channels (such as P25, conventional, etc) among other type issues and I want to reduce the need for any modules on the client if I can."}, {"post_id": 56408, "ts": "2026-08-28T05:18:41Z", "hours": 1.9061, "text": "UniScan Client v0.1.0, UniScan Server (Host) v0.1.1 Lots of changes, most of them are backend changes, but there are also a handful of frontend changes too! https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Client.App%2F0.1.0 Remotes are now stored per file instead of one large file, and the UI has been neatened up. The server now sends metadata containing a logo, various information, an MOTD, links, etc. The UI has been updated to display this information too. There are more changes than this, but there are too many to list here without hitting the 4000 char limit. Attached is a small video showing some of the new UI stuffs. By no means is it bug free, but the PR reached a point where it could be merged to allow for other important tasks to be focused on (like y’know, showing the actual scanner info)"}, {"post_id": 55440, "ts": "2026-08-27T08:29:55Z", "hours": 1.0639, "text": "I think this looks pretty nice apparently Avalonia has some nuget package that adds ItemsRepeater which does what I was originally trying to do in a cleaner way"}, {"post_id": 55410, "ts": "2026-08-27T06:57:46Z", "hours": 0.9983, "text": "Here’s the announcements UI, I think I’m almost done on this branch and then I’ll continue on main."}, {"post_id": 55287, "ts": "2026-08-27T00:47:49Z", "hours": 2.4511, "text": "Need opinions on this UI The server logo now shows where possible, so on the home view and in the sidebar In the remote view, there is a top ‘window’(?) that holds (from top to bottom): logo (to the side: title, description), server links and then the bottom floating window thing holds the server MOTD I still need to find a place to hold the server announcements… Alongside this were a ton of internal refactors, and the subscribe button now works (but the server still won’t properly send the current state) Been trying to post this since yesterday (I re-recorded the video today), but Hackatime has been down."}, {"post_id": 54227, "ts": "2026-08-25T03:48:43Z", "hours": 5.8811, "text": "Remotes are now stored per file instead of all inside one file. Additionally, server info is now properly cached! I had to rewrite most of the remote initialization flow, but now it’s much better. Adding and removing remotes automatically saves to disk because I can observe the list. This isn’t the end of this overhaul, but we’re getting closer… I think I want to refactor more of UniScanClient next. This is happening on another branch: https://github.com/UniScanProject/UniScan/tree/feat/use_server_provided_display_names After this branch is merged into main, I will make the available server info also show since we have the entire RemoteInfo being sent, which includes announcements, a description, a logo, etc."}, {"post_id": 53539, "ts": "2026-08-24T04:08:25Z", "hours": 3.6514, "text": "Working on dropping display names from client remotes As well as some refactor of the connection flow using my new TaskPipeline Once this is done, the server will be able to send branding, announcements, and other useful information on connect for the client to display!"}, {"post_id": 52159, "ts": "2026-08-22T07:56:54Z", "hours": 1.7483, "text": "Just released a new version, now you can make remotes from the UI finally. Here’s a video showing the creation flow. Note that the list is dynamic based on classes implementing IConnectionMethodFactoryViewModel with attribute ConnectionMethodFactoryViewModelAttribute"}, {"post_id": 52085, "ts": "2026-08-22T04:54:12Z", "hours": 2.8142, "text": "working on fixing the fact that you can’t really make remotes"}, {"post_id": 51645, "ts": "2026-08-21T13:05:32Z", "hours": 3.4047, "text": "FINALLY I GOT IT DONE IM SO TIRED New loading screen!!!! And OPFS file handles are now keyed by int im going to sleep now https://uniscan.dexrn.me"}, {"post_id": 51484, "ts": "2026-08-21T06:59:47Z", "hours": 0.3158, "text": "Much nicer loading screen"}, {"post_id": 51332, "ts": "2026-08-20T22:40:12Z", "hours": 2.3814, "text": "Alright I’ve committed and now you can access UniScan through https://uniscan.dexrn.me Note that since this is still an early version, you can’t really do much. You can also install it as a PWA on iOS, Android, and most desktop browsers. (pictured is UniScan as a PWA in ungoogled-chromium) Hopefully tomorrow I will fix the crash with adding remotes by making some sort of map of connection type -> UI widget to define the settings for them. (meant to post this yesterday, but GH was still working on some cert garbage)"}, {"post_id": 50726, "ts": "2026-08-20T02:11:03Z", "hours": 1.7997, "text": "UniScan now works in browser! I’ve also added a nice crash handler since unhandled exceptions act weird in the browser. Just polishing up now, will commit and set up Actions to host this. Once it’s up, the link will be https://uniscan.dexrn.me (The crash shown in the video is a real issue and will be fixed later.)"}, {"post_id": 50685, "ts": "2026-08-20T00:10:14Z", "hours": 2.6617, "text": "FINALLY I GOT OPFS WORKING GG"}, {"post_id": 50163, "ts": "2026-08-19T08:34:19Z", "hours": 0.6781, "text": "OK I GOT IT SOMEWHAT WORKING IN BROWSER FINALLY still need to keep implementing OPFS stuff though. serilog 01:32:29 [ERR | UniScan.Client.Core.Config.Remote.RemotesListFile] Failed to save remotes to remotes.json System.Exception: Entry not found at SpawnDev.SpawnJS.SpawnJSRuntime.<_InteropCallApplyAsync>d__132`1[[SpawnDev.SpawnJS.JSObjects.FileSystemSyncAccessHandle, SpawnDev.SpawnJS, Version=2.1.8.0, Culture=neutral, PublicKeyToken=null]].MoveNext()"}, {"post_id": 50120, "ts": "2026-08-19T06:14:18Z", "hours": 1.0522, "text": "I think this looks pretty good for a little loading screen. I’ll probably add a try/catch if possible and show an error dialog when some fatal exception is thrown… The “Loading…” text is temporary and is done in Avalonia, will make a proper loading screen there sometime later."}, {"post_id": 50073, "ts": "2026-08-19T03:53:07Z", "hours": 1.5272, "text": "Using this time to test out M3 web (even though it’s in maintenance mode) This is just for the loading screen while it downloads all the WASMs. The cell tower is temporary until I can either make my own logo or find someone who will make one for me."}, {"post_id": 49405, "ts": "2026-08-18T06:53:24Z", "hours": 0.5689, "text": "Waiting on a bug to be fixed in SpawnJS.WebWorkers and then hopefully next update will include web support + a website for y’all to test the client!!! Couldn’t do much today since I was so busy, however since I’m home now I can work on UniScan at a better time than 12 in the morning."}, {"post_id": 48708, "ts": "2026-08-17T06:57:16Z", "hours": 2.0306, "text": "Didn’t get to release last night, as a new bug popped up. 11>MessagePack.GeneratedMessagePackResolver.g.cs(74,74): Error CS0426 : The type name 'Shiki' does not exist in the type 'GeneratedMessagePackResolver'11>------- Finished building project: UniScan.Network. Succeeded: False. Errors: 1. Was able to fix it with some property in the AssemblyInfo. (see: github.com/MessagePack-CSharp/MessagePack-CSharp/issues/2133) I changed the Identifier to be a Slug instead for the devices. Working on browser stuff real quick and will commit sometime soon."}, {"post_id": 47901, "ts": "2026-08-16T05:27:47Z", "hours": 1.0794, "text": "Not fully happy with the manner in which this works, but the virtual scanner does work! Will publish some if not all of it tonight, but no version tag for this yet until I fix my refactoring."}, {"post_id": 47322, "ts": "2026-08-15T06:23:55Z", "hours": 1.4389, "text": "Working on a virtual scanner module to help development by simulating a scanner, hope to have it ready by tomorrow. This also means any future contributors will be able to start contributing even if they do not own a scanner!"}, {"post_id": 46716, "ts": "2026-08-14T05:00:44Z", "hours": 0.8869, "text": "spun up entire android emulator just to realize it was some debug code I forgot to remove that was causing it to throw and die because afaik currentdirectory is / for android apps? gonna release this and then start working on remote adding from UI I think"}, {"post_id": 46099, "ts": "2026-08-13T02:11:59Z", "hours": 5.3278, "text": "UniScan source is now up, you can view it at https://github.com/UniScanProject/UniScan UniScan Client & Server v0.0.2 https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Client.App%2F0.0.2 https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Server.Host%2F0.0.2 Added CI for UniScan.Server.Host UniScan.Client.Core Use DI for PacketRegistry Update RemoteFactory.Create to pass PacketRegistry instance from DI Breaking Changes Updated RemoteServer constructors to take an instance of PacketRegistry Removed InternalUniScanClientPacketConfigurator Packets are now registered from AssembliesPacketSource InternalUniScanClientModule no longer adds an IPacketConfigurator to DI as this class has been removed. UniScan.Network Breaking Changes Renamed ScannerInfoPacket -> ScannerRegistrationPacket The new ID for this packet is UniScan:packet/clientbound/device/registration This fixes a bug where there were two instances of the same packet ID used for different packets in the codebase Removed BuiltinPacketRegistrar Removed IPacketConfigurator Moved PacketRegistry and RegistryPacketAttribute to UniScan.Network.Registry Created IPacketSource and AssembliesPacketSource AssembliesPacketSource collects all classes that inherit IPacket and have the RegistryPacket attribute. Removed the singleton Instance property from PacketRegistry Created PacketRegistry.RegisterFromSource and PacketRegistry.RegisterFromSource<TPacketSource> PacketRegistry.RegisterFromSource takes a given IPacketSource and registers all the packets it provides. PacketRegistry.RegisterFromSource<TPacketSource> creates a new instance of the given TPacketSource type and passes it to PacketRegistry.RegisterFromSource UniScan.Server.Core SubscribePacketHandler now sends the newly renamed ScannerRegistrationPacket Breaking Changes Removed PacketRegistry.RegisterFromSource InternalUniScanServerModule no longer adds an IPacketConfigurator to DI as this class has been removed. Packets are now registered from AssembliesPacketSource UniScan.Server.Host Now creates its own PacketRegistry and passes it to the UniScanServer constructor. UniScan.Tests Now creates its own PacketRegistry and passes it to the ClientSocket constructor."}, {"post_id": 44449, "ts": "2026-08-10T06:23:32Z", "hours": 11.9661, "text": "Been working on cleaning up the codebase in preparation for the initial commit. (thanks @CT5 for some of the motivation) https://github.com/UniScanProject/UniScan will be the project’s home. This does NOT mean it is ready to use, it is far from so. However, it means I will be able to publish releases and such, and everyone will be able to read the code. I will also be working on a Module alongside the core project, which acts as a virtual scanner, for testing of course. My next steps will be getting the virtual scanner module good enough to use as testing, then figure out what to do about the UI, as I don’t really want to force modules onto users. My idea here is that we send a UI ‘definition’(?) to the client for it to render, and let modules hook into them. Means we can also have each button call to the server when pressed if it’s meant to perform a server-side action. I am also planning a scope increase to include SDRs and two-way radios in the distant future. Would like y’alls opinions."}, {"post_id": 28082, "ts": "2026-07-14T03:34:16Z", "hours": 15.6422, "text": "Doing better at Avalonia so I was able to fix some issues and make the Home screen actually contain something useful, with this being a list of all connected remotes and their devices in one place. Oh, and a ton of netcode setup which I forgot to post in this devlog, will show it in the next one."}, {"post_id": 18787, "ts": "2026-06-30T00:07:21Z", "hours": 34.5525, "text": "so far so good! I might want to make the Identifier text slightly smaller….. Now onto making “subscriptions” work, couldn’t come up with a better name than this though. It takes me so long to do anything because I constantly have the urge to refactor things, as well as trying to get stuff perfect the first time."}, {"post_id": 7411, "ts": "2026-06-12T10:42:10Z", "hours": 11.1469, "text": "FINALLY HOLY SHIT WHY IS IT SUCH PAIN TO DO ASYNC INIT IN AVALONIA I wouldnt need to do this if the browser wasnt so picky with OPFS and async………. UGH basically now during OnFrameworkInitializationCompleted I just run task in background that calls my async function at end of async function it sets Content of root view to newly created MainViewModel"}, {"post_id": 6029, "ts": "2026-06-10T03:40:35Z", "hours": 2.2417, "text": "Finally getting remotes closer to working Now you can add them from the GUI (but you can’t connect to them yet…)"}, {"post_id": 5432, "ts": "2026-06-09T06:21:20Z", "hours": 0.9203, "text": "didn’t notice at the time but I was writing out the length with the wrong endianness fixed it and now dotnetty doesn’t silently ignore it"}, {"post_id": 5404, "ts": "2026-06-09T04:53:56Z", "hours": 10.0017, "text": "testing the socket, seems like packets aren’t being handled just yet but at least we’re getting somewhere"}]...
|
Title: UniScan by @dexrn | Stardance
Devlogs:
tes Title: UniScan by @dexrn | Stardance
Devlogs:
testing the socket, seems like packets aren’t being handled just yet but at least we’re getting somewhere
didn’t notice at the time but I was writing out the length with the wrong endianness fixed it and now dotnetty doesn’t silently ignore it
Finally getting remotes closer to working Now you can add them from the GUI (but you can’t connect to them yet…)
FINALLY HOLY SHIT WHY IS IT SUCH PAIN TO DO ASYNC INIT IN AVALONIA I wouldnt need to do this if the browser wasnt so picky with OPFS and async………. UGH basically now during OnFrameworkInitializationCompleted I just run task in background that calls my async function at end of async function it sets Content of root view to newly created MainViewModel
so far so good! I might want to make the Identifier text slightly smaller….. Now onto making “subscriptions” work, couldn’t come up with a better name than this though. It takes me so long to do anything because I constantly have the urge to refactor things, as well as trying to get stuff perfect the first time.
Doing better at Avalonia so I was able to fix some issues and make the Home screen actually contain something useful, with this being a list of all connected remotes and their devices in one place. Oh, and a ton of netcode setup which I forgot to post in this devlog, will show it in the next one.
Been working on cleaning up the codebase in preparation for the initial commit. (thanks @CT5 for some of the motivation) https://github.com/UniScanProject/UniScan will be the project’s home. This does NOT mean it is ready to use, it is far from so. However, it means I will be able to publish releases and such, and everyone will be able to read the code. I will also be working on a Module alongside the core project, which acts as a virtual scanner, for testing of course. My next steps will be getting the virtual scanner module good enough to use as testing, then figure out what to do about the UI, as I don’t really want to force modules onto users. My idea here is that we send a UI ‘definition’(?) to the client for it to render, and let modules hook into them. Means we can also have each button call to the server when pressed if it’s meant to perform a server-side action. I am also planning a scope increase to include SDRs and two-way radios in the distant future. Would like y’alls opinions.
UniScan source is now up, you can view it at https://github.com/UniScanProject/UniScan UniScan Client & Server v0.0.2 https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Client.App%2F0.0.2 https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Server.Host%2F0.0.2 Added CI for UniScan.Server.Host UniScan.Client.Core Use DI for PacketRegistry Update RemoteFactory.Create to pass PacketRegistry instance from DI Breaking Changes Updated RemoteServer constructors to take an instance of PacketRegistry Removed InternalUniScanClientPacketConfigurator Packets are now registered from AssembliesPacketSource InternalUniScanClientModule no longer adds an IPacketConfigurator to DI as this class has been removed. UniScan.Network Breaking Changes Renamed ScannerInfoPacket -> ScannerRegistrationPacket The new ID for this packet is UniScan:packet/clientbound/device/registration This fixes a bug where there were two instances of the same packet ID used for different packets in the codebase Removed BuiltinPacketRegistrar Removed IPacketConfigurator Moved PacketRegistry and RegistryPacketAttribute to UniScan.Network.Registry Created IPacketSource and AssembliesPacketSource AssembliesPacketSource collects all classes that inherit IPacket and have the RegistryPacket attribute. Removed the singleton Instance property from PacketRegistry Created PacketRegistry.RegisterFromSource and PacketRegistry.RegisterFromSource<TPacketSource> PacketRegistry.RegisterFromSource takes a given IPacketSource and registers all the packets it provides. PacketRegistry.RegisterFromSource<TPacketSource> creates a new instance of the given TPacketSource type and passes it to PacketRegistry.RegisterFromSource UniScan.Server.Core SubscribePacketHandler now sends the newly renamed ScannerRegistrationPacket Breaking Changes Removed PacketRegistry.RegisterFromSource InternalUniScanServerModule no longer adds an IPacketConfigurator to DI as this class has been removed. Packets are now registered from AssembliesPacketSource UniScan.Server.Host Now creates its own PacketRegistry and passes it to the UniScanServer constructor. UniScan.Tests Now creates its own PacketRegistry and passes it to the ClientSocket constructor.
spun up entire android emulator just to realize it was some debug code I forgot to remove that was causing it to throw and die because afaik currentdirectory is / for android apps? gonna release this and then start working on remote adding from UI I think
Working on a virtual scanner module to help development by simulating a scanner, hope to have it ready by tomorrow. This also means any future contributors will be able to start contributing even if they do not own a scanner!
Not fully happy with the manner in which this works, but the virtual scanner does work! Will publish some if not all of it tonight, but no version tag for this yet until I fix my refactoring.
Didn’t get to release last night, as a new bug popped up. 11>MessagePack.GeneratedMessagePackResolver.g.cs(74,74): Error CS0426 : The type name 'Shiki' does not exist in the type 'GeneratedMessagePackResolver'11>------- Finished building project: UniScan.Network. Succeeded: False. Errors: 1. Was able to fix it with some property in the AssemblyInfo. (see: github.com/MessagePack-CSharp/MessagePack-CSharp/issues/2133) I changed the Identifier to be a Slug instead for the devices. Working on browser stuff real quick and will commit sometime soon.
Waiting on a bug to be fixed in SpawnJS.WebWorkers and then hopefully next update will include web support + a website for y’all to test the client!!! Couldn’t do much today since I was so busy, however since I’m home now I can work on UniScan at a better time than 12 in the morning.
Using this time to test out M3 web (even though it’s in maintenance mode) This is just for the loading screen while it downloads all the WASMs. The cell tower is temporary until I can either make my own logo or find someone who will make one for me.
I think this looks pretty good for a little loading screen. I’ll probably add a try/catch if possible and show an error dialog when some fatal exception is thrown… The “Loading…” text is temporary and is done in Avalonia, will make a proper loading screen there sometime later.
OK I GOT IT SOMEWHAT WORKING IN BROWSER FINALLY still need to keep implementing OPFS stuff though. serilog 01:32:29 [ERR | UniScan.Client.Core.Config.Remote.RemotesListFile] Failed to save remotes to remotes.json System.Exception: Entry not found at SpawnDev.SpawnJS.SpawnJSRuntime.<_InteropCallApplyAsync>d__132`1[[SpawnDev.SpawnJS.JSObjects.FileSystemSyncAccessHandle, SpawnDev.SpawnJS, Version=2.1.8.0, Culture=neutral, PublicKeyToken=null]].MoveNext()
FINALLY I GOT OPFS WORKING GG
UniScan now works in browser! I’ve also added a nice crash handler since unhandled exceptions act weird in the browser. Just polishing up now, will commit and set up Actions to host this. Once it’s up, the link will be https://uniscan.dexrn.me (The crash shown in the video is a real issue and will be fixed later.)
Alright I’ve committed and now you can access UniScan through https://uniscan.dexrn.me Note that since this is still an early version, you can’t really do much. You can also install it as a PWA on iOS, Android, and most desktop browsers. (pictured is UniScan as a PWA in ungoogled-chromium) Hopefully tomorrow I will fix the crash with adding remotes by making some sort of map of connection type -> UI widget to define the settings for them. (meant to post this yesterday, but GH was still working on some cert garbage)
Much nicer loading screen
FINALLY I GOT IT DONE IM SO TIRED New loading screen!!!! And OPFS file handles are now keyed by int im going to sleep now https://uniscan.dexrn.me
working on fixing the fact that you can’t really make remotes
Just released a new version, now you can make remotes from the UI finally. Here’s a video showing the creation flow. Note that the list is dynamic based on classes implementing IConnectionMethodFactoryViewModel with attribute ConnectionMethodFactoryViewModelAttribute
Working on dropping display names from client remotes As well as some refactor of the connection flow using my new TaskPipeline Once this is done, the server will be able to send branding, announcements, and other useful information on connect for the client to display!
Remotes are now stored per file instead of all inside one file. Additionally, server info is now properly cached! I had to rewrite most of the remote initialization flow, but now it’s much better. Adding and removing remotes automatically saves to disk because I can observe the list. This isn’t the end of this overhaul, but we’re getting closer… I think I want to refactor more of UniScanClient next. This is happening on another branch: https://github.com/UniScanProject/UniScan/tree/feat/use_server_provided_display_names After this branch is merged into main, I will make the available server info also show since we have the entire RemoteInfo being sent, which includes announcements, a description, a logo, etc.
Need opinions on this UI The server logo now shows where possible, so on the home view and in the sidebar In the remote view, there is a top ‘window’(?) that holds (from top to bottom): logo (to the side: title, description), server links and then the bottom floating window thing holds the server MOTD I still need to find a place to hold the server announcements… Alongside this were a ton of internal refactors, and the subscribe button now works (but the server still won’t properly send the current state) Been trying to post this since yesterday (I re-recorded the video today), but Hackatime has been down.
Here’s the announcements UI, I think I’m almost done on this branch and then I’ll continue on main.
I think this looks pretty nice apparently Avalonia has some nuget package that adds ItemsRepeater which does what I was originally trying to do in a cleaner way
UniScan Client v0.1.0, UniScan Server (Host) v0.1.1 Lots of changes, most of them are backend changes, but there are also a handful of frontend changes too! https://github.com/UniScanProject/UniScan/releases/tag/UniScan.Client.App%2F0.1.0 Remotes are now stored per file instead of one large file, and the UI has been neatened up. The server now sends metadata containing a logo, various information, an MOTD, links, etc. The UI has been updated to display this information too. There are more changes than this, but there are too many to list here without hitting the 4000 char limit. Attached is a small video showing some of the new UI stuffs. By no means is it bug free, but the PR reached a point where it could be merged to allow for other important tasks to be focused on (like y’know, showing the actual scanner info)
Started working on state sync, will continue tomorrow probably States are synced now but I need to think about how to deal with scanner groups and channels and such because there are different types of channels (such as P25, conventional, etc) among other type issues and I want to reduce the need for any modules on the client if I can.
A friend of mine was able to test it on iOS, we got it working. Gonna have them send in the PR later and set up CI for it.
I FINALLY GOT SSR WORKING MY GOD still too primitive to do anything atm, working on it.
The client can now disconnect itself, and more styling has been added to the SSR UI (shown here is a Container which is centered and has a slight margin) tomorrow will be some more work on the SSR UI and then finally getting the scanner state to show on the client. I’m not too pleased with the idea that the server may change the look of the device pages on the clients, though… I still feel like there could be some better way to go about this.
While I didn’t get to scanner state displaying yet, I did refactor the classes that handle how remotes connect, disconnect, etc so that it’s not spread around the codebase. This fixes a few bugs related to state management due to how originally these viewmodels were constructed separately of eachother. Tomorrow I will be gone for a few hrs but should be back soon enough to hopefully make some more refactors and/or start on the remote display. Pictured is the new disconnect button in the remote on the sidebar
Sorry, haven’t been super active due to life. Fixed a few bugs in the meantime and implemented most of the SSR binding stuff, but it’s far from finished, hell I haven’t even gotten to test it yet. Will be gone for a bit tomorrow, and the next day I will be at a different house for a few days albeit with my computer.
Went on a small side-tangent. Icons! (dw still working on the SSR device stuff)
IT FINALLY WORKS The UI shit I built on the server now syncs to the client correctly, and the flow isn’t actually too bad! Although this will be improved by also having a registry…registry…(yeah I know it’s weird) on the client so that UI elements can have values bind to them, and all the server has to do is send the client data to those registries
And now we can finally start seeing the fruits of our labor
Okayyy so I was able to actually completely gut DeviceState and now it’s actually just a class which is also used to serialize individual states. This also means I can nuke reflection from the serialization process since I can just make IDeviceState forced to inherit IStateSerializer which will be much more dynamic!!! This means literally any states can be sent to the client and as long as the server or the module has the UI to render the states, it will work. This also allows states to be diffed and only the changed parts to be sent Second screenshot shows the UI sent by the server, note that the Volume: 0 is actually all being handled on the client via binding strings (where the server only sends the client the device states and the binding strings will look up those states itself)
Here’s a showcase of my Uniden SDS100 scanning, with UniScan showing the details in real time! I programmed in some garbage test channels so you won’t see any channels talking in this video. Everything shown here is sent by the server and updated by the server… Still somewhat far from complete as I have to figure out more stuff (mainly more stuff for the client to deal with, like hiding state display textblock on null bindings and more UI features/styling).
For funzies, here’s the dev build running inside a rooted Oculus Quest 2 (thanks to my friend for testing this) This is also a good test of the netcode over a long distance (they’re in Malaysia while I’m in the US) Getting close to committing this all alongside Shiki and such… Long cleanup process.
getting yelled at by starpheus because I haven’t made devlog yet spent all nighter last night refactoring shiki’s modulemanagement project and then today I refactored lots of shiki’s taskpipeline project, as well as some work being done on Shiki’s Result and family (shiki is the side project library with most of it’s code originating from UniScan, and UniScan heavily depends on it) Now the browser initialization is much cleaner (but not perfect of course) (first screenshot is new, second is old) Removed HostEnvironment because we usually only grab the parts from DI anyway
Have been working on more Shiki refactors and a nice language system for servers in UniScan to provide language strings without being able to overwrite client language strings Reworked most of the TaskPipelineBuilder with many more accepting delegate types and have done some cleanup since Tomorrow I will finish up releasing the next Shiki version and then I think I will be able to release the next UniScan commit and then keep working for an alpha release.
Finally committed the latest Shiki changes, will release UniScan’s next commit tomorrow.
New logo! (credits at end) I intend to make the logo customizable by allowing you to change the color of various elements, and choose between different logos (since no other software ive seen does this) Maybe even change the color of the scanner display when someone is talking even… Thanks to Unomelon for the base, which I used to draw the scanner. Check out Unomelon here: https://bsky.app/profile/unomelon.bsky.social , and his very cool game Allumeria here: https://allumeria.com/ (wasnt asked to add this but I think the game is really cool and am somewhat active in the community)
Working on settings…! After this there will be configuration on the serverside and then after that, audio streaming!
Coming in the next full update will also be UI modes This is so that the UI is optimized for every device and their input methods This is the Mobile one, and the main page will (when its finished) have all remotes including non-connected ones and a button to add more remotes and such....
|
1792785158.047574
|
1793389958.047574
|
|
66734
|
GothOS by @ojasthakur | Stardance
|
ojasthakur
|
2
|
33.0
|
33
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T18:06:48Z", "hours": 2.0, "multiplier": 15.47, "payout": 33, "blessing": "neutral", "text": "Since the last ship for WebOS1. I had already added alotta features which seemed like an overkill for the last one. This time, I’ve added 3 small features and a few bug fixes for WebOS2. Cursor following Bat-pet A better welcome page with animated text saying “Goth”. To-Do list.", "repo": "https://github.com/OjasQwQ/GothOS", "demo": "https://ojasqwq.github.io/GothOS/"}, {"ship_num": 2, "ts": "2026-10-12T10:54:25Z", "hours": 31.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I’ve made a Goth/Alt themed WebOS. I’ve made this because I’m fond of Rock Music and I really resonate with Goth Subculture. It has the following features:- Notes/Journal App Vinyl themed music player. A basic calculator “Now Playing” flyer. Music visualiser which reacts to the vinyl player. Google Search Bar with typewriting animation.", "repo": "https://github.com/OjasQwQ/GothOS", "demo": "https://ojasqwq.github.io/GothOS/"}]...
|
[{"post_id": 81209, "ts": "202 [{"post_id": 81209, "ts": "2026-10-20T09:24:25Z", "hours": 1.0547, "text": "Changed the unclean gif with a looping mp4 typewriter animated effect on the word “Goth”. Changed the position of the nametag and and added the click event to change webpages on the whole screen. The design looks way better and clean now."}, {"post_id": 81196, "ts": "2026-10-20T08:01:47Z", "hours": 1.0583, "text": "I just created this bat pet which follows the mouse cursor on the OS page. The bat image is an SVG and and the wings on the back are animated. Its able to flip to the right before catching up to the cursor when the its is dragged fast across the screen"}, {"post_id": 79004, "ts": "2026-10-12T09:48:17Z", "hours": 0.5125, "text": "I’ve fixed the majority of the bugs related to the calculator and the music visualiser. LETS SHIP THE PROJECT GNG!"}, {"post_id": 78992, "ts": "2026-10-12T08:48:57Z", "hours": 3.0678, "text": "Added a calculator to the OS but its really buggy rn. All the buttons are concentrated in the bottom right lol. I’ll fix this soon. I added a music visualiser aswell which reacts the the music from the media player in the OS."}, {"post_id": 78734, "ts": "2026-10-11T13:06:11Z", "hours": 4.1992, "text": "I just gave the search-bar a typewriter animation, made the header for music-window transparent, customized the taskbar and made it sleeker, changed all png logos to svgs, bug fixes related to screen initialisation. I also gave it a new feature of a “Now Playing” popup/flyer upon changing/starting the tracks."}, {"post_id": 78134, "ts": "2026-10-09T18:00:54Z", "hours": 4.4858, "text": "Ok so I’m pivoting the whole idea into a Goth/Alt theme and hence changed the named to GothOS. I’ve updated the homepage. The vinyl player works better and is more scalable now. I’ll be adding more songs to it. I’m thinking of adding a “Music Playing” flyout on the top left of the OS screen the music is changed."}, {"post_id": 77261, "ts": "2026-10-06T10:20:43Z", "hours": 1.38, "text": "Made this Vinyl player which plays My Own Summer (for now) for my webOS. I made this on css mainly and used js to make this functional. The disk rotates aswell as the tone-arm when a song is played. The slider is to adjust the volume."}, {"post_id": 76819, "ts": "2026-10-04T18:17:57Z", "hours": 3.5981, "text": "I’ve been looking for a better wallpaper but couldn’t find much :( Added those two “see this Angel?” images for I-don’t-know-why but I thought that maybe we can make them clickable and they change their position to a random location on the screen lol. Google searchbar works and Css patches."}, {"post_id": 76598, "ts": "2026-10-04T03:54:31Z", "hours": 3.3169, "text": "So the notes application’s functionality is nearly complete! (The design part is not). I also implemented a way to make change the index of windows upon click to bring them to the foreground. Icons on the taskbar become smaller when selected and comes back to their original size when exiting the window or selecting another window/icon."}, {"post_id": 76393, "ts": "2026-10-03T12:06:47Z", "hours": 4.3689, "text": "Started working on the first app- Notes 1.Implemented a draggable notes window with open/close functionality (guitar logo for now). 2.Updated taskbar logo with an ID for click animation. 3.Improved CSS styles and alignments for taskbar, logos, and notes window. [removed the space bw the logos and the taskbar boundary which was bothering me]"}, {"post_id": 75913, "ts": "2026-10-01T16:14:54Z", "hours": 1.7258, "text": "I made another page for the OS and connected it with the welcome screen. I decided to keep the tab on the bottom where I’ll find better icons to put thing. Can someone suggest me a better wallpaper? It needs alotta work. I made my nametag on the initial welcome screen movable while I was trying it out lol."}, {"post_id": 75667, "ts": "2026-09-30T17:58:27Z", "hours": 2.4381, "text": "Checked off quite a few things off my To-Do list. Hosted the pages, corrected allignments, dragable elements, added a README. Looked dope on my phone."}, {"post_id": 75512, "ts": "2026-09-30T10:21:30Z", "hours": 1.9194, "text": "I’ve just started to work on “RockOS” for all the music nerds out there! Lets see where this project takes me."}]...
|
Title: GothOS by @ojasthakur | Stardance
Devlogs: Title: GothOS by @ojasthakur | Stardance
Devlogs:
I’ve just started to work on “RockOS” for all the music nerds out there! Lets see where this project takes me.
Checked off quite a few things off my To-Do list. Hosted the pages, corrected allignments, dragable elements, added a README. Looked dope on my phone.
I made another page for the OS and connected it with the welcome screen. I decided to keep the tab on the bottom where I’ll find better icons to put thing. Can someone suggest me a better wallpaper? It needs alotta work. I made my nametag on the initial welcome screen movable while I was trying it out lol.
Started working on the first app- Notes 1.Implemented a draggable notes window with open/close functionality (guitar logo for now). 2.Updated taskbar logo with an ID for click animation. 3.Improved CSS styles and alignments for taskbar, logos, and notes window. [removed the space bw the logos and the taskbar boundary which was bothering me]
So the notes application’s functionality is nearly complete! (The design part is not). I also implemented a way to make change the index of windows upon click to bring them to the foreground. Icons on the taskbar become smaller when selected and comes back to their original size when exiting the window or selecting another window/icon.
I’ve been looking for a better wallpaper but couldn’t find much :( Added those two “see this Angel?” images for I-don’t-know-why but I thought that maybe we can make them clickable and they change their position to a random location on the screen lol. Google searchbar works and Css patches.
Made this Vinyl player which plays My Own Summer (for now) for my webOS. I made this on css mainly and used js to make this functional. The disk rotates aswell as the tone-arm when a song is played. The slider is to adjust the volume.
Ok so I’m pivoting the whole idea into a Goth/Alt theme and hence changed the named to GothOS. I’ve updated the homepage. The vinyl player works better and is more scalable now. I’ll be adding more songs to it. I’m thinking of adding a “Music Playing” flyout on the top left of the OS screen the music is changed.
I just gave the search-bar a typewriter animation, made the header for music-window transparent, customized the taskbar and made it sleeker, changed all png logos to svgs, bug fixes related to screen initialisation. I also gave it a new feature of a “Now Playing” popup/flyer upon changing/starting the tracks.
Added a calculator to the OS but its really buggy rn. All the buttons are concentrated in the bottom right lol. I’ll fix this soon. I added a music visualiser aswell which reacts the the music from the media player in the OS.
I’ve fixed the majority of the bugs related to the calculator and the music visualiser. LETS SHIP THE PROJECT GNG!
I just created this bat pet which follows the mouse cursor on the OS page. The bat image is an SVG and and the wings on the back are animated. Its able to flip to the right before catching up to the cursor when the its is dragged fast across the screen
Changed the unclean gif with a looping mp4 typewriter animated effect on the word “Goth”. Changed the position of the nametag and and added the click event to change webpages on the whole screen. The design looks way better and clean now.
Ships:
I’ve made a Goth/Alt themed WebOS. I’ve made this because I’m fond of Rock Music and I really resonate with Goth Subculture. It has the following features:- Notes/Journal App Vinyl themed music player. A basic calculator “Now Playing” flyer. Music visualiser which reacts to the vinyl player. Google Search Bar with typewriting animation.
Since the last ship for WebOS1. I had already added alotta features which seemed like an overkill for the last one. This time, I’ve added 3 small features and a few bug fixes for WebOS2. Cursor following Bat-pet A better welcome page with animated text saying “Goth”. To-Do list....
|
1793062216.2691016
|
1793148616.2691016
|
|
70524
|
hackpad by @aagam3023 | Stardance
|
aagam3023
|
0
|
2.52
|
0
|
[]
|
[{"post_id": 81211, "ts": "202 [{"post_id": 81211, "ts": "2026-10-20T09:51:27Z", "hours": 2.5186, "text": "Today, I worked on my Hackpad project by designing the enclosure in Onshape. I added the USB port opening and internal mounting points, and exported the 3D model as a STEP file. I also uploaded the CAD file to GitHub so my design is easy to access and review. Next, I’ll refine the enclosure and check that the PCB and components fit properly inside the case."}]...
|
Title: hackpad by @aagam3023 | Stardance
Devlogs: Title: hackpad by @aagam3023 | Stardance
Devlogs:
Today, I worked on my Hackpad project by designing the enclosure in Onshape. I added the USB port opening and internal mounting points, and exported the 3D model as a STEP file. I also uploaded the CAD file to GitHub so my design is easy to access and review. Next, I’ll refine the enclosure and check that the PCB and components fit properly inside the case....
|
1793033563.4704273
|
1793638363.4704273
|
|
63792
|
PrepBS by @Labrez | Stardance
|
Labrez
|
1
|
42.09
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-02T07:38:40Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I am building a web app PrepBS, a dashboard to make a record of your study. If we take examples, if you are preparing for an Olympiad, while you are onboarding you can fill in the details regarding your exam, the date of the exams, your targeted study time, daily study time, and things more like that. When you fill that while onboarding, according to that data a specialized personalized dashboard has been created. You can use that dashboard as the main feature. The core feature of the dashboard is the focus sessions. In that there are three modes: Pomodoro, focus, and deep focus, and in each you have different timers. You can start your session and after that session is over, an automatic break timer is set up. After that is over you can start your session again and continue your preparation. It helps to manage your time and preparation and you can also see your records of how many study sessions you’ve had. If you select a targeted study time, like 3 hours, as the sessions are over, your target bar is also increasing. When you reach 3 hours you can see on the dashboard that your study target is completed. Add more cool features to my project and I’m proud of it. It is my first full-stack project and I deployed the frontend on Vercel and my backend on Render. Using Render is a new thing and I am also proud of it as it is the first time I have built and deployed my project. Very enthusiastic things happen to me.", "repo": "https://github.com/Labrez-2010/PrepBS", "demo": "https://prep-bs.vercel.app"}]...
|
[{"post_id": 81216, "ts": "202 [{"post_id": 81216, "ts": "2026-10-20T10:26:01Z", "hours": 3.7881, "text": "After a long time finally, my new theme is completed. I don’t know why I made the mistake in just a simple language, CSS. Even though I write the maximum code by myself, still for the responsiveness of the website I use ChatGPT. That’s the part I need to work on by myself. That project also helped me to know my skills and where I am lagging behind. now i only need to update Readme then i ready to ship….."}, {"post_id": 80450, "ts": "2026-10-17T17:37:52Z", "hours": 10.35, "text": "finally i completed my all pages now only dashboard is left that i do then newlook of PrepBS is ready"}, {"post_id": 79064, "ts": "2026-10-12T15:26:38Z", "hours": 8.4353, "text": "i successfully build my register ( create account) page and first page of onboarding ..in which i have a botton for lets starting ( basucally it is asking are you ready) and i feeling i am thinking about i taking too much time for writing css because i am slowly-slowly writes my css and i try to write faster for my upcoming pages …."}, {"post_id": 77043, "ts": "2026-10-05T13:57:09Z", "hours": 5.5206, "text": "Here is a new look of PrepBS. It gives a very nice vibe and also I changed the CSS code and I wrote it by myself. Then I observed one thing: my website is not responsive. What I did was I copied all the code and tried to set it to be responsive, the smallest one. i only said to ChatGPT than in code ChatGPT add limits are between my page load cards and all the components load, then my website is also built to be responsive. Now that’s the look of my login page."}, {"post_id": 76061, "ts": "2026-10-02T07:14:12Z", "hours": 0.6733, "text": "I’m ready my project for development. I changed the Some code Create .env and more….., and then I deployed my backend on Render and my frontend on the Vercel and I connected both of them. First time i deploying my project. I took help from ChatGPT to know how to implement the command. I need to run the command npm run build and do more thing then my web App go live on internet"}, {"post_id": 75960, "ts": "2026-10-01T18:56:57Z", "hours": 7.7631, "text": "i completed my MVP , i build complete my webapp in MERN stack and i am confuse abour whether i add more features or deploy i buided a complete AUTH aspect to my add connected to real time Database , build all pages and component , debug all needed Api and check their functionality …and more ……."}, {"post_id": 74927, "ts": "2026-09-28T16:38:11Z", "hours": 1.2411, "text": "Yahhh.. Today i complete my auth pages and System in which user can create profile and login if they already have a account . Next i do … work on onboarding page and dashboard ……."}, {"post_id": 74550, "ts": "2026-09-27T16:47:52Z", "hours": 3.8144, "text": "Today I completed my authentication system, in which I created the registration and login page i also created the frontend of Login Page, I need to connected the frontend to the backend through and APIs and then… I built 70% of the authentication system of my app."}, {"post_id": 70986, "ts": "2026-09-20T05:01:39Z", "hours": 0.4897, "text": "I am building PrepBS , A smart study management platform …. i spent some time a create a basic server …then i will start programming for my real WEBAPP"}]...
|
Title: PrepBS by @Labrez | Stardance
Devlogs:
I a Title: PrepBS by @Labrez | Stardance
Devlogs:
I am building PrepBS , A smart study management platform …. i spent some time a create a basic server …then i will start programming for my real WEBAPP
Today I completed my authentication system, in which I created the registration and login page i also created the frontend of Login Page, I need to connected the frontend to the backend through and APIs and then… I built 70% of the authentication system of my app.
Yahhh.. Today i complete my auth pages and System in which user can create profile and login if they already have a account . Next i do … work on onboarding page and dashboard …….
i completed my MVP , i build complete my webapp in MERN stack and i am confuse abour whether i add more features or deploy i buided a complete AUTH aspect to my add connected to real time Database , build all pages and component , debug all needed Api and check their functionality …and more …….
I’m ready my project for development. I changed the Some code Create .env and more….., and then I deployed my backend on Render and my frontend on the Vercel and I connected both of them. First time i deploying my project. I took help from ChatGPT to know how to implement the command. I need to run the command npm run build and do more thing then my web App go live on internet
Here is a new look of PrepBS. It gives a very nice vibe and also I changed the CSS code and I wrote it by myself. Then I observed one thing: my website is not responsive. What I did was I copied all the code and tried to set it to be responsive, the smallest one. i only said to ChatGPT than in code ChatGPT add limits are between my page load cards and all the components load, then my website is also built to be responsive. Now that’s the look of my login page.
i successfully build my register ( create account) page and first page of onboarding ..in which i have a botton for lets starting ( basucally it is asking are you ready) and i feeling i am thinking about i taking too much time for writing css because i am slowly-slowly writes my css and i try to write faster for my upcoming pages ….
finally i completed my all pages now only dashboard is left that i do then newlook of PrepBS is ready
After a long time finally, my new theme is completed. I don’t know why I made the mistake in just a simple language, CSS. Even though I write the maximum code by myself, still for the responsiveness of the website I use ChatGPT. That’s the part I need to work on by myself. That project also helped me to know my skills and where I am lagging behind. now i only need to update Readme then i ready to ship…..
Ships:
I am building a web app PrepBS, a dashboard to make a record of your study. If we take examples, if you are preparing for an Olympiad, while you are onboarding you can fill in the details regarding your exam, the date of the exams, your targeted study time, daily study time, and things more like that. When you fill that while onboarding, according to that data a specialized personalized dashboard has been created. You can use that dashboard as the main feature. The core feature of the dashboard is the focus sessions. In that there are three modes: Pomodoro, focus, and deep focus, and in each you have different timers. You can start your session and after that session is over, an automatic break timer is set up. After that is over you can start your session again and continue your preparation. It helps to manage your time and preparation and you can also see your records of how many study sessions you’ve had. If you select a targeted study time, like 3 hours, as the sessions are over, your target bar is also increasing. When you reach 3 hours you can see on the dashboard that your study target is completed. Add more cool features to my project and I’m proud of it. It is my first full-stack project and I deployed the frontend on Vercel and my backend on Render. Using Render is a new thing and I am also proud of it as it is the first time I have built and deployed my project. Very enthusiastic things happen to me....
|
1793058819.297758
|
1793145219.297758
|
|
54623
|
My_TechPad by @MoonRock | Stardance
|
MoonRock
|
0
|
14.66
|
0
|
[]
|
[{"post_id": 81220, "ts": "202 [{"post_id": 81220, "ts": "2026-10-20T10:49:46Z", "hours": 4.3033, "text": "Devlog #5: Final development update before I submit my project for review. I coded nonstop for four hours and have finally finished the firmware. I also organized everything, and it’s now ready for submission."}, {"post_id": 81100, "ts": "2026-10-19T21:22:20Z", "hours": 3.4397, "text": "devlog #4 :: completed cad desiging, and half bit work regarding firmware"}, {"post_id": 80758, "ts": "2026-10-18T18:25:05Z", "hours": 4.1617, "text": "devlog#3: Finalyy completed the entire pcb circuit. quite a feat. Will be starting main design from tommorrow"}, {"post_id": 80340, "ts": "2026-10-17T10:08:47Z", "hours": 0.4833, "text": "devlog#2: finally started with the schematic design for my Techpad.Built the switch matrix and figured out some stuff.(Nothing beats google)"}, {"post_id": 80213, "ts": "2026-10-16T19:21:16Z", "hours": 2.2769, "text": "devlog1:: Gathered my thoughts and began working on my new project. I read the complete guide, defined a clear goal and design, installed everything I needed, and started building the PCB."}]...
|
Title: My_TechPad by @MoonRock | Stardance
Devlog Title: My_TechPad by @MoonRock | Stardance
Devlogs:
devlog1:: Gathered my thoughts and began working on my new project. I read the complete guide, defined a clear goal and design, installed everything I needed, and started building the PCB.
devlog#2: finally started with the schematic design for my Techpad.Built the switch matrix and figured out some stuff.(Nothing beats google)
devlog#3: Finalyy completed the entire pcb circuit. quite a feat. Will be starting main design from tommorrow
devlog #4 :: completed cad desiging, and half bit work regarding firmware
Devlog #5: Final development update before I submit my project for review. I coded nonstop for four hours and have finally finished the firmware. I also organized everything, and it’s now ready for submission....
|
1792799233.1845396
|
1793404033.1845396
|
|
70457
|
OneManOrchestra by @Altaaf | Stardance
|
Altaaf
|
1
|
3.93
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-19T17:29:34Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is a hand gesture controlled synth, i an highkey into music and play a ukulele (coz i dont have a guitar), i saw exactly this on instagram once and never saw it again so i made it, turns out it was a very well documented project. I learnt a lot of things, like Opencv, this was my first time working with it and got me to learn a good load of stuff about it. IMPORTANT: Since this is a python script , i couldnt release it on github releases as it just wont support it, TO TEST IT PLEASE FOLLOW THE SETUP MENTIONED IN THE README, its very small process less than 5 minutes. Thank you", "repo": "https://github.com/MohdAltaaf/HandGestureMusic", "demo": "https://github.com/MohdAltaaf/HandGestureMusic/blob/main/main.py"}]...
|
[{"post_id": 81223, "ts": "202 [{"post_id": 81223, "ts": "2026-10-20T10:52:56Z", "hours": 0.9319, "text": "AND NOW ITS ON THE WEB!! https://mohdaltaaf.github.io/HandGestureMusic/ Wrote the HTML code for it to work on a browser, the whole process was just translating python to HTML so it was nothing new, but i must say one thing that i did not expect was that i thought the browser version would be less responsive. But to my surprise its so much better!! its very responsive and i would say that the hand tracking is better as well! The UI kinda sucks but ig the next update will be better UI."}, {"post_id": 81038, "ts": "2026-10-19T17:15:07Z", "hours": 3.3306, "text": "Hand Gesture Synth Play Music without touching any instrument!! Just make some hand signs and this program does the rest. Each handsign plays a note or a chord! How to Use: There are three different modes: Notes Chords InKey Going over them one by one: Notes Mode: Your right hands plays the 7 base notes while the left hand controls which octave will those notes be played in, so it is basically a piano wihtout the sharp and flat keys! Chords Mode: Your right hand determines the key and your left hand determines the scale of the chord to be played, Very fun to use to sing along the song of your liking, all chords are easy to play just need a teensy tiny bit of memorizing. Use W/S to increase/decrease the octave. InKey Mode: Your left hand determines the octave a note should be played in, while your right hand determines the note that should be played, but the difference from the first mode is that you can select a key to play in using j/k to cycle through them. Any handsign you produce a note that sounds coherent, nothing sounds off, so its good for beginners in music to play around with coz it almost always sounds pleasant. Handsigns: All signs for entries left to right wil go like: Sign Right hand (root) Left hand (chord type) Index C Major Index + middle D Minor Three fingers E 7 Four fingers F 5 Open hand G dim Thumb only A dim7 Thumb + index B aug Thumb + index + middle C# sus2 Thumb + three fingers D# sus4 Pinky only F# maj7 Thumb + pinky G# m7 Index + pinky A# 7sus4 Controls Key Action M or 1 / 2 / 3 Switch mode J / K Previous / next key (Key mode) T Major / minor (Key mode) W / S Octave up / down (Chords mode) Esc Quit Setup (Windows) Install Python 3.12 and tick “Add python.exe to PATH”. In a terminal inside the project folder: python -m venv venv venv\\Scripts\\activate pip install -r requirements.txt python main.py Sound comes from the Microsoft GS Wavetable Synth built into Windows. Credits Built with OpenCV, MediaPipe, and mido and lots of love lol. Made by Mohd Altaaf"}]...
|
Title: OneManOrchestra by @Altaaf | Stardance
Dev Title: OneManOrchestra by @Altaaf | Stardance
Devlogs:
Hand Gesture Synth Play Music without touching any instrument!! Just make some hand signs and this program does the rest. Each handsign plays a note or a chord! How to Use: There are three different modes: Notes Chords InKey Going over them one by one: Notes Mode: Your right hands plays the 7 base notes while the left hand controls which octave will those notes be played in, so it is basically a piano wihtout the sharp and flat keys! Chords Mode: Your right hand determines the key and your left hand determines the scale of the chord to be played, Very fun to use to sing along the song of your liking, all chords are easy to play just need a teensy tiny bit of memorizing. Use W/S to increase/decrease the octave. InKey Mode: Your left hand determines the octave a note should be played in, while your right hand determines the note that should be played, but the difference from the first mode is that you can select a key to play in using j/k to cycle through them. Any handsign you produce a note that sounds coherent, nothing sounds off, so its good for beginners in music to play around with coz it almost always sounds pleasant. Handsigns: All signs for entries left to right wil go like: Sign Right hand (root) Left hand (chord type) Index C Major Index + middle D Minor Three fingers E 7 Four fingers F 5 Open hand G dim Thumb only A dim7 Thumb + index B aug Thumb + index + middle C# sus2 Thumb + three fingers D# sus4 Pinky only F# maj7 Thumb + pinky G# m7 Index + pinky A# 7sus4 Controls Key Action M or 1 / 2 / 3 Switch mode J / K Previous / next key (Key mode) T Major / minor (Key mode) W / S Octave up / down (Chords mode) Esc Quit Setup (Windows) Install Python 3.12 and tick “Add python.exe to PATH”. In a terminal inside the project folder: python -m venv venv venv\Scripts\activate pip install -r requirements.txt python main.py Sound comes from the Microsoft GS Wavetable Synth built into Windows. Credits Built with OpenCV, MediaPipe, and mido and lots of love lol. Made by Mohd Altaaf
AND NOW ITS ON THE WEB!! https://mohdaltaaf.github.io/HandGestureMusic/ Wrote the HTML code for it to work on a browser, the whole process was just translating python to HTML so it was nothing new, but i must say one thing that i did not expect was that i thought the browser version would be less responsive. But to my surprise its so much better!! its very responsive and i would say that the hand tracking is better as well! The UI kinda sucks but ig the next update will be better UI.
Ships:
This is a hand gesture controlled synth, i an highkey into music and play a ukulele (coz i dont have a guitar), i saw exactly this on instagram once and never saw it again so i made it, turns out it was a very well documented project. I learnt a lot of things, like Opencv, this was my first time working with it and got me to learn a good load of stuff about it. IMPORTANT: Since this is a python script , i couldnt release it on github releases as it just wont support it, TO TEST IT PLEASE FOLLOW THE SETUP MENTIONED IN THE README, its very small process less than 5 minutes. Thank you...
|
1793008469.8120713
|
1793094869.8120713
|
|
19230
|
20% Cooler KEYBOARD by @matthewwong12 | Stardance
|
matthewwong12
|
0
|
63.9
|
0
|
[]
|
[{"post_id": 81226, "ts": "202 [{"post_id": 81226, "ts": "2026-10-20T11:14:38Z", "hours": 1.9336, "text": "what’s up Everypony this is the last devblog im posting before i ship my project for funding. during this time period , i made some finishing touches to the Case , prep it for production and i am just writing and updating my repo constantly. anyway i think i done with this project for now gotta work on my website fr fr it’s also exam season now for me, so there might be less frequent update enjoy this assembly animation i made :)"}, {"post_id": 79099, "ts": "2026-10-12T17:35:09Z", "hours": 7.5019, "text": "howdy pony ! this is it im done with my case this is it we’re done with the designing phase , things i did: changed the 3d model of the pi pico with a usb c cut out the upper case heatset insert hole cut out space for the screw head sticking out at the plate cut out the usb-c charger hole rounded the case edges oooo idk if u notice but there’s a big hole on top of pico and that’s there on purpose so i can add a clear acrylic plate there. oh yeah and the text there also have space below to insert some light dispersing material. tomorrow is repo day people im going go over yer tutorial now once you finish your pcb and it all checks out , now it’s time to create an enclosure for it . first export the stp file from kicad(there’s an option for you to export the silkscreen). then go to your software and import your stp file into your cad software.when i did this process i did encounter an issue where the stp file fail to translate(FUSION) so big L but there’s a work around. first i go to onshape and import and translate the file there. then we export the file that is just translated by onshape into fusion and voila success there’s many type of different design and mounting style to choose from and of course the more fancy you want it the harder it gets (to model :P ) i used the bottom mount layout , it’s sort of a balanced options out of all the style . but hey what matters is personal preference do you like it thocky or creamy or clicky ? so choose what you want. either way i don’t really have much advice for this. much of it drawing sketch and basic math . it’s not hard and not easy, there’s definitely a learning curve and there will be a lot of failing before something stuck. fact btw when i was pushing to finish this keyboard for keeb i sat down for almost 6 hour and i felt like the ash baby afterwards (ps i didn’t make it). so trial and error buddy when you fall seven times, you stand up eight !!!"}, {"post_id": 77908, "ts": "2026-10-08T18:46:17Z", "hours": 10.4783, "text": "wassup Every Pony it’s me again with another devblog now the schematics is out the way, it’s time to move on to the actual PCB , this by far the longest process for me, you have take lots of things into consideration. when you first open the PCB editor , the first thing you do is import the parts you place in your schematics (there’s a button for that) then you would wanna go back to Keyboard layout editor to download the JSON File of your layout , then go back to kicad and open the plugin manager then download keyboard layout placer. you then go back to the pcb editor and open the plugin , there you will be able to insert your JSON file then the plugin will do the placing for you how cool is that ? there also an option to add more parts to be auto place. when you finish that you would need to draw out your pcb board edge with that we first select the edge cut layer then select whether the draw line tool or rectangles tool, left click and drag then voila you define your pcb borders. FOR RGB LED and HOT SWAP sockets you need to flip those to backside of the board for them to work. you also need the 5v trace to be thicker, how thick ? there’s a tool for that (PCB Trace width calculator) , a standard usb 3.0 output 0.9amps at 5v while usb 2.0 outputs 0.5 amps at 5v, check your usb port before deciding. now here comes the actual complicated part , routing it all together in a basic pcb you have two layer the front and back , so you have two layers to work with, you route wire by pressing x , to switch to the backside press v note v is also use to place vias vias are like channel that connect the front trace to back trace and it works the other way around. utilize them to the fullest extend . placing ground plane adding a ground plane is quick and easy press the draw filled zones ,select which layers have the most or both, set the net as GND and draw. a ground plane is like a filter of some sort, idk go google it. therefore adding one is good practice. DRC this is the most important thing you need to do everytime you finish making a change, the DRC checks for everything unconnected traces , shorted wires , parts clipping , silkscreen clipping. so i would advise you to run the drc everytime you finish a task, so you can fix the issue. customizing your board you can customize your board and add art using SVG and SIlkscreen. silkscreen is a non conductive layer use to add text and cool arts. woah now that’s a long read but there’s more What i did this past few day so this few days i just been doing CAD , the plate finish , i got the top case rough shape finish and i almost finish the bottom case just the usb-c port left. i went through three different design variations and eventually settle down for the design for the bottom case (in picture). i also model my own custom rotary encoder knob. i want to import a knurl design at first but then the model i import was too large and when i scale it down it won’t fit. either way we’re getting close to finishing the design phase."}, {"post_id": 76808, "ts": "2026-10-04T17:15:26Z", "hours": 3.0169, "text": "Hello every Pony im back again with more things to share. so now that you figure out what fancy features you want for your keyboard it’s time to make it come to fruition. you would need to first create your PCB first and to do that i use KICAD. the first step is to create your schematics first (it’s like instruction telling your component which wire goes where).In My schematics i use the PI PICO as my brain of my keyboard and i created a keyboard matrix based on the layout i want . so the Pi pico have a limited amount of GPIO pins if wire all our keyswitch to our pico we would need a dozen of pico and we don’t want that. so we create a keyboard matrix. i also added in a GPIO expansion chip mcp23017 to accommodate those other fancy feature i have.This stage is very crucial as any mistake make here will be a big headache when you wire your actual pcb. some tools that i found very useful: Keyboard layout editor.com, Marbastlib(KIcad plugin) so what i did today, i continue working on my keyboard cad files today, boy o boy is tiring , i have to manually place and align each keycap and it took a while bcs im such a perfectionist. anyway i decided to use a top mount layout for my keyboard so there will three layer a bottom case , the plate and the upper case. im so impatient , i want to finish this quickly !!! anyhow , everything i just said was oversimplified , remember to do your own research. until next time stay cool every pony"}, {"post_id": 75955, "ts": "2026-10-01T18:42:40Z", "hours": 0.6833, "text": "hey ya guys since i started project sometime ago i will tried to retell what i did and also include some ongoing process like what i did etc. so what do you do when you want to make a keyboard ? you do tons of research of course. keyboard format 60% 75% TKL etc features like knobs ,backlit and display Hot swappable ? or simply solder it on? all this have to be taken into consideration ultimately i choose to go with the 75% format ,with all kinds of fancy features(knobs,oled display,rgb backlit,hot swappable). below is an early sketch of what i want in my keyboard // so today i went back to the pcb and added more graphics cause why not , i got more time now"}, {"post_id": 75817, "ts": "2026-10-01T07:30:14Z", "hours": 40.2828, "text": "what’s up Guys alright so i may have been gone for a few days but now im back with a new project. RAINBOW DASH KEYBOARD yeah it was originally gonna be submitted to #keeb but i miss the deadline so im going to submit to Stardance instead. so currently i have Logged 40h 16min with lapse and i have finished designing the PCB and now currently designing the case for it. everything before this devblog will be in my github REPO ie timeline, pcb ,sch and case so definitely go through my repo. the features ; so this keyboard will have hot swappable backlit keyswitch with a rotary encoder, oled screen and a custom 3d case to go with it"}]...
|
Title: 20% Cooler KEYBOARD by @matthewwong12 | Sta Title: 20% Cooler KEYBOARD by @matthewwong12 | Stardance
Devlogs:
what’s up Guys alright so i may have been gone for a few days but now im back with a new project. RAINBOW DASH KEYBOARD yeah it was originally gonna be submitted to #keeb but i miss the deadline so im going to submit to Stardance instead. so currently i have Logged 40h 16min with lapse and i have finished designing the PCB and now currently designing the case for it. everything before this devblog will be in my github REPO ie timeline, pcb ,sch and case so definitely go through my repo. the features ; so this keyboard will have hot swappable backlit keyswitch with a rotary encoder, oled screen and a custom 3d case to go with it
hey ya guys since i started project sometime ago i will tried to retell what i did and also include some ongoing process like what i did etc. so what do you do when you want to make a keyboard ? you do tons of research of course. keyboard format 60% 75% TKL etc features like knobs ,backlit and display Hot swappable ? or simply solder it on? all this have to be taken into consideration ultimately i choose to go with the 75% format ,with all kinds of fancy features(knobs,oled display,rgb backlit,hot swappable). below is an early sketch of what i want in my keyboard // so today i went back to the pcb and added more graphics cause why not , i got more time now
Hello every Pony im back again with more things to share. so now that you figure out what fancy features you want for your keyboard it’s time to make it come to fruition. you would need to first create your PCB first and to do that i use KICAD. the first step is to create your schematics first (it’s like instruction telling your component which wire goes where).In My schematics i use the PI PICO as my brain of my keyboard and i created a keyboard matrix based on the layout i want . so the Pi pico have a limited amount of GPIO pins if wire all our keyswitch to our pico we would need a dozen of pico and we don’t want that. so we create a keyboard matrix. i also added in a GPIO expansion chip mcp23017 to accommodate those other fancy feature i have.This stage is very crucial as any mistake make here will be a big headache when you wire your actual pcb. some tools that i found very useful: Keyboard layout editor.com, Marbastlib(KIcad plugin) so what i did today, i continue working on my keyboard cad files today, boy o boy is tiring , i have to manually place and align each keycap and it took a while bcs im such a perfectionist. anyway i decided to use a top mount layout for my keyboard so there will three layer a bottom case , the plate and the upper case. im so impatient , i want to finish this quickly !!! anyhow , everything i just said was oversimplified , remember to do your own research. until next time stay cool every pony
wassup Every Pony it’s me again with another devblog now the schematics is out the way, it’s time to move on to the actual PCB , this by far the longest process for me, you have take lots of things into consideration. when you first open the PCB editor , the first thing you do is import the parts you place in your schematics (there’s a button for that) then you would wanna go back to Keyboard layout editor to download the JSON File of your layout , then go back to kicad and open the plugin manager then download keyboard layout placer. you then go back to the pcb editor and open the plugin , there you will be able to insert your JSON file then the plugin will do the placing for you how cool is that ? there also an option to add more parts to be auto place. when you finish that you would need to draw out your pcb board edge with that we first select the edge cut layer then select whether the draw line tool or rectangles tool, left click and drag then voila you define your pcb borders. FOR RGB LED and HOT SWAP sockets you need to flip those to backside of the board for them to work. you also need the 5v trace to be thicker, how thick ? there’s a tool for that (PCB Trace width calculator) , a standard usb 3.0 output 0.9amps at 5v while usb 2.0 outputs 0.5 amps at 5v, check your usb port before deciding. now here comes the actual complicated part , routing it all together in a basic pcb you have two layer the front and back , so you have two layers to work with, you route wire by pressing x , to switch to the backside press v note v is also use to place vias vias are like channel that connect the front trace to back trace and it works the other way around. utilize them to the fullest extend . placing ground plane adding a ground plane is quick and easy press the draw filled zones ,select which layers have the most or both, set the net as GND and draw. a ground plane is like a filter of some sort, idk go google it. therefore adding one is good practice. DRC this is the most important thing you need to do everytime you finish making a change, the DRC checks for everything unconnected traces , shorted wires , parts clipping , silkscreen clipping. so i would advise you to run the drc everytime you finish a task, so you can fix the issue. customizing your board you can customize your board and add art using SVG and SIlkscreen. silkscreen is a non conductive layer use to add text and cool arts. woah now that’s a long read but there’s more What i did this past few day so this few days i just been doing CAD , the plate finish , i got the top case rough shape finish and i almost finish the bottom case just the usb-c port left. i went through three different design variations and eventually settle down for the design for the bottom case (in picture). i also model my own custom rotary encoder knob. i want to import a knurl design at first but then the model i import was too large and when i scale it down it won’t fit. either way we’re getting close to finishing the design phase.
howdy pony ! this is it im done with my case this is it we’re done with the designing phase , things i did: changed the 3d model of the pi pico with a usb c cut out the upper case heatset insert hole cut out space for the screw head sticking out at the plate cut out the usb-c charger hole rounded the case edges oooo idk if u notice but there’s a big hole on top of pico and that’s there on purpose so i can add a clear acrylic plate there. oh yeah and the text there also have space below to insert some light dispersing material. tomorrow is repo day people im going go over yer tutorial now once you finish your pcb and it all checks out , now it’s time to create an enclosure for it . first export the stp file from kicad(there’s an option for you to export the silkscreen). then go to your software and import your stp file into your cad software.when i did this process i did encounter an issue where the stp file fail to translate(FUSION) so big L but there’s a work around. first i go to onshape and import and translate the file there. then we export the file that is just translated by onshape into fusion and voila success there’s many type of different design and mounting style to choose from and of course the more fancy you want it the harder it gets (to model :P ) i used the bottom mount layout , it’s sort of a balanced options out of all the style . but hey what matters is personal preference do you like it thocky or creamy or clicky ? so choose what you want. either way i don’t really have much advice for this. much of it drawing sketch and basic math . it’s not hard and not easy, there’s definitely a learning curve and there will be a lot of failing before something stuck. fact btw when i was pushing to finish this keyboard for keeb i sat down for almost 6 hour and i felt like the ash baby afterwards (ps i didn’t make it). so trial and error buddy when you fall seven times, you stand up eight !!!
what’s up Everypony this is the last devblog im posting before i ship my project for funding. during this time period , i made some finishing touches to the Case , prep it for production and i am just writing and updating my repo constantly. anyway i think i done with this project for now gotta work on my website fr fr it’s also exam season now for me, so there might be less frequent update enjoy this assembly animation i made :)...
|
1792705755.8393843
|
1793310555.8393843
|
|
33986
|
Turtlebrowse by @leethana | Stardance
|
leethana
|
1
|
92.7
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-18T14:07:25Z", "hours": 57.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built Turtlebrowse, a Material 3 Expressive, Chromium (JCEF) based agentic browser that can navigate the web autonomously with you. Features Discord Rich Presence, a YouTube video downloader with yt-dlp, customizable appearence, many tools for the AI agent to navigate the wb for you, and more!", "repo": "https://github.com/ingStudiosOfficial/turtlebrowse", "demo": "https://github.com/ingStudiosOfficial/turtlebrowse/releases/latest"}]...
|
[{"post_id": 81234, "ts": "202 [{"post_id": 81234, "ts": "2026-10-20T12:09:04Z", "hours": 5.07, "text": "added userscripts scaffolding and a new easter egg :)"}, {"post_id": 79741, "ts": "2026-10-15T08:21:14Z", "hours": 0.4258, "text": "fixed windows focus bug finally. after 9 months. youre telling me the answer is a simple clear global focus owner. really man?"}, {"post_id": 79022, "ts": "2026-10-12T12:03:43Z", "hours": 5.045, "text": "added auto updating for linux appimages. i also improved the adblocker and ported a cube minigame into the browser."}, {"post_id": 78054, "ts": "2026-10-09T12:08:14Z", "hours": 12.2119, "text": "Added adblocking, zooming, new improved UI, and favicon support!"}, {"post_id": 72634, "ts": "2026-09-23T12:15:24Z", "hours": 1.9778, "text": "Added an integrated terminal using JediTerm and pty4j to the browser sidebar. Silly feature but cool and useful. First browser to do so."}, {"post_id": 72176, "ts": "2026-09-22T11:45:30Z", "hours": 1.3872, "text": "Added fullscreen mode support and fixed toolbar bad contrast when dark mode bug."}, {"post_id": 71083, "ts": "2026-09-20T08:49:42Z", "hours": 2.7953, "text": "Added OS theme detection for light/dark mode. Modified the buttons and text to follow the theme as well."}, {"post_id": 70650, "ts": "2026-09-19T14:54:50Z", "hours": 2.745, "text": "Added an update microservice using Go and migrated the update UI to the settings page."}, {"post_id": 70467, "ts": "2026-09-19T07:56:12Z", "hours": 4.0381, "text": "Added find and replace to Turtlebrowse and a new tool panel that can be swapper for AI, find and replace, and yt-dlp"}, {"post_id": 70101, "ts": "2026-09-18T13:43:43Z", "hours": 5.9531, "text": "Added browsing history, made tab switching more efficient. I struggled with fixing the grey paint on tab switch bcuz it looks like its unfixable and an issue with JCEF on Linux."}, {"post_id": 69527, "ts": "2026-09-17T07:20:24Z", "hours": 13.5119, "text": "Added Linux AppImage, YouTube video downloader, and more! Features and bugs fixed: YouTube video downloader via yt-dlp Better menu buttons Web browser registration and xdg-open handlers on Linux Frontend search suggestor AppImage build"}, {"post_id": 47273, "ts": "2026-08-15T03:00:13Z", "hours": 8.1233, "text": "Multiple new changes in Turtlebrowse v1.4.5, including: Setting to enable AI integration and model selection New Tab settings New Tab wallpaper uploading Migrated from Vue to Nuxt for turtlebrowse.ingstudios.dev for better SEO Improved performance for wallpapers (serving images directly from backend rather than creating an ObjectURL based on the returned Blob)"}, {"post_id": 43807, "ts": "2026-08-09T07:27:24Z", "hours": 2.9322, "text": "I used the DuckDuckGo autocompleter API to add autocompletions to Turtlebrowse. It uses a JavaFX Popup component with an embedded ListView. I also changed the jpackage to use a custom jlink."}, {"post_id": 41298, "ts": "2026-08-05T13:16:17Z", "hours": 3.7625, "text": "Completed the settings page! User can now choose between many different search engines including Brave Search, DuckDuckGo, Google, Startpage, Vyntr, Bing and Yahoo. Users can also choose to enable or disable the Discord Rich Presence IPC connection."}, {"post_id": 39991, "ts": "2026-08-03T10:42:48Z", "hours": 2.4553, "text": "we (finally) managed to fix macos build on turtlebrowse! turns out the issue was single process flag that had to be added because of linux and focus issues that caused a StackOverflowError on mac! try v1.2.9 now at https://turtlebrowse.ingstudios.dev !"}, {"post_id": 36840, "ts": "2026-07-29T04:55:36Z", "hours": 3.2208, "text": "Fixed some critical bugs, including: AI chat agent freezing main thread due to joining virtual thread Fixed AI chat not running because did not start the thread Fixed the search tool returning 429 due to the lack of headers"}, {"post_id": 32267, "ts": "2026-07-21T10:25:02Z", "hours": 5.6911, "text": "Fixed some bugs and added new features in the new update such as: Discord Rich Presence Profile editing Stability fixes"}, {"post_id": 27063, "ts": "2026-07-12T08:46:45Z", "hours": 11.7428, "text": "Added new features and bug fixes such as: Multi process architecture Multiple isolated user profiles Fixed the profile switcher Fixed the Ctrl + L shortcut to focus the URL bar Added the Ctrl + W shortcut to close the current tab"}]...
|
Title: Turtlebrowse by @leethana | Stardance
Devl Title: Turtlebrowse by @leethana | Stardance
Devlogs:
Added new features and bug fixes such as: Multi process architecture Multiple isolated user profiles Fixed the profile switcher Fixed the Ctrl + L shortcut to focus the URL bar Added the Ctrl + W shortcut to close the current tab
Fixed some bugs and added new features in the new update such as: Discord Rich Presence Profile editing Stability fixes
Fixed some critical bugs, including: AI chat agent freezing main thread due to joining virtual thread Fixed AI chat not running because did not start the thread Fixed the search tool returning 429 due to the lack of headers
we (finally) managed to fix macos build on turtlebrowse! turns out the issue was single process flag that had to be added because of linux and focus issues that caused a StackOverflowError on mac! try v1.2.9 now at https://turtlebrowse.ingstudios.dev !
Completed the settings page! User can now choose between many different search engines including Brave Search, DuckDuckGo, Google, Startpage, Vyntr, Bing and Yahoo. Users can also choose to enable or disable the Discord Rich Presence IPC connection.
I used the DuckDuckGo autocompleter API to add autocompletions to Turtlebrowse. It uses a JavaFX Popup component with an embedded ListView. I also changed the jpackage to use a custom jlink.
Multiple new changes in Turtlebrowse v1.4.5, including: Setting to enable AI integration and model selection New Tab settings New Tab wallpaper uploading Migrated from Vue to Nuxt for turtlebrowse.ingstudios.dev for better SEO Improved performance for wallpapers (serving images directly from backend rather than creating an ObjectURL based on the returned Blob)
Added Linux AppImage, YouTube video downloader, and more! Features and bugs fixed: YouTube video downloader via yt-dlp Better menu buttons Web browser registration and xdg-open handlers on Linux Frontend search suggestor AppImage build
Added browsing history, made tab switching more efficient. I struggled with fixing the grey paint on tab switch bcuz it looks like its unfixable and an issue with JCEF on Linux.
Added find and replace to Turtlebrowse and a new tool panel that can be swapper for AI, find and replace, and yt-dlp
Added an update microservice using Go and migrated the update UI to the settings page.
Added OS theme detection for light/dark mode. Modified the buttons and text to follow the theme as well.
Added fullscreen mode support and fixed toolbar bad contrast when dark mode bug.
Added an integrated terminal using JediTerm and pty4j to the browser sidebar. Silly feature but cool and useful. First browser to do so.
Added adblocking, zooming, new improved UI, and favicon support!
added auto updating for linux appimages. i also improved the adblocker and ported a cube minigame into the browser.
fixed windows focus bug finally. after 9 months. youre telling me the answer is a simple clear global focus owner. really man?
added userscripts scaffolding and a new easter egg :)
Ships:
I built Turtlebrowse, a Material 3 Expressive, Chromium (JCEF) based agentic browser that can navigate the web autonomously with you. Features Discord Rich Presence, a YouTube video downloader with yt-dlp, customizable appearence, many tools for the AI agent to navigate the wb for you, and more!...
|
1793004975.844571
|
1793091375.844571
|
|
55756
|
demon slayer by @v3n5590 | Stardance
|
v3n5590
|
0
|
19.46
|
0
|
[]
|
[{"post_id": 81236, "ts": "202 [{"post_id": 81236, "ts": "2026-10-20T12:11:38Z", "hours": 0.8269, "text": "muichro page done"}, {"post_id": 81185, "ts": "2026-10-20T07:04:03Z", "hours": 1.0678, "text": "hashira page done"}, {"post_id": 80104, "ts": "2026-10-16T07:27:02Z", "hours": 1.4686, "text": "rengoku page doneee"}, {"post_id": 73690, "ts": "2026-09-25T18:14:47Z", "hours": 0.6964, "text": "done nezuko page"}, {"post_id": 72868, "ts": "2026-09-23T21:56:34Z", "hours": 2.3903, "text": "working on nezuko page cause i forgot some characters done some css pages duhh😭😭😭😭"}, {"post_id": 72131, "ts": "2026-09-22T07:56:40Z", "hours": 0.8083, "text": "akaza page is done gone for 2 min to feed my cat"}, {"post_id": 71907, "ts": "2026-09-21T19:04:30Z", "hours": 0.7094, "text": "working on some pages"}, {"post_id": 71886, "ts": "2026-09-21T18:12:14Z", "hours": 1.1517, "text": "done demon page bruhhhhh😫😫😫😫😫😫😫😫"}, {"post_id": 71814, "ts": "2026-09-21T16:23:17Z", "hours": 0.8333, "text": "done douma page"}, {"post_id": 71673, "ts": "2026-09-21T08:58:20Z", "hours": 0.9708, "text": "completed entry page and enmu page total 2 pages"}, {"post_id": 71654, "ts": "2026-09-21T07:49:46Z", "hours": 1.8494, "text": "working on genya complete"}, {"post_id": 66459, "ts": "2026-09-12T09:33:31Z", "hours": 1.0531, "text": "sanemi sub page"}, {"post_id": 59092, "ts": "2026-08-31T18:28:09Z", "hours": 0.9992, "text": "completed a page"}, {"post_id": 58331, "ts": "2026-08-30T18:28:20Z", "hours": 0.8597, "text": "completed swords page"}, {"post_id": 58229, "ts": "2026-08-30T16:14:13Z", "hours": 0.8333, "text": "page about tanjiro has been completed"}, {"post_id": 57504, "ts": "2026-08-29T17:50:36Z", "hours": 0.8175, "text": "5th page done"}, {"post_id": 57454, "ts": "2026-08-29T16:31:26Z", "hours": 1.6061, "text": "after searching for the content created third page"}, {"post_id": 57346, "ts": "2026-08-29T13:55:00Z", "hours": 0.5147, "text": "created two pages about.html and index.html"}]...
|
Title: demon slayer by @v3n5590 | Stardance
Devlo Title: demon slayer by @v3n5590 | Stardance
Devlogs:
created two pages about.html and index.html
after searching for the content created third page
5th page done
page about tanjiro has been completed
completed swords page
completed a page
sanemi sub page
working on genya complete
completed entry page and enmu page total 2 pages
done douma page
done demon page bruhhhhh😫😫😫😫😫😫😫😫
working on some pages
akaza page is done gone for 2 min to feed my cat
working on nezuko page cause i forgot some characters done some css pages duhh😭😭😭😭
done nezuko page
rengoku page doneee
hashira page done
muichro page done...
|
1792633833.6010208
|
1793238633.6010208
|
|
63086
|
Arduino parts tracker by @ajmaleee__ | Stardance
|
ajmaleee__
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T14:22:19Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "ESP32 Inventory Manager My ESP32 Inventory Manager is a small desktop assistant designed to make working at my electronics bench easier. It keeps track of around 230 electronic modules and components, letting me search for a part and find exactly where it’s stored without digging through piles of pouches. Built around an ESP32, OLED display, keypad, RTC module and LittleFS storage, it combines inventory management, component lending and return tracking, a clock, timers and Pomodoro study sessions in one device. The custom keypad uses Nokia-style multi-tap text input, while local storage allows the inventory to work without relying on the internet. I’ve also been working on power optimization using ESP32 light sleep, so the device doesn’t waste battery power when it’s idle. The project is still evolving, with plans for a larger TFT display, better interface animations, vibration notifications and an INMP441 microphone for future voice-controlled inventory management. What started as a simple solution to my messy component storage has gradually become a multifunctional electronics bench assistant. It’s not finished yet, but the goal is simple: spend less time searching for components and navigating menus, and more time actually building things.", "repo": "https://github.com/Ajmaleee/CircuitShelf", "demo": "https://drive.google.com/file/d/1E-O3cFrFAo3KNwu2OBWP70bK6hr4ljpL/view?usp=sharing"}]...
|
[{"post_id": 81244, "ts": "202 [{"post_id": 81244, "ts": "2026-10-20T13:27:42Z", "hours": 2.9222, "text": "ESP32 Inventory Manager ,wot i did in 5 Days Day 1 — inspiration I started this project because I was getting tired of forgetting where I kept my electronic components. I have around 230 modules and sensors, and searching through all those pouches every time I need something is honestly annoying. So I decided to build an inventory manager using an ESP32 and an OLED display. The idea was to search for a component and get its exact location instead of digging through everything manually. I also wanted to add a few things I’d actually use at my electronics bench, like timers, Pomodoro sessions and a clock. What started as a simple inventory tracker was already turning into something bigger. Day 2 — Getting the keypad and RTC working I worked on the keypad interface and RTC integration. For text input, I wanted something similar to the old Nokia phones, where pressing a key multiple times lets you enter different letters. It makes searching through hundreds of components much easier without needing a full keyboard. The RTC was a different story. Initially, the ESP32 couldn’t communicate with it, and I thought the module might be faulty. Turns out, I’d swapped the SDA and SCL connections. After fixing that, I got it working, but the time was still incorrect. I had to set it properly and replace the nearly dead coin cell. At least it wasn’t a dead module. Just my wiring. Day 3 — Making the battery last longer Once the main hardware was working, I started looking at power consumption. The ESP32 was constantly running its main loop, updating things even when I wasn’t interacting with the device. Not ideal for something powered by a 2,200 mAh battery. I started optimizing the loop and implementing light sleep so the ESP32 could spend less time actively processing when idle. The RTC handles timekeeping independently, which helps avoid keeping the ESP32 awake just for the clock. There’s still room for improvement, but getting the power management sorted out was an important step. Day 4 — Organizing the inventory I worked on the inventory system using LittleFS for local storage. This means the component data stays on the ESP32 itself instead of depending on an internet connection or an external database. The plan is to keep track of component names, locations, quantities and lending status. With around 230 components to manage, having everything searchable in one place makes a real difference. I also wanted the device to be more than just a storage database. Having inventory search, timers, Pomodoro sessions and a clock together makes it much more useful on my electronics bench. Day 5 — What’s next? Looking at the current build, there are still plenty of things I want to improve. The SSD1306 OLED works fine, but its small size is becoming a limitation. A TFT display would give me more space for a better interface. The bigger idea, though, is voice control. I’m planning to experiment with an INMP441 microphone so I can eventually give commands like asking the device to locate an OLED or update the inventory when I borrow a component. Of course, plugging in a microphone won’t magically turn the ESP32 into Jarvis. Wake-word detection, speech recognition and command processing will all need work. For now, I’m happy with how far the project has come. It’s still a work in progress, and every new feature seems to introduce another problem to solve. That’s pretty much how my electronics projects go."}]...
|
Title: Arduino parts tracker by @ajmaleee__ | Star Title: Arduino parts tracker by @ajmaleee__ | Stardance
Devlogs:
ESP32 Inventory Manager ,wot i did in 5 Days Day 1 — inspiration I started this project because I was getting tired of forgetting where I kept my electronic components. I have around 230 modules and sensors, and searching through all those pouches every time I need something is honestly annoying. So I decided to build an inventory manager using an ESP32 and an OLED display. The idea was to search for a component and get its exact location instead of digging through everything manually. I also wanted to add a few things I’d actually use at my electronics bench, like timers, Pomodoro sessions and a clock. What started as a simple inventory tracker was already turning into something bigger. Day 2 — Getting the keypad and RTC working I worked on the keypad interface and RTC integration. For text input, I wanted something similar to the old Nokia phones, where pressing a key multiple times lets you enter different letters. It makes searching through hundreds of components much easier without needing a full keyboard. The RTC was a different story. Initially, the ESP32 couldn’t communicate with it, and I thought the module might be faulty. Turns out, I’d swapped the SDA and SCL connections. After fixing that, I got it working, but the time was still incorrect. I had to set it properly and replace the nearly dead coin cell. At least it wasn’t a dead module. Just my wiring. Day 3 — Making the battery last longer Once the main hardware was working, I started looking at power consumption. The ESP32 was constantly running its main loop, updating things even when I wasn’t interacting with the device. Not ideal for something powered by a 2,200 mAh battery. I started optimizing the loop and implementing light sleep so the ESP32 could spend less time actively processing when idle. The RTC handles timekeeping independently, which helps avoid keeping the ESP32 awake just for the clock. There’s still room for improvement, but getting the power management sorted out was an important step. Day 4 — Organizing the inventory I worked on the inventory system using LittleFS for local storage. This means the component data stays on the ESP32 itself instead of depending on an internet connection or an external database. The plan is to keep track of component names, locations, quantities and lending status. With around 230 components to manage, having everything searchable in one place makes a real difference. I also wanted the device to be more than just a storage database. Having inventory search, timers, Pomodoro sessions and a clock together makes it much more useful on my electronics bench. Day 5 — What’s next? Looking at the current build, there are still plenty of things I want to improve. The SSD1306 OLED works fine, but its small size is becoming a limitation. A TFT display would give me more space for a better interface. The bigger idea, though, is voice control. I’m planning to experiment with an INMP441 microphone so I can eventually give commands like asking the device to locate an OLED or update the inventory when I borrow a component. Of course, plugging in a microphone won’t magically turn the ESP32 into Jarvis. Wake-word detection, speech recognition and command processing will all need work. For now, I’m happy with how far the project has come. It’s still a work in progress, and every new feature seems to introduce another problem to solve. That’s pretty much how my electronics projects go.
Ships:
ESP32 Inventory Manager My ESP32 Inventory Manager is a small desktop assistant designed to make working at my electronics bench easier. It keeps track of around 230 electronic modules and components, letting me search for a part and find exactly where it’s stored without digging through piles of pouches. Built around an ESP32, OLED display, keypad, RTC module and LittleFS storage, it combines inventory management, component lending and return tracking, a clock, timers and Pomodoro study sessions in one device. The custom keypad uses Nokia-style multi-tap text input, while local storage allows the inventory to work without relying on the internet. I’ve also been working on power optimization using ESP32 light sleep, so the device doesn’t waste battery power when it’s idle. The project is still evolving, with plans for a larger TFT display, better interface animations, vibration notifications and an INMP441 microphone for future voice-controlled inventory management. What started as a simple solution to my messy component storage has gradually become a multifunctional electronics bench assistant. It’s not finished yet, but the goal is simple: spend less time searching for components and navigating menus, and more time actually building things....
|
1793048031.457022
|
1793134431.457022
|
|
70271
|
neural network basics by @cosmic79conqueror | Star neural network basics by @cosmic79conqueror | Stardance...
|
cosmic79conqueror
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T14:09:18Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Neural Networks!!! This will be me creating a neural network from scratch while learning aout them. this was inspired by the growing craze about ai (although i am a few years late it is of no matter) the following code has a dataset of 4 people and their weights and heights and genders. the dataset 4 people and their heights and weights and genders 1 for female and 0 for male signing off this is just part 1 of my project i will continue it in another ysws for the next part so all this does is run a program to minimise the loss functiona", "repo": "https://github.com/Abhrajit-Gogoi/neural-network", "demo": "https://github.com/Abhrajit-Gogoi/neural-network/blob/main/main.py"}]...
|
[{"post_id": 81249, "ts": "202 [{"post_id": 81249, "ts": "2026-10-20T13:52:42Z", "hours": 1.2236, "text": "wrote the code from the blog after tweaking about a bit i got the loss function to be practically 0 after 280 learnings"}, {"post_id": 81163, "ts": "2026-10-20T04:56:58Z", "hours": 4.4264, "text": "trying to get into machine learning i read the blog : https://victorzhou.com/blog/intro-to-neural-networks/ for the theory of my project. i learnt about basically the UAT universal approx theorem and how that is the motivation behind neural networks. So we use feedforward to get results and backprop and sgd to train it next i will try creating it from memory"}]...
|
Title: neural network basics by @cosmic79conqueror Title: neural network basics by @cosmic79conqueror | Stardance
Devlogs:
trying to get into machine learning i read the blog : https://victorzhou.com/blog/intro-to-neural-networks/ for the theory of my project. i learnt about basically the UAT universal approx theorem and how that is the motivation behind neural networks. So we use feedforward to get results and backprop and sgd to train it next i will try creating it from memory
wrote the code from the blog after tweaking about a bit i got the loss function to be practically 0 after 280 learnings
Ships:
Neural Networks!!! This will be me creating a neural network from scratch while learning aout them. this was inspired by the growing craze about ai (although i am a few years late it is of no matter) the following code has a dataset of 4 people and their weights and heights and genders. the dataset 4 people and their heights and weights and genders 1 for female and 0 for male signing off this is just part 1 of my project i will continue it in another ysws for the next part so all this does is run a program to minimise the loss functiona...
|
1793066034.0470552
|
1793152434.0470552
|
|
70513
|
MarchingCubes (unity3d) by @Rohit_Biswas | Stardan MarchingCubes (unity3d) by @Rohit_Biswas | Stardance...
|
Rohit_Biswas
|
1
|
18.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-21T02:06:41Z", "hours": 18.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Finally, I made a cpu based simple marching cube algorithm especially for generating complex procedural terrain. during this project i faced so many mesh generation and cube config indexing problem even i almost gave up. However,i eventually got a really nice Stanford marching cube algorithm. After 30 hours of hard work i finally built it myself! I am really proud of my selft. Credits: Sebastian lague: https://www.youtube.com/watch?v=M3iI2l0ltbE Graphics Stanford Edu: https://graphics.stanford.edu/~mdfisher/MarchingCubes.html NVIDIA: https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-1-generating-complex-procedural-terrains-using-gpu b3agz: https://www.youtube.com/watch?v=dTdn3CC64sc&t=1368s Unity 2022.3", "repo": "https://github.com/BlooPlanet/MarchingCubes", "demo": "https://blooplanet.itch.io/marching-cube"}]...
|
[{"post_id": 81250, "ts": "202 [{"post_id": 81250, "ts": "2026-10-20T13:53:32Z", "hours": 0.6447, "text": "Day 3 Terrain generation with marching cube"}, {"post_id": 81213, "ts": "2026-10-20T10:12:58Z", "hours": 2.8022, "text": "Day 2 Marching cube mesh generation system"}, {"post_id": 80991, "ts": "2026-10-19T15:13:10Z", "hours": 14.9222, "text": "Day 1 I made march cube function that create mesh from the marching cube config index"}]...
|
Title: MarchingCubes (unity3d) by @Rohit_Biswas | Title: MarchingCubes (unity3d) by @Rohit_Biswas | Stardance
Devlogs:
Day 1 I made march cube function that create mesh from the marching cube config index
Day 2 Marching cube mesh generation system
Day 3 Terrain generation with marching cube
Ships:
Finally, I made a cpu based simple marching cube algorithm especially for generating complex procedural terrain. during this project i faced so many mesh generation and cube config indexing problem even i almost gave up. However,i eventually got a really nice Stanford marching cube algorithm. After 30 hours of hard work i finally built it myself! I am really proud of my selft. Credits: Sebastian lague: https://www.youtube.com/watch?v=M3iI2l0ltbE Graphics Stanford Edu: https://graphics.stanford.edu/~mdfisher/MarchingCubes.html NVIDIA: https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-1-generating-complex-procedural-terrains-using-gpu b3agz: https://www.youtube.com/watch?v=dTdn3CC64sc&t=1368s Unity 2022.3...
|
1793026039.1134455
|
1793112439.1134455
|
|
67427
|
Coldline-inspired Alarm by @nastavial | Stardance
|
nastavial
|
0
|
56.7
|
0
|
[]
|
[{"post_id": 81258, "ts": "202 [{"post_id": 81258, "ts": "2026-10-20T14:31:21Z", "hours": 0.905, "text": "Okay… The first renderer is on progress! To make things simpler, I decided to make my own Vector class. I’m sorry if I can’t grind very much this time…"}, {"post_id": 80971, "ts": "2026-10-19T13:04:42Z", "hours": 2.9981, "text": "Working on the user interface! The first ~20 minutes is me trying to pick between Figma or Photopea (I decided to use Figma), how to import font, and how to get started with Figma. So I did learn some fundamentals of Figma I changed the planned font from FreeMono to TomThumb. It’s simpler, small, scalable, and stylized."}, {"post_id": 80677, "ts": "2026-10-18T13:44:32Z", "hours": 6.2453, "text": "OKAY… That’s a LOT. Okay… First of all, the clock’s system (aside from the visuals) are now be fully operable as the final architectural pieces has been completed. Second, completely eradicated delays in #1 minigame. Third. KILOTONS of bugfixes (mostly the fatal ones) (I’ve just realized I accidentally have two different commits named “FIX #3” lol) Fourth. OHH FINALLY MY BACK CAN REST!"}, {"post_id": 80449, "ts": "2026-10-17T17:25:13Z", "hours": 0.5314, "text": "Found few genuinely dumb issues (mb): FORGOT TO ACTUALLY RANDOMIZE THE TOKEN. This is the most fatal one. Forgot to reset the menu data. So the user’s probably will stuck inside a single minigame Just learned that C++ tends to have weird quirks if you define a variable inside unscoped switch/case statement. Forgot to update set any_sw_clicked nor the rotary encoder button click. I’m so sorry if I can only develop this project for about few minutes tonight because there are a lot of going on today. Sorry :"}, {"post_id": 80167, "ts": "2026-10-16T14:50:16Z", "hours": 2.4, "text": "Ehem… A quick recap. It turns out, inputs handling are not-so-basic after all. At the first glance, everything seems easy. I thought the concept was simple: analogRead -> register into a struct -> return. But it turns out everything is… a bit messier. I ended up learning what are interrupts. Another couple of things that I finished were the lockscreen (aside the UI elements ofc) and the alarm buzzer. The lockscreen are somewhat trivial, meanwhile the buzzer made me relearn about PWM."}, {"post_id": 79825, "ts": "2026-10-15T15:24:20Z", "hours": 3.2628, "text": "Completed two more minigames (#3 and #4). That means every minigames I planned so far are coded, yeay! (more minigames may be added soon) The current available minigames are: Simon Slider match (like Fisch reel mechanism, but three of it all at once) Slider hit (sorta like) Where’s waldo."}, {"post_id": 79547, "ts": "2026-10-14T15:30:23Z", "hours": 2.0958, "text": "Second minigame is completed! (aside the renderer… so yeah, no demo can be showed yet) Aside from the minigame, there’s also a slight rework to ensure ‘consistency’ and ‘developer’s QOL’. Furthermore, the code are now microscopically more optimized!"}, {"post_id": 79315, "ts": "2026-10-13T14:24:57Z", "hours": 4.7808, "text": "The overall loop flow is completed. BUT THE MOST IMPORTANTLY, THE FIRST MINIGAME IS COMPLETED (aside the UI draw aspect) Okay… this thing took longer than I thought… I’m kinda overwhelmed, but overall still fun WAIT, YOU CAN UPLOAD MORE THAN ONE IMAGE ON A SINGLE DEVLOG? I just found out about it…"}, {"post_id": 79061, "ts": "2026-10-12T15:16:28Z", "hours": 3.9986, "text": "Okay… I’ve worked on the basic datastructure of the firmware. Yeay! So the most unique thing about this alarm I made is that you need to complete three minigames to get three ‘verification code’ that you must memorize in order to shut down the alarm. BUT… I want the alarm to be extra pesky, so some of the minigames in a session (1-2 of them) would require ‘unlock key’ from other minigame in the same session."}, {"post_id": 78701, "ts": "2026-10-11T10:59:29Z", "hours": 0.715, "text": "Because I know there will be a lot of trials and errors, I’ve recreate the schematic inside Wokwi and set up Wokwi simulator inside VS Code (I mean it’s free and why not?) I don’t use Wakatime this time because I’m not yet started coding. This is just me or the TFT display pinout is a bit… weird"}, {"post_id": 78687, "ts": "2026-10-11T09:24:49Z", "hours": 2.38, "text": "The last piece (i think) is done! The phone box lid is done, yeay OHH GOSH, I’M SO EXCITED TO DO THE CODING. WooOoOooo"}, {"post_id": 78357, "ts": "2026-10-10T15:29:02Z", "hours": 0.4944, "text": "Today, I finished the all-new phone box body. Yeay! Not exactly “smooth”, and I’m not yet added the handset holder + mold. But hey, at least some progress can be made (I’m to sleepy to continue, sorry!). WOooO, I’m so excited to finish this project."}, {"post_id": 78096, "ts": "2026-10-09T15:35:47Z", "hours": 3.4803, "text": "Ehem… I think I had some… uhm ‘development’. Remember when I first starting the project? That time, I hate CAD SO MUCH. Now…, I’ve found myself enjoying the CAD process. It is fun indeed. Here’s a list for what I’ve done and learned: REVAMPING the OLD UGLY phone box design. (I’m currently working on the internal walls. I learned to trust the process I learned that I can use formulas inside dimension tool. So I did! I learned to apply the Pythagorean theorem to my design! (I know it’s pretty basic, but hey, everyone has to start somewhere)"}, {"post_id": 77851, "ts": "2026-10-08T15:13:20Z", "hours": 5.5969, "text": "What happened today? ALOT. Here’s a summary: Cooked by my arc nemesis: “Rail not smooth error”. Trying to “fix” projection and alignment issues (they’re now worse btw) Banged my head several times. Still stuck fixing the handset bell for 4 and a half hours Lobotomized myself Had a massive thinking moment Decided that “the handset aren’t necessary” Sacrificed the telephone handset to actually make some progress. Moved-on to polish the phone box. “Sometimes, a sacrifice must be made. Especially when you’re stuck for 6 devlogs in a row” - Sun Tzu I’m not lazy, okay? I’m just having a replan for effectivity . Note: Maybe , I will try to complete the handset once everything else finished."}, {"post_id": 77580, "ts": "2026-10-07T15:05:13Z", "hours": 4.0506, "text": "Made the top, side, and a bunch of garbage sketches. This time, I’m exploring surface modeling. Huft… How newbie am I? I don’t even know if I can make it on time. Seems there’s no progress on the CAD phase ;( How can making a telephone handset be this hard?"}, {"post_id": 77318, "ts": "2026-10-06T15:09:51Z", "hours": 0.6919, "text": "Based on some Slack feedbacks, I migrated to Autodesk Fusion. The progress is minimal today. This is due to tomorrow’s science exam. Maybe I’ll start a dead-grind tomorrow to make up for the wasted time. My target is to finish the project’s design by the eight of October. Ohhhhh, time is running out so quickly, isn’t it?"}, {"post_id": 77040, "ts": "2026-10-05T13:41:37Z", "hours": 3.275, "text": "Yo… why is my phone tweaking? DAY 3 STUCK IN CAD PHASE BTW. GRRRRR. Maybe I should migrate to fusion instead? Sure… Lot of the community advice me to do so."}, {"post_id": 76637, "ts": "2026-10-04T07:25:53Z", "hours": 1.5069, "text": "Made the phone box and outline of the… ummm… phone? phone handle? I learned the best way to shape the phone box is to design the lid first, and then the walls. Last time, I did the reverse, so that’s why I’m stuck. The amount of effort required to create a simple shape made me respect hobbyist and engineers more. I literally spent most of the time trying to figure out how to make symmetrical phone, lol. I tried to make the phone 3D, but again… It’s harder than I thought. I ended up to restart the 3D-fication process of the phone."}, {"post_id": 76608, "ts": "2026-10-04T04:54:40Z", "hours": 3.2828, "text": "uhm. long story short, I revamped everything twice. why? it turns out, the display is much longer than I anticipated. so the pcb layout must be tweaked. the cad model is… suboptimal if i say. but i think i’m getting hang of it. now i know how to use sketch, dimension, and extrude properly. still, i have a long way to go."}, {"post_id": 76338, "ts": "2026-10-03T07:45:46Z", "hours": 4.0131, "text": "Coldline-inspired alarm I’m sooooo clueless. This is my first ever attempt to design a schematic, PCB, and CAD (CAD-ing, I guess?). Schematic? All good, a piece of cake. PCB? A lot of retries, but still manageable. CAD? OH NO NO NO. A PHASE OF ABSOLUTE DOOM AND DESPAIR"}]...
|
Title: Coldline-inspired Alarm by @nastavial | Sta Title: Coldline-inspired Alarm by @nastavial | Stardance
Devlogs:
Coldline-inspired alarm I’m sooooo clueless. This is my first ever attempt to design a schematic, PCB, and CAD (CAD-ing, I guess?). Schematic? All good, a piece of cake. PCB? A lot of retries, but still manageable. CAD? OH NO NO NO. A PHASE OF ABSOLUTE DOOM AND DESPAIR
uhm. long story short, I revamped everything twice. why? it turns out, the display is much longer than I anticipated. so the pcb layout must be tweaked. the cad model is… suboptimal if i say. but i think i’m getting hang of it. now i know how to use sketch, dimension, and extrude properly. still, i have a long way to go.
Made the phone box and outline of the… ummm… phone? phone handle? I learned the best way to shape the phone box is to design the lid first, and then the walls. Last time, I did the reverse, so that’s why I’m stuck. The amount of effort required to create a simple shape made me respect hobbyist and engineers more. I literally spent most of the time trying to figure out how to make symmetrical phone, lol. I tried to make the phone 3D, but again… It’s harder than I thought. I ended up to restart the 3D-fication process of the phone.
Yo… why is my phone tweaking? DAY 3 STUCK IN CAD PHASE BTW. GRRRRR. Maybe I should migrate to fusion instead? Sure… Lot of the community advice me to do so.
Based on some Slack feedbacks, I migrated to Autodesk Fusion. The progress is minimal today. This is due to tomorrow’s science exam. Maybe I’ll start a dead-grind tomorrow to make up for the wasted time. My target is to finish the project’s design by the eight of October. Ohhhhh, time is running out so quickly, isn’t it?
Made the top, side, and a bunch of garbage sketches. This time, I’m exploring surface modeling. Huft… How newbie am I? I don’t even know if I can make it on time. Seems there’s no progress on the CAD phase ;( How can making a telephone handset be this hard?
What happened today? ALOT. Here’s a summary: Cooked by my arc nemesis: “Rail not smooth error”. Trying to “fix” projection and alignment issues (they’re now worse btw) Banged my head several times. Still stuck fixing the handset bell for 4 and a half hours Lobotomized myself Had a massive thinking moment Decided that “the handset aren’t necessary” Sacrificed the telephone handset to actually make some progress. Moved-on to polish the phone box. “Sometimes, a sacrifice must be made. Especially when you’re stuck for 6 devlogs in a row” - Sun Tzu I’m not lazy, okay? I’m just having a replan for effectivity . Note: Maybe , I will try to complete the handset once everything else finished.
Ehem… I think I had some… uhm ‘development’. Remember when I first starting the project? That time, I hate CAD SO MUCH. Now…, I’ve found myself enjoying the CAD process. It is fun indeed. Here’s a list for what I’ve done and learned: REVAMPING the OLD UGLY phone box design. (I’m currently working on the internal walls. I learned to trust the process I learned that I can use formulas inside dimension tool. So I did! I learned to apply the Pythagorean theorem to my design! (I know it’s pretty basic, but hey, everyone has to start somewhere)
Today, I finished the all-new phone box body. Yeay! Not exactly “smooth”, and I’m not yet added the handset holder + mold. But hey, at least some progress can be made (I’m to sleepy to continue, sorry!). WOooO, I’m so excited to finish this project.
The last piece (i think) is done! The phone box lid is done, yeay OHH GOSH, I’M SO EXCITED TO DO THE CODING. WooOoOooo
Because I know there will be a lot of trials and errors, I’ve recreate the schematic inside Wokwi and set up Wokwi simulator inside VS Code (I mean it’s free and why not?) I don’t use Wakatime this time because I’m not yet started coding. This is just me or the TFT display pinout is a bit… weird
Okay… I’ve worked on the basic datastructure of the firmware. Yeay! So the most unique thing about this alarm I made is that you need to complete three minigames to get three ‘verification code’ that you must memorize in order to shut down the alarm. BUT… I want the alarm to be extra pesky, so some of the minigames in a session (1-2 of them) would require ‘unlock key’ from other minigame in the same session.
The overall loop flow is completed. BUT THE MOST IMPORTANTLY, THE FIRST MINIGAME IS COMPLETED (aside the UI draw aspect) Okay… this thing took longer than I thought… I’m kinda overwhelmed, but overall still fun WAIT, YOU CAN UPLOAD MORE THAN ONE IMAGE ON A SINGLE DEVLOG? I just found out about it…
Second minigame is completed! (aside the renderer… so yeah, no demo can be showed yet) Aside from the minigame, there’s also a slight rework to ensure ‘consistency’ and ‘developer’s QOL’. Furthermore, the code are now microscopically more optimized!
Completed two more minigames (#3 and #4). That means every minigames I planned so far are coded, yeay! (more minigames may be added soon) The current available minigames are: Simon Slider match (like Fisch reel mechanism, but three of it all at once) Slider hit (sorta like) Where’s waldo.
Ehem… A quick recap. It turns out, inputs handling are not-so-basic after all. At the first glance, everything seems easy. I thought the concept was simple: analogRead -> register into a struct -> return. But it turns out everything is… a bit messier. I ended up learning what are interrupts. Another couple of things that I finished were the lockscreen (aside the UI elements ofc) and the alarm buzzer. The lockscreen are somewhat trivial, meanwhile the buzzer made me relearn about PWM.
Found few genuinely dumb issues (mb): FORGOT TO ACTUALLY RANDOMIZE THE TOKEN. This is the most fatal one. Forgot to reset the menu data. So the user’s probably will stuck inside a single minigame Just learned that C++ tends to have weird quirks if you define a variable inside unscoped switch/case statement. Forgot to update set any_sw_clicked nor the rotary encoder button click. I’m so sorry if I can only develop this project for about few minutes tonight because there are a lot of going on today. Sorry :
OKAY… That’s a LOT. Okay… First of all, the clock’s system (aside from the visuals) are now be fully operable as the final architectural pieces has been completed. Second, completely eradicated delays in #1 minigame. Third. KILOTONS of bugfixes (mostly the fatal ones) (I’ve just realized I accidentally have two different commits named “FIX #3” lol) Fourth. OHH FINALLY MY BACK CAN REST!
Working on the user interface! The first ~20 minutes is me trying to pick between Figma or Photopea (I decided to use Figma), how to import font, and how to get started with Figma. So I did learn some fundamentals of Figma I changed the planned font from FreeMono to TomThumb. It’s simpler, small, scalable, and stylized.
Okay… The first renderer is on progress! To make things simpler, I decided to make my own Vector class. I’m sorry if I can’t grind very much this time…...
|
1793109235.7131927
|
1793714035.7131927
|
|
33983
|
ValoGuess by @NHero | Stardance
|
NHero
|
1
|
104.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T14:59:44Z", "hours": 104.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built ValoGuess , a real-time multiplayer Valorant guessing game inspired by guessing videos on youtube (VCT Pacific). Players can challenge friends in 1v1 matches, eliminate agents, ask questions, and race to identify their opponent’s secret agent. It includes party lobbies, friend invites, real-time chat, player profiles, and match history. The most challenging part was building the real-time backend: synchronizing game state between players, handling disconnects and reconnections, hiding secret agents from opponents, and managing live state with Socket.IO and Redis. I’m proud of building the full experience from the game UI to the backend architecture, with separate Next.js and Socket.IO server repositories. Try it: Visit https://valoguess.fun , sign in or continue as a guest, and invite a friend for a match. Atleast one extra friend is needed or a different browser or incognito tab.", "repo": "https://github.com/valoguess/valoguess", "demo": "https://valoguess.fun"}]...
|
[{"post_id": 81260, "ts": "202 [{"post_id": 81260, "ts": "2026-10-20T14:40:52Z", "hours": 1.8425, "text": "Devlog 12 So I think this one is the last before ship, I promise. 😂🥹 Fixed some bugs here and there Added readme Added some bg and showcase photos Added a layout for the home pages (lobby, settings, leaderboard, match history) where the top navbar and the friend sidebar is given to all. I think that’s it. I got no friends, or the friends I have aren’t like best of friends So I wasn’t able to test the game on scale. Feel free to open a issue in github or message me on slack"}, {"post_id": 81097, "ts": "2026-10-19T21:13:57Z", "hours": 10.1267, "text": "Devlog 11 So I have done lots of stuff and this is the last devlog before the first ship. Little sleepy rn as its 2:35 am my time, so I will wrap up fast. Added pino in Nextjs (Its a logger) Added caching wherever possible in nextjs using the cacheLife Added auth refresh event so if the name is changed it doesn’t need socket reconnect Optimised some code in socket server and also nextjs. Games getting saved to DB and there is a career history page now. Mostly did fixes of stuff and redesigned some elements in the lobby page. Like there is nothing else to talk about I’m mostly fixed stuff. I gotta sleep, have to ship the project too maybe I do it after waking up because readme is not ready yet. I think I’m gonna do after waking up so tired rn"}, {"post_id": 79776, "ts": "2026-10-15T11:01:26Z", "hours": 10.6203, "text": "Devlog - 10 I will keep this devlog sweet and short as I wanna ship this project as soon as possible as It has taken a lot of time now. I added some more rate limiting remove game Id / party id payload where neccessary from client in socket server as game/party id can be retrieved from player stored in redis. I’m directly getting friendships from db instead of relying on nextjs api in the socket server to show the initial friends list with presence (online/offline status). Removed TTL from party and game as they may get deleted mid game (prev ttl was 10 mins). I have also added token refreshing in socket server as socket server only verifies token once so now when the token refreshes (only for when user details are mutated) socket disconnects and connects, I know this is a bad logic I will change that but 10h 37m will be logged so I don’t wanna waste any more time , so it will be in next devlog Using AVIF instead of PNG for Agents Banner & Icon Added new fields to user (tagline, banner, usernamedUpdatedAt, nameUpdatedAt) Cleaned up many of the files in the frontend party Added logic for If user changes their avatar it should delete the old image in cloudinary Added Match ending design ENV are now accessed from ENV.ts Removed console.logs etc from nexjs Fixed some bugs."}, {"post_id": 78076, "ts": "2026-10-09T14:19:49Z", "hours": 9.7719, "text": "Devlog - 9 NextJS I added upload avatar in the settings page, user uploads an avatar and crops it accordingly , max file size limit is 5mb also the image gets uploaded to cloudinary and the secure url of the image is stored in db Changed the lobby UI to make it less cluttered Now there are drawers for gamemode settings and party stuff Changed the friends sidebar to be attaced to the right wall and closed and when you open it , it comes out of the screen not occupieing any space. Made a UI for FREEFORM questionMode Added a animated starting screen. Socket Server Added a new questionMode inside the Guess Agent gamemode now you can have freeform questions or preset Preset is same as before you will have a preset of questions to choose from and all its all like before Freeform is different you will have two buttons instead of questionPanel, you will have make guess and consume no. This gamemode is meant to be played in a vc like discord or any of your choice you can ask questions to the opponent direclty if there is a no you can just consume no and if you wanna guess you can guess. its like a offline game but you can count the nos and guess and have a agent panel to deduce Added a game starting phase where some details are created to show to the frontend. Added game cleanup functions, not perfect but will do for now Added a new event CONSUME_NO to consume no for questionMode Made some changes to type to adjust for freeform question mode EXTRA Added rate limiting in some parts In socket server rate limiting is token bucket and in nextjs rate limiting is sliding window counter (somewhat strict rate limiting in guest login and magic link) The rate limiting is handled by the same redis used for game states and stuff Fixed some bugs here and there. I know this devlog doesn’t feel personal and I only talk about the stuff I did, its because I wanna Ship this project as soon as possible and get done with it and move on to something else, because projects like this never end and you have to decide when to stop. I think next devlog will be the last devlog before the first ship"}, {"post_id": 76249, "ts": "2026-10-02T21:25:10Z", "hours": 9.7156, "text": "Devlog - 8 Big devlog, here we go again. Lets talk about nextjs first. So I added magic link to the app as the feedback I received was I don’t wanna use my google account as I don’t the trust the website enough to use it and I also want to use all the features so guest won’t work. This pushed me to add somewhat of a email login. I dont like password login so I wanted to add passwordless login and it wasn’t a debate I just picked one which is magic link. I am using resend for sending emails and i already have a domain for the app so using that for send email with auth@mydomain I created a template in resend dashboard itself so i can direclty use it in my nextjs app. Now lets talk about the big thing which made this a long devlog !!! Drum Roll please 🥁🥁🥁 I decided to restructure many parts of my socket server because of scalability as my previous architecture wouldn’t have survived If i added more gamemodes and all. What were the flaws Room was acting like if it was the party and the game Current gamemode is available is guess the agent so all the connecting modules were designed based on that which would have made adding other gamemodes impossible. There was no generic game module it was just Guess the Agent What I did Changed room to game and separated game ( previously room ) from party and added a separate events and module for party and party gets stored in redis as well. Inside the game module added a core folder where core mechanics (listener, types, service) of each game regardless of gamemode lives. Each gamemode has its own folder inside game containing the logic specific to that game. Redis player now has a partyId element too. Improved player presence (connection and disconnect) and using switch statements in places where if the mode is different some logic might be different. Why did it took so much time and What I learnt. Because when I started the restructure I didn’t know how my architecture would look like or what would work ( still haven’t tested anything ). So I researched some stuff but some stuff you decide along the way. I learnt that no matter what the project is and what you decide at the start that you are gonna build there will always be a time where the plans fail and we have to decide should we go through with it or suffer in the future or should we just focus right now and work hard so that in the future it all comes back to us with a lots of happiness!!! Cheers, Neerav"}, {"post_id": 74034, "ts": "2026-09-26T15:51:51Z", "hours": 10.095, "text": "Devlog - 7 Another Long Devlog Time So I was setting up my project to be deployed on the nest container that I have since nest only gives public ipv6 I couldn’t host my nextjs app on vercel because then I wouldn’t have been able to connect to my postgres database which was on nest as vercel dont have ipv6 support so I moved my nextjs to nestjs and It caused me hell lot of problems and bugs. First of all had to make sure nextjs, postgres and socket server were running on same docker network. My nest container was crashing when building the nextjs for docker. Had to move building process to my laptop then push the image to ghcr.io And some silly mistakes that took me long time to fix. Lets talk about the project what I update in that So first of all made a presence for managing friends online status. Added logic to connection and disconnection events of player socket. As when players connects through socket it should know whom his friends and what friend requets he got and what friends are currently online and also if he is reconnecting (For now 1minute reconnect window) the socketId should be updated in the needed area (room and player redis store). When the socket disconnects, set the socketId in player redis store to null . After the reconnect window is over check if he is in a room, if yes remove him from the room and in both cases delete the player record from redis . Also lets expand on connection syncFriends the socket requests data from an internal api route only accessible through the socket for what friendship records are there and formats it in friends: [], requests: [ incoming: [], outgoing: [] ] Then socket server retrieves all the playes using their playerid from redis via mget and then returns the same object structure but in friends its adds a online: true/false to the player objects Also removed polling for friendships as now socket does them all. So there is less db calls now. Fixed few bugs too. Now let me tell you a funny story. When testing stuff in prod, I was confused why stuff wasn’t working because it was working fine during development then i remembered I didn’t update the .env file in prod. It may have cut some years from my lifetime."}, {"post_id": 71723, "ts": "2026-09-21T11:48:59Z", "hours": 9.9617, "text": "Devlog - 6 This is gonna be a long devlog. Lets start with the frotend I committed the prev work from the previous devlog as mentioned there. Added welcome, settings page, Added friends sidebar with realtime functionalities. Added a friends store to store incoming friends invites. Fixed some file structure to have protected routes inside (protected). And mostly this covers it for frotend Now lets talk about backend that made this devlog of 10 hours Backend I first connected the socket with the player from the db via jwt tokens. Stored some player data like id, username inside socket.data. Then I changed my room mapper implementation to use player Id instead of socket Id and messed up in some places where socket Id was still getting passed to room mapper which made me spent so much time looking for what is the issue why isn’t my room details getting sent to me and I was looking in nextjs frontend for the issue. I spent so much time finding this bug I added some more events for player invites and added a new redis key:value pair -> player:playerid to store player details like id, username, socket id, roomId, lastHeartBeatAt also removed lastHeartBeatAt and reconnectToken from room player. Added events for invite, server event of invite:sync and made realtime invite work which took me forever. Made some changes in connection event so it handles reconnection Finally let me tell you something when visting the website if the thing looks small the implementation of that thing takes so much time. Bro Literally the friends sidebar took so much code to make in the frontend and in the backend and in the socket server as well. like that small piece of the page took me so much time to make which also made this devlog So long. Incountered so many bugs along the way. They were all silly mistakes some were logic error but most were silly mistakes as there are so many files in the project now its hard to find some things."}, {"post_id": 68663, "ts": "2026-09-15T14:28:10Z", "hours": 9.7922, "text": "Devlog 5 So I am now using drizzle with postgres and I also took some time to tinker with it and understand it a little better. I am also using better auth with google signIn and anonymous login. In the user i have username and name , username is for adding friends or locating a user, name is to be displayed , username is unique, name isn’t. Created the db model with friends support and matches history. We can add friends in the game also added user settings to customise stuff. Project is starting to look like something. All the drizzle + backend part that i have done in the period is committed and pushed but the frontend part still remains to be committed."}, {"post_id": 61087, "ts": "2026-09-03T20:08:51Z", "hours": 9.3056, "text": "Devlog 4 So first of all I switched from using npm to pnpm and updated the docker file accordingly for the socket server. Then I started working on adding users / db functionality in the nextjs app. I created login and register page with two options for signIn -> google or guest. I started tinkering with prisma and better auth and the prisma8 has just come so I started setting it up and had made the schema and had written up some services too but then when I tried to logIn i got few problems which I researched and searched and found out that betterAuth hasn’t adjusted to prism8. So I did what I should have done before, I switched to drizzle. Around 3-4 or more hours were wasted!. Now I’m using drizzle and have setup the schema and tables and also better auth in it and the signIn are working. Now I have to create routes or server Actions to retrieve data or send data. Now the games will be saved and stored once finished and user will able to see it in match history."}, {"post_id": 51021, "ts": "2026-08-20T14:43:00Z", "hours": 5.5508, "text": "Devlog 3 Backend Socket Server Made few changes to setting type and added a questionPool in gameState Settings now have a option to change totalQuestions and a randomly generated questionPool from the totalQuestions Removed spectator logic as not planning on pursuing it right now Also added a heartbeat event which supplies heartBeat every 5 seconds or so and if there is no heartBeat provided by the player for over 30 seconds the player gets removed from the room Now Frontend Redesigned the lobby page and home page If you open the game for the first time it asks for the name which is currently stored in localstorage for a guest user. When users are added then people would be able to login using google and save their details in database. For now nothing is stored , only gameState are persistent for the duration of the game in redis and after few minutes of inactivity in the room , the room expires via ttl. Also added SEO Optimisations. Future Plan I will either work on adding more gamemodes or adding the user authentication stuff using postgresql and prims direclty in nextjs After the auth has been added then I will publish the project so that it has atleast some complete features and users can see their stats and prev games results"}, {"post_id": 39462, "ts": "2026-08-02T12:58:48Z", "hours": 8.5258, "text": "Devlog 2 Making this devlog after a long time of doing all this work, the frontend part is still uncommited in github though Lets talk about backend first -> I first of all was using playerId for the routes to verify the user, but now I’m using socketId And also for reconnection I’m now using a reconnectToken which is created on the socket server and given to the frontend to it can pass it when reconnecting. Also I added a ROOM_KICK event. And I added docker setup too but its still buggy Changed Winning logic so that first correct guess wins Now Frontend I designed the pages using AI because I am not a good designer rather I am a good coder you can say, because if there is a already made design, I can make a similar one using tailwind and shadcn and other UI libraries I added socket setup for the frontend which goes as follow src/socket -> index.ts, emitter.ts, events.ts src/components/SocketProvider.tsx Socket Provider has the listeners emitter.ts has small functions that can be directly used inside tsx instead of importing socket There are 3 pages currently -> /, /lobby, /play"}, {"post_id": 30879, "ts": "2026-07-18T20:44:34Z", "hours": 8.6403, "text": "Devlog 1 So I’ve been working on the socket server for this game for the past couple of days. What I’ve learned so far is that game logic is sometimes so frustrating like there can be so many edge cases you have to think about and there can be many nested if else. So my tech stack for the socket server is: Socket.io IoRedis (redis hosted using docker) Zod and node httpServer Ofcourse everything is written in typescript. I didn’t made separate devlogs because I forgot, sorry for that Here’s what I did I made the folder structure moduler having different modules for different logic : room, game, question Shared files are in shared folder Each module has its own listener, service, schema with some having util/helper file I first worked on room then game then question Some things are still left to do, but first I would like to make some of the frontend"}]...
|
Title: ValoGuess by @NHero | Stardance
Devlogs:
D Title: ValoGuess by @NHero | Stardance
Devlogs:
Devlog 1 So I’ve been working on the socket server for this game for the past couple of days. What I’ve learned so far is that game logic is sometimes so frustrating like there can be so many edge cases you have to think about and there can be many nested if else. So my tech stack for the socket server is: Socket.io IoRedis (redis hosted using docker) Zod and node httpServer Ofcourse everything is written in typescript. I didn’t made separate devlogs because I forgot, sorry for that Here’s what I did I made the folder structure moduler having different modules for different logic : room, game, question Shared files are in shared folder Each module has its own listener, service, schema with some having util/helper file I first worked on room then game then question Some things are still left to do, but first I would like to make some of the frontend
Devlog 2 Making this devlog after a long time of doing all this work, the frontend part is still uncommited in github though Lets talk about backend first -> I first of all was using playerId for the routes to verify the user, but now I’m using socketId And also for reconnection I’m now using a reconnectToken which is created on the socket server and given to the frontend to it can pass it when reconnecting. Also I added a ROOM_KICK event. And I added docker setup too but its still buggy Changed Winning logic so that first correct guess wins Now Frontend I designed the pages using AI because I am not a good designer rather I am a good coder you can say, because if there is a already made design, I can make a similar one using tailwind and shadcn and other UI libraries I added socket setup for the frontend which goes as follow src/socket -> index.ts, emitter.ts, events.ts src/components/SocketProvider.tsx Socket Provider has the listeners emitter.ts has small functions that can be directly used inside tsx instead of importing socket There are 3 pages currently -> /, /lobby, /play
Devlog 3 Backend Socket Server Made few changes to setting type and added a questionPool in gameState Settings now have a option to change totalQuestions and a randomly generated questionPool from the totalQuestions Removed spectator logic as not planning on pursuing it right now Also added a heartbeat event which supplies heartBeat every 5 seconds or so and if there is no heartBeat provided by the player for over 30 seconds the player gets removed from the room Now Frontend Redesigned the lobby page and home page If you open the game for the first time it asks for the name which is currently stored in localstorage for a guest user. When users are added then people would be able to login using google and save their details in database. For now nothing is stored , only gameState are persistent for the duration of the game in redis and after few minutes of inactivity in the room , the room expires via ttl. Also added SEO Optimisations. Future Plan I will either work on adding more gamemodes or adding the user authentication stuff using postgresql and prims direclty in nextjs After the auth has been added then I will publish the project so that it has atleast some complete features and users can see their stats and prev games results
Devlog 4 So first of all I switched from using npm to pnpm and updated the docker file accordingly for the socket server. Then I started working on adding users / db functionality in the nextjs app. I created login and register page with two options for signIn -> google or guest. I started tinkering with prisma and better auth and the prisma8 has just come so I started setting it up and had made the schema and had written up some services too but then when I tried to logIn i got few problems which I researched and searched and found out that betterAuth hasn’t adjusted to prism8. So I did what I should have done before, I switched to drizzle. Around 3-4 or more hours were wasted!. Now I’m using drizzle and have setup the schema and tables and also better auth in it and the signIn are working. Now I have to create routes or server Actions to retrieve data or send data. Now the games will be saved and stored once finished and user will able to see it in match history.
Devlog 5 So I am now using drizzle with postgres and I also took some time to tinker with it and understand it a little better. I am also using better auth with google signIn and anonymous login. In the user i have username and name , username is for adding friends or locating a user, name is to be displayed , username is unique, name isn’t. Created the db model with friends support and matches history. We can add friends in the game also added user settings to customise stuff. Project is starting to look like something. All the drizzle + backend part that i have done in the period is committed and pushed but the frontend part still remains to be committed.
Devlog - 6 This is gonna be a long devlog. Lets start with the frotend I committed the prev work from the previous devlog as mentioned there. Added welcome, settings page, Added friends sidebar with realtime functionalities. Added a friends store to store incoming friends invites. Fixed some file structure to have protected routes inside (protected). And mostly this covers it for frotend Now lets talk about backend that made this devlog of 10 hours Backend I first connected the socket with the player from the db via jwt tokens. Stored some player data like id, username inside socket.data. Then I changed my room mapper implementation to use player Id instead of socket Id and messed up in some places where socket Id was still getting passed to room mapper which made me spent so much time looking for what is the issue why isn’t my room details getting sent to me and I was looking in nextjs frontend for the issue. I spent so much time finding this bug I added some more events for player invites and added a new redis key:value pair -> player:playerid to store player details like id, username, socket id, roomId, lastHeartBeatAt also removed lastHeartBeatAt and reconnectToken from room player. Added events for invite, server event of invite:sync and made realtime invite work which took me forever. Made some changes in connection event so it handles reconnection Finally let me tell you something when visting the website if the thing looks small the implementation of that thing takes so much time. Bro Literally the friends sidebar took so much code to make in the frontend and in the backend and in the socket server as well. like that small piece of the page took me so much time to make which also made this devlog So long. Incountered so many bugs along the way. They were all silly mistakes some were logic error but most were silly mistakes as there are so many files in the project now its hard to find some things.
Devlog - 7 Another Long Devlog Time So I was setting up my project to be deployed on the nest container that I have since nest only gives public ipv6 I couldn’t host my nextjs app on vercel because then I wouldn’t have been able to connect to my postgres database which was on nest as vercel dont have ipv6 support so I moved my nextjs to nestjs and It caused me hell lot of problems and bugs. First of all had to make sure nextjs, postgres and socket server were running on same docker network. My nest container was crashing when building the nextjs for docker. Had to move building process to my laptop then push the image to ghcr.io And some silly mistakes that took me long time to fix. Lets talk about the project what I update in that So first of all made a presence for managing friends online status. Added logic to connection and disconnection events of player socket. As when players connects through socket it should know whom his friends and what friend requets he got and what friends are currently online and also if he is reconnecting (For now 1minute reconnect window) the socketId should be updated in the needed area (room and player redis store). When the socket disconnects, set the socketId in player redis store to null . After the reconnect window is over check if he is in a room, if yes remove him from the room and in both cases delete the player record from redis . Also lets expand on connection syncFriends the socket requests data from an internal api route only accessible through the socket for what friendship records are there and formats it in friends: [], requests: [ incoming: [], outgoing: [] ] Then socket server retrieves all the playes using their playerid from redis via mget and then returns the same object structure but in friends its adds a online: true/false to the player objects Also removed polling for friendships as now socket does them all. So there is less db calls now. Fixed few bugs too. Now let me tell you a funny story. When testing stuff in prod, I was confused why stuff wasn’t working because it was working fine during development then i remembered I didn’t update the .env file in prod. It may have cut some years from my lifetime.
Devlog - 8 Big devlog, here we go again. Lets talk about nextjs first. So I added magic link to the app as the feedback I received was I don’t wanna use my google account as I don’t the trust the website enough to use it and I also want to use all the features so guest won’t work. This pushed me to add somewhat of a email login. I dont like password login so I wanted to add passwordless login and it wasn’t a debate I just picked one which is magic link. I am using resend for sending emails and i already have a domain for the app so using that for send email with auth@mydomain I created a template in resend dashboard itself so i can direclty use it in my nextjs app. Now lets talk about the big thing which made this a long devlog !!! Drum Roll please 🥁🥁🥁 I decided to restructure many parts of my socket server because of scalability as my previous architecture wouldn’t have survived If i added more gamemodes and all. What were the flaws Room was acting like if it was the party and the game Current gamemode is available is guess the agent so all the connecting modules were designed based on that which would have made adding other gamemodes impossible. There was no generic game module it was just Guess the Agent What I did Changed room to game and separated game ( previously room ) from party and added a separate events and module for party and party gets stored in redis as well. Inside the game module added a core folder where core mechanics (listener, types, service) of each game regardless of gamemode lives. Each gamemode has its own folder inside game containing the logic specific to that game. Redis player now has a partyId element too. Improved player presence (connection and disconnect) and using switch statements in places where if the mode is different some logic might be different. Why did it took so much time and What I learnt. Because when I started the restructure I didn’t know how my architecture would look like or what would work ( still haven’t tested anything ). So I researched some stuff but some stuff you decide along the way. I learnt that no matter what the project is and what you decide at the start that you are gonna build there will always be a time where the plans fail and we have to decide should we go through with it or suffer in the future or should we just focus right now and work hard so that in the future it all comes back to us with a lots of happiness!!! Cheers, Neerav
Devlog - 9 NextJS I added upload avatar in the settings page, user uploads an avatar and crops it accordingly , max file size limit is 5mb also the image gets uploaded to cloudinary and the secure url of the image is stored in db Changed the lobby UI to make it less cluttered Now there are drawers for gamemode settings and party stuff Changed the friends sidebar to be attaced to the right wall and closed and when you open it , it comes out of the screen not occupieing any space. Made a UI for FREEFORM questionMode Added a animated starting screen. Socket Server Added a new questionMode inside the Guess Agent gamemode now you can have freeform questions or preset Preset is same as before you will have a preset of questions to choose from and all its all like before Freeform is different you will have two buttons instead of questionPanel, you will have make guess and consume no. This gamemode is meant to be played in a vc like discord or any of your choice you can ask questions to the opponent direclty if there is a no you can just consume no and if you wanna guess you can guess. its like a offline game but you can count the nos and guess and have a agent panel to deduce Added a game starting phase where some details are created to show to the frontend. Added game cleanup functions, not perfect but will do for now Added a new event CONSUME_NO to consume no for questionMode Made some changes to type to adjust for freeform question mode EXTRA Added rate limiting in some parts In socket server rate limiting is token bucket and in nextjs rate limiting is sliding window counter (somewhat strict rate limiting in guest login and magic link) The rate limiting is handled by the same redis used for game states and stuff Fixed some bugs here and there. I know this devlog doesn’t feel personal and I only talk about the stuff I did, its because I wanna Ship this project as soon as possible and get done with it and move on to something else, because projects like this never end and you have to decide when to stop. I think next devlog will be the last devlog before the first ship
Devlog - 10 I will keep this devlog sweet and short as I wanna ship this project as soon as possible as It has taken a lot of time now. I added some more rate limiting remove game Id / party id payload where neccessary from client in socket server as game/party id can be retrieved from player stored in redis. I’m directly getting friendships from db instead of relying on nextjs api in the socket server to show the initial friends list with presence (online/offline status). Removed TTL from party and game as they may get deleted mid game (prev ttl was 10 mins). I have also added token refreshing in socket server as socket server only verifies token once so now when the token refreshes (only for when user details are mutated) socket disconnects and connects, I know this is a bad logic I will change that but 10h 37m will be logged so I don’t wanna waste any more time , so it will be in next devlog Using AVIF instead of PNG for Agents Banner & Icon Added new fields to user (tagline, banner, usernamedUpdatedAt, nameUpdatedAt) Cleaned up many of the files in the frontend party Added logic for If user changes their avatar it should delete the old image in cloudinary Added Match ending design ENV are now accessed from ENV.ts Removed console.logs etc from nexjs Fixed some bugs.
Devlog 11 So I have done lots of stuff and this is the last devlog before the first ship. Little sleepy rn as its 2:35 am my time, so I will wrap up fast. Added pino in Nextjs (Its a logger) Added caching wherever possible in nextjs using the cacheLife Added auth refresh event so if the name is changed it doesn’t need socket reconnect Optimised some code in socket server and also nextjs. Games getting saved to DB and there is a career history page now. Mostly did fixes of stuff and redesigned some elements in the lobby page. Like there is nothing else to talk about I’m mostly fixed stuff. I gotta sleep, have to ship the project too maybe I do it after waking up because readme is not ready yet. I think I’m gonna do after waking up so tired rn
Devlog 12 So I think this one is the last before ship, I promise. 😂🥹 Fixed some bugs here and there Added readme Added some bg and showcase photos Added a layout for the home pages (lobby, settings, leaderboard, match history) where the top navbar and the friend sidebar is given to all. I think that’s it. I got no friends, or the friends I have aren’t like best of friends So I wasn’t able to test the game on scale. Feel free to open a issue in github or message me on slack
Ships:
I built ValoGuess , a real-time multiplayer Valorant guessing game inspired by guessing videos on youtube (VCT Pacific). Players can challenge friends in 1v1 matches, eliminate agents, ask questions, and race to identify their opponent’s secret agent. It includes party lobbies, friend invites, real-time chat, player profiles, and match history. The most challenging part was building the real-time backend: synchronizing game state between players, handling disconnects and reconnections, hiding secret agents from opponents, and managing live state with Socket.IO and Redis. I’m proud of building the full experience from the game UI to the backend architecture, with separate Next.js and Socket.IO server repositories. Try it: Visit https://valoguess.fun , sign in or continue as a guest, and invite a friend for a match. Atleast one extra friend is needed or a different browser or incognito tab....
|
1793051402.1555357
|
1793137802.1555357
|
|
68810
|
reflexclock by @akshat_singh1738 | Stardance
|
akshat_singh1738
|
0
|
0.7
|
0
|
[]
|
[{"post_id": 81266, "ts": "202 [{"post_id": 81266, "ts": "2026-10-20T15:24:40Z", "hours": 0.7008, "text": "devlog 1: worked on the pcb design for my relfex test based alarm . So the idea for my alarm is that you need to take a quick reflex test to stop it and this wakes you up fully! Today i worked on learning kicad and how pcb design works and then designed the pcb with the help of the guide!"}]...
|
Title: reflexclock by @akshat_singh1738 | Stardanc Title: reflexclock by @akshat_singh1738 | Stardance
Devlogs:
devlog 1: worked on the pcb design for my relfex test based alarm . So the idea for my alarm is that you need to take a quick reflex test to stop it and this wakes you up fully! Today i worked on learning kicad and how pcb design works and then designed the pcb with the help of the guide!...
|
1793126955.6026976
|
1793731755.6026976
|
|
6278
|
Card it! by @Potyi | Stardance
|
Potyi
|
0
|
72.17
|
0
|
[]
|
[{"post_id": 81268, "ts": "202 [{"post_id": 81268, "ts": "2026-10-20T15:25:56Z", "hours": 2.9333, "text": "a lot of bug fix, added difficulties easy - 5 discards medium - 3 discards hard - 1 discard started working on music"}, {"post_id": 70654, "ts": "2026-09-19T15:02:50Z", "hours": 3.8, "text": "added more sounds, click sound, settings menu added, bug fixes"}, {"post_id": 65949, "ts": "2026-09-11T12:52:58Z", "hours": 8.2, "text": "added sounds to almost everything, a lot of big mug fixes, card animation added"}, {"post_id": 62363, "ts": "2026-09-05T18:08:43Z", "hours": 4.5667, "text": "added a console where you can control a lot of stuff with commands, more commands will come later made some bug fixes and completly reworked how the card playing mechanic worked so its now more stable and you can select cards instead of instant playing them out, wil add animation to that later"}, {"post_id": 60842, "ts": "2026-09-03T13:53:49Z", "hours": 4.4667, "text": "Added animation to the non attack cards after they played, some bug fixes"}, {"post_id": 57603, "ts": "2026-08-29T20:10:40Z", "hours": 5.2, "text": "added different types of card effects, card menu, great animation to the card menu"}, {"post_id": 52624, "ts": "2026-08-22T20:54:40Z", "hours": 5.1667, "text": "added new attack animation, fixed bugs like you can play out a card after u just played out one, and enemy now attacks and the game cycles"}, {"post_id": 47527, "ts": "2026-08-15T14:25:42Z", "hours": 5.6, "text": "i added animations to the attacks"}, {"post_id": 33664, "ts": "2026-07-23T19:20:57Z", "hours": 8.4667, "text": "-A lot of bug fixes -enemylevel based enemy damage, the bigger the level of the enemy is, the more damage it deals -levelup -shop where you can buy card level ups -gold earning -game cycle -timer -you can defeat the enemy if the timer runs out and you have more hp or killing, if you have less hp when the timer runs out you lose, or if it kills you, if you have same hp when the timer runs out then plus 30sec -started making animations for the attacks sorry i only uploaded a picture of the shop but i wasnt able to post a video (if you have any idea that would make the game more fun please tell me it)"}, {"post_id": 25257, "ts": "2026-07-09T12:34:18Z", "hours": 3.6333, "text": "i added animations to all the characters, and the animations play during the game on interact (yet only the attack animation works but later i add all)"}, {"post_id": 16997, "ts": "2026-06-27T16:05:46Z", "hours": 3.0, "text": "some bug fixes and added that if you start to fight with an enemy the chosen enemy will spawn"}, {"post_id": 14324, "ts": "2026-06-23T12:40:15Z", "hours": 3.0333, "text": "i added a new ui for when you start a run as you can see you can only play with the enemies that you unlocked"}, {"post_id": 7673, "ts": "2026-06-12T20:24:06Z", "hours": 3.9, "text": "Using bug fixed, after you use a card you get a new one i know it took long but i just didnt knew how to do it and spent hours finding out what even is the problem"}, {"post_id": 4144, "ts": "2026-06-07T10:56:13Z", "hours": 3.4, "text": "a debugged the the menu and added that you can start the game, and the deck shuffles and gives you the first two cards from it, and you can “use” those cards"}, {"post_id": 3404, "ts": "2026-06-06T09:56:42Z", "hours": 2.6333, "text": "i added that you can move anything on the screen and interact with them, and started making the ui i know it took me a long time but i learned how to do it while making it so yea"}, {"post_id": 2733, "ts": "2026-06-05T14:20:16Z", "hours": 0.9, "text": "i added new use cards"}, {"post_id": 2314, "ts": "2026-06-04T18:55:16Z", "hours": 1.5333, "text": "i added use card designs and made a simple drag and drop system but thats temporary so i dont post it yet"}, {"post_id": 2123, "ts": "2026-06-04T13:33:41Z", "hours": 1.4, "text": "i added new character cards, that will be shown during fight"}, {"post_id": 1580, "ts": "2026-06-03T18:00:38Z", "hours": 0.3333, "text": "i made a template card that later i can easily modify to other versions"}]...
|
Title: Card it! by @Potyi | Stardance
Devlogs:
i Title: Card it! by @Potyi | Stardance
Devlogs:
i made a template card that later i can easily modify to other versions
i added new character cards, that will be shown during fight
i added use card designs and made a simple drag and drop system but thats temporary so i dont post it yet
i added new use cards
i added that you can move anything on the screen and interact with them, and started making the ui i know it took me a long time but i learned how to do it while making it so yea
a debugged the the menu and added that you can start the game, and the deck shuffles and gives you the first two cards from it, and you can “use” those cards
Using bug fixed, after you use a card you get a new one i know it took long but i just didnt knew how to do it and spent hours finding out what even is the problem
i added a new ui for when you start a run as you can see you can only play with the enemies that you unlocked
some bug fixes and added that if you start to fight with an enemy the chosen enemy will spawn
i added animations to all the characters, and the animations play during the game on interact (yet only the attack animation works but later i add all)
-A lot of bug fixes -enemylevel based enemy damage, the bigger the level of the enemy is, the more damage it deals -levelup -shop where you can buy card level ups -gold earning -game cycle -timer -you can defeat the enemy if the timer runs out and you have more hp or killing, if you have less hp when the timer runs out you lose, or if it kills you, if you have same hp when the timer runs out then plus 30sec -started making animations for the attacks sorry i only uploaded a picture of the shop but i wasnt able to post a video (if you have any idea that would make the game more fun please tell me it)
i added animations to the attacks
added new attack animation, fixed bugs like you can play out a card after u just played out one, and enemy now attacks and the game cycles
added different types of card effects, card menu, great animation to the card menu
Added animation to the non attack cards after they played, some bug fixes
added a console where you can control a lot of stuff with commands, more commands will come later made some bug fixes and completly reworked how the card playing mechanic worked so its now more stable and you can select cards instead of instant playing them out, wil add animation to that later
added sounds to almost everything, a lot of big mug fixes, card animation added
added more sounds, click sound, settings menu added, bug fixes
a lot of bug fix, added difficulties easy - 5 discards medium - 3 discards hard - 1 discard started working on music...
|
1792781291.7578242
|
1793386091.7578242
|
|
69847
|
Pet by @singhshiv3108 | Stardance
|
singhshiv3108
|
0
|
3.06
|
0
|
[]
|
[{"post_id": 81270, "ts": "202 [{"post_id": 81270, "ts": "2026-10-20T15:33:07Z", "hours": 1.57, "text": "DEVLOG3: In this devlog i added dragging, idling, flipping at the border , text and shaders."}, {"post_id": 80957, "ts": "2026-10-19T11:53:15Z", "hours": 1.0147, "text": "DEVLOG 2: Added my own sprite and movement, it took me time to finalize sprite ( i made several) and also my movement code wasnt working later i realised i didnt even attached the script 😭."}, {"post_id": 80165, "ts": "2026-10-16T14:19:00Z", "hours": 0.4753, "text": "DEVLOG 1: In this log , I did basic setup and added sprite (temporary sprite I am looking forward to make my own currently I have no idea what theme I should select) and also I added animation and collision body."}]...
|
Title: Pet by @singhshiv3108 | Stardance
Devlogs: Title: Pet by @singhshiv3108 | Stardance
Devlogs:
DEVLOG 1: In this log , I did basic setup and added sprite (temporary sprite I am looking forward to make my own currently I have no idea what theme I should select) and also I added animation and collision body.
DEVLOG 2: Added my own sprite and movement, it took me time to finalize sprite ( i made several) and also my movement code wasnt working later i realised i didnt even attached the script 😭.
DEVLOG3: In this devlog i added dragging, idling, flipping at the border , text and shaders....
|
1792860518.3279607
|
1793465318.3279607
|
|
69462
|
My awesome HackPad! by @Leon_know | Stardance
|
Leon_know
|
0
|
26.35
|
0
|
[]
|
[{"post_id": 81276, "ts": "202 [{"post_id": 81276, "ts": "2026-10-20T16:10:23Z", "hours": 3.1183, "text": "Finished my 3D design. What do you think? :)"}, {"post_id": 81103, "ts": "2026-10-19T21:30:59Z", "hours": 1.8056, "text": "I made a weele."}, {"post_id": 80809, "ts": "2026-10-18T20:57:53Z", "hours": 4.42, "text": "My Head Hurts… Spent a lot of time just learning Fusion today, and I think I’m going to have a fever tomorrow."}, {"post_id": 80512, "ts": "2026-10-17T22:48:27Z", "hours": 1.9822, "text": "Designing, designing, designing, … Designing the 2D sketch of the 3D model and that’s it."}, {"post_id": 80255, "ts": "2026-10-16T23:11:10Z", "hours": 1.6958, "text": "It’s 1am, you should go to sleep I spent the first hours of the morning putting switches and keycaps on my board in Fusion. It took me some time to get it set up and used to it, but I’m getting the hang of it."}, {"post_id": 80212, "ts": "2026-10-16T19:18:10Z", "hours": 0.7761, "text": "FINISHED THE PCB Finally finished the PCB! It took some time, but it was worth the effort; I can’t find a single flaw with it."}, {"post_id": 80008, "ts": "2026-10-15T23:12:02Z", "hours": 4.7556, "text": "Still PCB designing Almost finished with the board. It took me about 12 hours to get to this point, but I’m happy with the outcome. I really took my time with tracing, but it looks amazing. I hope 3D modeling is going to go a bit faster, though."}, {"post_id": 79750, "ts": "2026-10-15T08:41:57Z", "hours": 2.1381, "text": "I continued with my PCB by making traces. Next up is making the shape of the board and creating the ground plane, but I still need to figure out how to do that."}, {"post_id": 79658, "ts": "2026-10-14T22:59:46Z", "hours": 3.3756, "text": "Today, I was working on the PCB for my design. I concluded that I won’t have enough ports to use two rotary encoders, so I removed one. I also updated the design accordingly. In the end, I finished the schematic and started routing the PCB. I still have to figure out how to make a breakout board. Does anyone have a good tutorial or tips?"}, {"post_id": 79487, "ts": "2026-10-14T08:22:30Z", "hours": 0.8953, "text": "I was making an electrical schematic for my HackPad, and I ran into an issue when connecting all the components to the controller, as there are not enough pins. I have: dispaly(2 pins), 3x3 matrix(6 pins), rgb leds(1 pin) and 2 rotary encoders(4 pins, the buttons are in the matrix). The controler has 11 data pins but I need 13. Can someone help?"}, {"post_id": 79402, "ts": "2026-10-13T20:26:58Z", "hours": 0.9164, "text": "Finishing the day by creating an overall design for the hackPad to give myself an idea of how to build the PCB and case. I ended up with the idea of making a breakout board that I can connect with some wires to the main board and mount one of the rotary encoders on the side. Also im wondering what you guys use to make quick design, personally use draw.io ."}, {"post_id": 79363, "ts": "2026-10-13T17:27:33Z", "hours": 0.4692, "text": "My first PCB design."}]...
|
Title: My awesome HackPad! by @Leon_know | Stardan Title: My awesome HackPad! by @Leon_know | Stardance
Devlogs:
My first PCB design.
Finishing the day by creating an overall design for the hackPad to give myself an idea of how to build the PCB and case. I ended up with the idea of making a breakout board that I can connect with some wires to the main board and mount one of the rotary encoders on the side. Also im wondering what you guys use to make quick design, personally use draw.io .
I was making an electrical schematic for my HackPad, and I ran into an issue when connecting all the components to the controller, as there are not enough pins. I have: dispaly(2 pins), 3x3 matrix(6 pins), rgb leds(1 pin) and 2 rotary encoders(4 pins, the buttons are in the matrix). The controler has 11 data pins but I need 13. Can someone help?
Today, I was working on the PCB for my design. I concluded that I won’t have enough ports to use two rotary encoders, so I removed one. I also updated the design accordingly. In the end, I finished the schematic and started routing the PCB. I still have to figure out how to make a breakout board. Does anyone have a good tutorial or tips?
I continued with my PCB by making traces. Next up is making the shape of the board and creating the ground plane, but I still need to figure out how to do that.
Still PCB designing Almost finished with the board. It took me about 12 hours to get to this point, but I’m happy with the outcome. I really took my time with tracing, but it looks amazing. I hope 3D modeling is going to go a bit faster, though.
FINISHED THE PCB Finally finished the PCB! It took some time, but it was worth the effort; I can’t find a single flaw with it.
It’s 1am, you should go to sleep I spent the first hours of the morning putting switches and keycaps on my board in Fusion. It took me some time to get it set up and used to it, but I’m getting the hang of it.
Designing, designing, designing, … Designing the 2D sketch of the 3D model and that’s it.
My Head Hurts… Spent a lot of time just learning Fusion today, and I think I’m going to have a fever tomorrow.
I made a weele.
Finished my 3D design. What do you think? :)...
|
1792849851.7541702
|
1793454651.7541702
|
|
70649
|
Stardance Setup by @prathameshpvp | Stardance
|
prathameshpvp
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T16:15:04Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "PRATHAMESH.EXE — building my own little corner of the internet ✦ There’s something special about creating a place on the internet that feels entirely your own. PRATHAMESH.EXE started with a simple idea: what if my portfolio felt less like a résumé and more like stepping into a tiny digital world? Inspired by the early internet, Y2K aesthetics, and old-school terminal interfaces, I’ve been shaping it with dark backgrounds, neon pink and purple, pixel typography, and a boot sequence that makes opening a website feel a little like starting up a computer from another era. But I don’t want it to be nostalgia for the sake of nostalgia. I want it to grow with me — a home for my projects, experiments, ideas, and everything I’m still figuring out how to build. Along the way, I’m learning that good design is about more than making something look interesting. Every animation, font, and interaction should have a purpose. There’s still plenty to build, break, rethink, and improve. And honestly, that’s my favourite part. For now, the system is booting.", "repo": "https://github.com/prathameshparkhi/personal-website", "demo": "https://coeus-exoplanet-classifier.streamlit.app/"}]...
|
[{"post_id": 81277, "ts": "202 [{"post_id": 81277, "ts": "2026-10-20T16:11:28Z", "hours": 2.0761, "text": "I wanted to make my personal website feel less like a standard portfolio and more like a little digital world of its own. I went with a Y2K-inspired aesthetic, using a black background, neon pink and purple accents, Press Start 2P, and Space Mono to create that retro terminal feel. I also worked on the startup sequence, with messages like “INITIALISING SYSTEM…” and “LOADING STARFIELD…”, alongside a terminal-inspired layout for blog posts and development logs. One of the main things I’m trying to get right is balancing the visual effects with usability. I want the website to have personality without becoming cluttered or difficult to navigate. Next up: refining the responsive layout, polishing the interactions, and making the project sections feel more complete."}]...
|
Title: Stardance Setup by @prathameshpvp | Stardan Title: Stardance Setup by @prathameshpvp | Stardance
Devlogs:
I wanted to make my personal website feel less like a standard portfolio and more like a little digital world of its own. I went with a Y2K-inspired aesthetic, using a black background, neon pink and purple accents, Press Start 2P, and Space Mono to create that retro terminal feel. I also worked on the startup sequence, with messages like “INITIALISING SYSTEM…” and “LOADING STARFIELD…”, alongside a terminal-inspired layout for blog posts and development logs. One of the main things I’m trying to get right is balancing the visual effects with usability. I want the website to have personality without becoming cluttered or difficult to navigate. Next up: refining the responsive layout, polishing the interactions, and making the project sections feel more complete.
Ships:
PRATHAMESH.EXE — building my own little corner of the internet ✦ There’s something special about creating a place on the internet that feels entirely your own. PRATHAMESH.EXE started with a simple idea: what if my portfolio felt less like a résumé and more like stepping into a tiny digital world? Inspired by the early internet, Y2K aesthetics, and old-school terminal interfaces, I’ve been shaping it with dark backgrounds, neon pink and purple, pixel typography, and a boot sequence that makes opening a website feel a little like starting up a computer from another era. But I don’t want it to be nostalgia for the sake of nostalgia. I want it to grow with me — a home for my projects, experiments, ideas, and everything I’m still figuring out how to build. Along the way, I’m learning that good design is about more than making something look interesting. Every animation, font, and interaction should have a purpose. There’s still plenty to build, break, rethink, and improve. And honestly, that’s my favourite part. For now, the system is booting....
|
1793008333.6753273
|
1793094733.6753273
|
|
16025
|
MediaPipe Hand Mouse but In java by @ShauryaMathur MediaPipe Hand Mouse but In java by @ShauryaMathur | Stardance...
|
ShauryaMathur
|
1
|
8.0
|
85
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T16:08:02Z", "hours": 8.0, "multiplier": 10.19, "payout": 85, "blessing": "neutral", "text": "StarkMouse - High-Performance Hand Tracking System AP Computer Science A Final Project StarkMouse is an advanced gesture-controlled cursor controller that allows users to operate their computer mouse hands-free. Using MediaPipe and OpenCV on a native C++ backend combined with a Java Swing overlay HUD, the application tracks hand movements, applies coordinate smoothing, and detects finger-pinch gestures to trigger mouse actions. 1. How to Use the Program Prerequisites Java Runtime Environment (JRE) / JDK 17 or higher A working Webcam Windows OS (64-bit) for native dynamic library compatibility ( stark_mouse_jni.dll and opencv_world3416.dll must be in the project root directory) How to Build and Run To build the project and execute the MainApp entry point: Open a terminal in the root directory. Compile and package the application: mvn package Run the generated executable JAR containing all dependencies: java -jar target/stark-mouse-1.0.0-jar-with-dependencies.jar Controls and Gestures Mouse Movement : Hold your hand in front of the webcam. Your cursor will follow the position of the base of your middle finger This anchor was specifically chosen to prevent cursor jumping when fingers pinch. Left Click / Click-and-Drag : Pinch your Thumb and Index Finger together. Releasing the pinch releases the mouse button. Right Click : Pinch your Thumb and Middle Finger together. Mouse Scrolling (Scroll Mode) : Pinch your Thumb and Pinky Finger together. While holding the pinch, move your hand vertically: Moving your hand up scrolls up. Moving your hand down scrolls down. While scrolling, mouse cursor movement is locked to prevent cursor drift. Toggle HUD Overlay (Ctrl+Shift+G) : Press this global hotkey to show or hide the Swing HUD window displaying the camera feed and landmarks. Repositioning HUD : Click and drag anywhere on the HUD panel to move the floating window across your desktop screen. 2. Problems Encountered During Development The “java being anti cv” bottleneck : Initially we planned on using a method called convex hulling to detect fingers as before libraries such as mediapipe that was a common finger detection method. We then realised that convexHull was terrible and we became primary sources as to why libraries such as MediaPipe have been developed. We then tried to bend the rules of the project by calling a python script running mediapipe detection. Our idea was quickly shut down. Our final option was taking the c++ library that was wrapped for python and creating a Java Native Interface from it using a tool called bezelisk. This process took a total of 5 hours, 10 gigabites of Shaurya Mathur’s hotspot and our mental stanities. Once we finally got bezel instealled and working with our library we learned that c++ itself is annoying. Initially, running the Mediapipe tracker and the JNI JVM invocation on the same thread blocked the Swing event thread, resulting in a frozen UI. We resolved this by spawning a separate native execution thread ( std::thread ) in the DLL, calling AttachCurrentThread to register it with the Java VM, and passing frames asynchronously.", "repo": "https://github.com/T-Perm/Ap-CSA-Final-Jarvis", "demo": "https://github.com/T-Perm/Ap-CSA-Final-Jarvis/releases/tag/v1.0.0"}]...
|
[{"post_id": 8128, "ts": "2026 [{"post_id": 8128, "ts": "2026-06-13T15:57:43Z", "hours": 2.9525, "text": "I finally finished the project and submitted it to my teacher. I genuinely got a 95% compared to others who had just recreated games as their project. I’m not mad but rather disappointed that lack of creativity is being celebrated. Its okay tho because here are the changes Change 1: No detecting how many fingers are held up but rather distance between fingers Change 2: JavaSwing UI with a jarvis style bootup Change 3: fixed double clicking and related problems"}, {"post_id": 6531, "ts": "2026-06-10T23:50:19Z", "hours": 5.3514, "text": "My CSA final project is due in an hour. Instead of working on a game in (Trigger warning) java s*ing I’m building an app that turns your gestures into mouse commands. I started with a group of 3 but I have been the only one who has done any work. Its due in 6 hours wish me luck"}]...
|
Title: MediaPipe Hand Mouse but In java by @Shaury Title: MediaPipe Hand Mouse but In java by @ShauryaMathur | Stardance
Devlogs:
My CSA final project is due in an hour. Instead of working on a game in (Trigger warning) java s*ing I’m building an app that turns your gestures into mouse commands. I started with a group of 3 but I have been the only one who has done any work. Its due in 6 hours wish me luck
I finally finished the project and submitted it to my teacher. I genuinely got a 95% compared to others who had just recreated games as their project. I’m not mad but rather disappointed that lack of creativity is being celebrated. Its okay tho because here are the changes Change 1: No detecting how many fingers are held up but rather distance between fingers Change 2: JavaSwing UI with a jarvis style bootup Change 3: fixed double clicking and related problems
Ships:
StarkMouse - High-Performance Hand Tracking System AP Computer Science A Final Project StarkMouse is an advanced gesture-controlled cursor controller that allows users to operate their computer mouse hands-free. Using MediaPipe and OpenCV on a native C++ backend combined with a Java Swing overlay HUD, the application tracks hand movements, applies coordinate smoothing, and detects finger-pinch gestures to trigger mouse actions. 1. How to Use the Program Prerequisites Java Runtime Environment (JRE) / JDK 17 or higher A working Webcam Windows OS (64-bit) for native dynamic library compatibility ( stark_mouse_jni.dll and opencv_world3416.dll must be in the project root directory) How to Build and Run To build the project and execute the MainApp entry point: Open a terminal in the root directory. Compile and package the application: mvn package Run the generated executable JAR containing all dependencies: java -jar target/stark-mouse-1.0.0-jar-with-dependencies.jar Controls and Gestures Mouse Movement : Hold your hand in front of the webcam. Your cursor will follow the position of the base of your middle finger This anchor was specifically chosen to prevent cursor jumping when fingers pinch. Left Click / Click-and-Drag : Pinch your Thumb and Index Finger together. Releasing the pinch releases the mouse button. Right Click : Pinch your Thumb and Middle Finger together. Mouse Scrolling (Scroll Mode) : Pinch your Thumb and Pinky Finger together. While holding the pinch, move your hand vertically: Moving your hand up scrolls up. Moving your hand down scrolls down. While scrolling, mouse cursor movement is locked to prevent cursor drift. Toggle HUD Overlay (Ctrl+Shift+G) : Press this global hotkey to show or hide the Swing HUD window displaying the camera feed and landmarks. Repositioning HUD : Click and drag anywhere on the HUD panel to move the floating window across your desktop screen. 2. Problems Encountered During Development The “java being anti cv” bottleneck : Initially we planned on using a method called convex hulling to detect fingers as before libraries such as mediapipe that was a common finger detection method. We then realised that convexHull was terrible and we became primary sources as to why libraries such as MediaPipe have been developed. We then tried to bend the rules of the project by calling a python script running mediapipe detection. Our idea was quickly shut down. Our final option was taking the c++ library that was wrapped for python and creating a Java Native Interface from it using a tool called bezelisk. This process took a total of 5 hours, 10 gigabites of Shaurya Mathur’s hotspot and our mental stanities. Once we finally got bezel instealled and working with our library we learned that c++ itself is annoying. Initially, running the Mediapipe tracker and the JNI JVM invocation on the same thread blocked the Swing event thread, resulting in a frozen UI. We resolved this by spawning a separate native execution thread ( std::thread ) in the DLL, calling AttachCurrentThread to register it with the Java VM, and passing frames asynchronously....
|
1793123514.491949
|
1793209914.491949
|
|
70655
|
handybits by @aryanscode | Stardance
|
aryanscode
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T16:41:39Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "yay shipped", "repo": "https://github.com/aryanscodingden/handybits", "demo": "https://handybits.vercel.app"}]...
|
[{"post_id": 81281, "ts": "202 [{"post_id": 81281, "ts": "2026-10-20T16:40:07Z", "hours": 4.2658, "text": "I was very sketchy about uploading random shit to websites, so I coded a toolkit where, locally, you can upload stuff, and it can be done all locally. For example: remove background, sign a PDF. everything that every other tool on the website on the internet needs. It uploads the files to a server and then to the dark web, so I didn’t want that. I just coded this over the weekend."}]...
|
Title: handybits by @aryanscode | Stardance
Devlo Title: handybits by @aryanscode | Stardance
Devlogs:
I was very sketchy about uploading random shit to websites, so I coded a toolkit where, locally, you can upload stuff, and it can be done all locally. For example: remove background, sign a PDF. everything that every other tool on the website on the internet needs. It uploads the files to a server and then to the dark web, so I didn’t want that. I just coded this over the weekend.
Ships:
yay shipped...
|
1793008334.779627
|
1793094734.779627
|
|
68827
|
FortWare Game by @tanay_savarna | Stardance
|
tanay_savarna
|
0
|
1.56
|
0
|
[]
|
[{"post_id": 81283, "ts": "202 [{"post_id": 81283, "ts": "2026-10-20T16:43:40Z", "hours": 0.5281, "text": "Devlog 2: Newer title-screen for the game! After looking through for more inspiration and looking at other’s projects I felt like the title looked too basic and didn’t symbolize the funny aspect of the game (that is still in progress) so I wanted to make a completely new version with my favourite character fishtick. Also I have started creating the level scenes so be ready for the best game in existence!!!"}, {"post_id": 80948, "ts": "2026-10-19T10:43:59Z", "hours": 1.0325, "text": "Devlog 1: Title-screen for the game. I started by doing what the guide actually told me to but I soon realised it looked kinda boring and I needed to add a cool video-game aspect that made it unique like the other cool ones i checked for inspiration. So then I landed on the idea of Fortnite and this is the first draft of the title screen, hope you guys like it!"}]...
|
Title: FortWare Game by @tanay_savarna | Stardance Title: FortWare Game by @tanay_savarna | Stardance
Devlogs:
Devlog 1: Title-screen for the game. I started by doing what the guide actually told me to but I soon realised it looked kinda boring and I needed to add a cool video-game aspect that made it unique like the other cool ones i checked for inspiration. So then I landed on the idea of Fortnite and this is the first draft of the title screen, hope you guys like it!
Devlog 2: Newer title-screen for the game! After looking through for more inspiration and looking at other’s projects I felt like the title looked too basic and didn’t symbolize the funny aspect of the game (that is still in progress) so I wanted to make a completely new version with my favourite character fishtick. Also I have started creating the level scenes so be ready for the best game in existence!!!...
|
1793126987.4703832
|
1793731787.4703832
|
|
60250
|
Lets Learn Algebra by @frenchwizz | Stardance
|
frenchwizz
|
0
|
13.71
|
0
|
[]
|
[{"post_id": 81285, "ts": "202 [{"post_id": 81285, "ts": "2026-10-20T16:47:07Z", "hours": 0.3667, "text": "(Supposed to be 2 hrs) Added a Next.JS changelog Currently hosted at frenchwizz.hackclub.app"}, {"post_id": 81036, "ts": "2026-10-19T17:04:17Z", "hours": 6.7322, "text": "I moved my chat app over to TS with Supabase server proxy."}, {"post_id": 64956, "ts": "2026-09-09T18:10:10Z", "hours": 6.6072, "text": "I started to make a blog!"}]...
|
Title: Lets Learn Algebra by @frenchwizz | Stardan Title: Lets Learn Algebra by @frenchwizz | Stardance
Devlogs:
I started to make a blog!
I moved my chat app over to TS with Supabase server proxy.
(Supposed to be 2 hrs) Added a Next.JS changelog Currently hosted at frenchwizz.hackclub.app...
|
1793033360.6008203
|
1793638160.6008203
|
|
69049
|
Wish sender by @sarthak_jnj | Stardance
|
sarthak_jnj
|
1
|
4.35
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-11T14:16:50Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "It is supposed to be a bot that automatically runs with your device startup, checks it’s own history and then executes the command to send a specific message & image to a defined contact on WhatsApp. I personally kept it at 9 days as a small fun project to tease a friend during a 9-day long indian traditional festival. The messages, phone number, file location and photos can easily be replaced. The difficulty for me was the new experience, making projects itself is a new thing for me I’ve recently added to my timeline, and i prefer hardware mostly so I’m not much experienced with software work and working with so many libraries, that’s why this project is more of a reminder that “you have to do this today too. just keep an eye if something goes wrong” rather than something dealing with itself in the background. What i am proud of can be that i learnt the JSON thing for this project solely but practice rather than any theory reading. and even tho i used an AI to guide me, i genuinely found a lot of troubles and came up with 3-4 creative workarounds by the end and completely made the structure myself even if i asked the specific commands from AI. For those trying this, it is easy to use as it is, just make sure you already have logged into WhatsApp, adjust the pixel locations according to your device as given in README.md, increase time.sleep() if you think your device/network is taking too long. adjust the file location before running it and don’t use it to actually mess with someone, it’s supposed to be something for a joke, not to irritate anyone (unless they’re a close friend)", "repo": "https://github.com/Sarthak-jnj/Just-a-wishing-bot", "demo": "https://github.com/Sarthak-jnj/Just-a-wishing-bot/blob/main/Demo.zip"}]...
|
[{"post_id": 81289, "ts": "202 [{"post_id": 81289, "ts": "2026-10-20T17:20:08Z", "hours": 0.3531, "text": "Just worked up with a needed demo to quick install the files."}, {"post_id": 78728, "ts": "2026-10-11T12:36:51Z", "hours": 1.4719, "text": "Devlog Post-final Yeah…..so i discovered some more issues. primarily the WhatsApp’s internal safeguard to prevent automated bots from attaching files. had to work around that. should definetly be final devlog tho."}, {"post_id": 78665, "ts": "2026-10-11T07:05:07Z", "hours": 0.4492, "text": "Devlog final: Finished it up and set the GitHub repository, although forgot to record that on lapse. run a test once to ensure it’s working too. Link on the project page"}, {"post_id": 78424, "ts": "2026-10-10T19:29:56Z", "hours": 1.8186, "text": "Devlog 1 Pretty much completed the thing; it took me more time than expected. Since it’s late, I’ll just finish up a few remaining adjustments tomorrow morning and post a GitHub repo. A basic WhatsApp bot that scans the date every time you turn your computer on and will send a wish to any defined number through WhatsApp, if you turn your pc on a second time the same day it won’t trigger. Feel free to use it as a meme with friends or genuinely with family (once i finish up tomorrow). Was kinda a micro-fun-project, nothing serious."}]...
|
Title: Wish sender by @sarthak_jnj | Stardance
De Title: Wish sender by @sarthak_jnj | Stardance
Devlogs:
Devlog 1 Pretty much completed the thing; it took me more time than expected. Since it’s late, I’ll just finish up a few remaining adjustments tomorrow morning and post a GitHub repo. A basic WhatsApp bot that scans the date every time you turn your computer on and will send a wish to any defined number through WhatsApp, if you turn your pc on a second time the same day it won’t trigger. Feel free to use it as a meme with friends or genuinely with family (once i finish up tomorrow). Was kinda a micro-fun-project, nothing serious.
Devlog final: Finished it up and set the GitHub repository, although forgot to record that on lapse. run a test once to ensure it’s working too. Link on the project page
Devlog Post-final Yeah…..so i discovered some more issues. primarily the WhatsApp’s internal safeguard to prevent automated bots from attaching files. had to work around that. should definetly be final devlog tho.
Just worked up with a needed demo to quick install the files.
Ships:
It is supposed to be a bot that automatically runs with your device startup, checks it’s own history and then executes the command to send a specific message & image to a defined contact on WhatsApp. I personally kept it at 9 days as a small fun project to tease a friend during a 9-day long indian traditional festival. The messages, phone number, file location and photos can easily be replaced. The difficulty for me was the new experience, making projects itself is a new thing for me I’ve recently added to my timeline, and i prefer hardware mostly so I’m not much experienced with software work and working with so many libraries, that’s why this project is more of a reminder that “you have to do this today too. just keep an eye if something goes wrong” rather than something dealing with itself in the background. What i am proud of can be that i learnt the JSON thing for this project solely but practice rather than any theory reading. and even tho i used an AI to guide me, i genuinely found a lot of troubles and came up with 3-4 creative workarounds by the end and completely made the structure myself even if i asked the specific commands from AI. For those trying this, it is easy to use as it is, just make sure you already have logged into WhatsApp, adjust the pixel locations according to your device as given in README.md, increase time.sleep() if you think your device/network is taking too long. adjust the file location before running it and don’t use it to actually mess with someone, it’s supposed to be something for a joke, not to irritate anyone (unless they’re a close friend)...
|
1793062383.3327
|
1793148783.3327
|
|
64411
|
SmolPadV1 by @mandeepswami | Stardance
|
mandeepswami
|
0
|
20.53
|
0
|
[]
|
[{"post_id": 81291, "ts": "202 [{"post_id": 81291, "ts": "2026-10-20T17:44:09Z", "hours": 1.8058, "text": "made a final hole for knob"}, {"post_id": 77536, "ts": "2026-10-07T11:14:10Z", "hours": 1.1169, "text": "Changed footprints as they were diffrent from the ones used in hacpad kit"}, {"post_id": 76607, "ts": "2026-10-04T04:53:11Z", "hours": 4.3603, "text": "Yeah i forgot to record half of the case , the firmware and the readme and BOM . Lost lot of time but i used Visual Studio code for the firmware and reame , bom so i didnt lose that time but now the project is complete and is looking good and now i will ship it"}, {"post_id": 73982, "ts": "2026-09-26T13:37:43Z", "hours": 3.3003, "text": "The case is almost complete just the backside is left and i am thingking of a adding a hackclub logo"}, {"post_id": 73548, "ts": "2026-09-25T11:25:27Z", "hours": 1.5836, "text": "Completed Routing"}, {"post_id": 73173, "ts": "2026-09-24T15:09:29Z", "hours": 2.8781, "text": "Currently routing copper traces"}, {"post_id": 72704, "ts": "2026-09-23T15:20:06Z", "hours": 1.2669, "text": "https://www.youtube.com/watch?v=8WXpGTIbxlQ using his guide to make it"}, {"post_id": 72648, "ts": "2026-09-23T12:45:04Z", "hours": 1.5669, "text": "Finnally started on my own hackpad . using https://wiki.ai03.com/books/pcb-design/page/pcb-guide-part-3---creating-the-mcu-schematic guide"}, {"post_id": 72304, "ts": "2026-09-22T16:58:58Z", "hours": 1.6147, "text": "Creating my case"}, {"post_id": 71845, "ts": "2026-09-21T17:11:04Z", "hours": 1.0333, "text": "Almost completed Designing your pcb part but there is a error i am currently fixing . am using ai to help me"}]...
|
Title: SmolPadV1 by @mandeepswami | Stardance
Dev Title: SmolPadV1 by @mandeepswami | Stardance
Devlogs:
Almost completed Designing your pcb part but there is a error i am currently fixing . am using ai to help me
Creating my case
Finnally started on my own hackpad . using https://wiki.ai03.com/books/pcb-design/page/pcb-guide-part-3---creating-the-mcu-schematic guide
https://www.youtube.com/watch?v=8WXpGTIbxlQ using his guide to make it
Currently routing copper traces
Completed Routing
The case is almost complete just the backside is left and i am thingking of a adding a hackclub logo
Yeah i forgot to record half of the case , the firmware and the readme and BOM . Lost lot of time but i used Visual Studio code for the firmware and reame , bom so i didnt lose that time but now the project is complete and is looking good and now i will ship it
Changed footprints as they were diffrent from the ones used in hacpad kit
made a final hole for knob...
|
1793062448.0813906
|
1793667248.0813906
|
|
29722
|
Pikne by @marksdude | Stardance
|
marksdude
|
0
|
115.02
|
0
|
[]
|
[{"post_id": 81292, "ts": "202 [{"post_id": 81292, "ts": "2026-10-20T17:46:43Z", "hours": 6.5956, "text": "I have finished version 0.1 of the firmware. It currently only has a simple menu to check some battery information. It relies on the ArduinoSMBus library for communicating with the BMS and the Adafruit SSD1306 and Adafruit GFX libraries for drawing on the OLED. I also made some wiring diagrams."}, {"post_id": 77053, "ts": "2026-10-05T14:31:05Z", "hours": 2.1569, "text": "Started work on the main firmware file. I will implement the more important stuff first, like the stuff needed for the power bank to function and most of the status displaying. Then, I will start work on the less important features, like more advanced safety (in case one of the BMS’s MOSFETs fail) and communication between the power bank and modules. I have currently made functions for reading the USB output current and for reading the battery charger’s status."}, {"post_id": 74074, "ts": "2026-09-26T16:57:15Z", "hours": 3.0439, "text": "I learned how to send data over UART to ESPHome. I will use this to send battery info from the power bank to the LED controller module, so it could be displayed in Home Assistant. How will it work? First the ATmega328P in the power bank will put all the values that will be sent into a single string. The string will look like this: bat:xx|current:xx|voltage:xx|usb_current:xx Then when the module receives it, ESPHome will run a lambda that splits the received string into separate strings for each value. They will then be converted into floats and sent to the corresponding sensor component. For testing, I used a XIAO ESP32-C3 to send dummy data to a revision 1 LED controller PCB. Next, I will work on module detection or the OLED interface for the power bank."}, {"post_id": 69799, "ts": "2026-09-17T20:11:47Z", "hours": 0.55, "text": "Took some pictures First I’m going to talk about funding. I’m currently waiting for funding. Hopefully I get it before Stardance ends. I requested funding for the power bank and the LED controller module, no flashlight module because I’m prioritizing getting the power bank working. It was also the most expensive module and would have required me to write even more firmware. Firmware development isn’t my strong suit. In the meantime I thought it would be a good idea to ask for permission to use my school’s 3D printers. Got the permission, printed the enclosure and took some pictures. Currently, it is basically just an empty enclosure, I put in the screws, OLED, pogo connector and the first revision non-working PCB to test how the parts would fit and so it would look better on the pictures. That’s all for now, thank you. I will be working on the firmware from now on."}, {"post_id": 66872, "ts": "2026-09-12T20:22:03Z", "hours": 8.9631, "text": "Been working on the BOM. It has been pretty boring. Every PCB has its own BOM and I have put the final price of every one of them into one main BOM so it will be easier to read. I also changed the inductor on the main power bank PCB to a one that fits the enclosure. I found one that has the needed current rating and is small enough so I didn’t have to change anything other than the inductor on the PCB."}, {"post_id": 60975, "ts": "2026-09-03T17:34:00Z", "hours": 1.1475, "text": "Not enough space yay!!! With a higher current inductor comes a bigger package which doesn’t fit. I have a few options now: Change the case Find a smaller connector that can handle the current use a different inductor that isn’t that tall Probably going to try to find a shorter inductor. I may be able to make the 5v regulator inductor smaller because I don’t think it needs a current rating that high and then maybe use the regained space for a wider and shorter inductor."}, {"post_id": 59573, "ts": "2026-09-01T13:56:19Z", "hours": 2.8336, "text": "Found an issue on the BMS board I found that I had connected the cell sense pins in the wrong order. I had connected them like this: B- to VC0, B+ to VC1 and cell 1 to VC2, but it should have been connected like this: B- to VC0, cell 1 to VC1 and B+ to VC2. I almost didn’t notice it because I didn’t check that part of it. I thought that I wouldn’t have made a mistake like that. This wasn’t the only issue with the sense connections the other was that I didn’t use kelvin connections for them. Without kelvin connections you will get less accurate readings because of voltage drop in the copper. I also improved it a little. I added cutouts for the current sensing resistor so I have separate pads for the sensing traces and the high current path. This should improve the current sensing accuracy which means I get a more accurate battery charge estimate. Then I added buttons for waking the IC up for programming and for shutting the output down so the battery can safely be removed. I moved the connector for the thermistors and the balance lead to the other side so the wires won’t have to run near a high current switching inductor which is on the main PCB. Thank you for reading!"}, {"post_id": 57572, "ts": "2026-08-29T19:15:51Z", "hours": 4.9053, "text": "Discovered some issues with the main PCB’s schematic when I was checking it before making the BOM First issue was that the inductor I chose for the battery charge IC (BQ25792) that also makes the 9, 12, 15 and 20V for USB PD had a current rating too little (guess that’s what happens if you design a PCB like this very inexperienced like I was 8 months ago) which would have limited it to around 30W output max, so this time I calculated the required rating myself (previously got the inductor from a reference design). Found that it should have been almost double the previous 7A for the 45W I initially aimed for, but if the IC can handle 60W then why not choose an inductor for 60W? So that’s what I did, the new inductor that has a rating of 15.8A should be able handle 60W. Second was that for some reason I tied the SDRV pin of the battery charge IC to the battery when instead it should have been tied to GND through a 1nf capacitor if not in use. I don’t know why I did it because the datasheet clearly says “Connect a 0402 / 50V / 1nF ceramic capacitor from SDRV to GND when the ship FET is not used.” This may have been the cause why the PCB didn’t work correctly when I made the first prototype of it around 2 months ago. I thought it was because of bad soldering, so I tried to resolder everything with a hot plate and burned bunch of my capacitors and probably some other components too. There were some other minor issues like me choosing footprints too small for some capacitors and not using the output current monitoring of the efuse. The efuse current monitoring isn’t really an issue but it is nice to see the exact output current on the display. I probably skipped it because I couldn’t understand how it worked back then. Thank you for reading!"}, {"post_id": 55106, "ts": "2026-08-26T15:45:34Z", "hours": 6.0947, "text": "Added logos to everything, fixed some alignment issues and added little holes for the module to go into to take stress away from the USB-C plug when dropped or twisted."}, {"post_id": 53222, "ts": "2026-08-23T17:43:03Z", "hours": 7.9406, "text": "Finished the flashlight module case! It will be CNCed out of aluminum, so it could act as a heatsink only the frame that holds the acrylic lens is 3D printed. I tried to fill up as much free space as possible with aluminum so the LEDs could run at max brightness for as long as possible. And… about the LiPo charger module I probably won’t make it I don’t think I have enough time since getting a grant and shipping of the PCBs will take a few weeks, so I may not have enough time to make firmware for everything so I’m skipping it for now."}, {"post_id": 49133, "ts": "2026-08-17T19:24:28Z", "hours": 3.1836, "text": "Started designing the case for the flashlight module. I had to move some stuff around on the driver PCB to make a cutout for the pogo connector. Also changed the connector for the LEDs from JST VH to JST XH for a smaller footprint."}, {"post_id": 47123, "ts": "2026-08-14T19:37:40Z", "hours": 4.6836, "text": "Finished the LED controller shell and made a logo I solved the pogo connector mounting problem by having the front of the upper part open and having the wall on the bottom part."}, {"post_id": 45372, "ts": "2026-08-11T19:45:09Z", "hours": 5.3339, "text": "I’ve been designing the shell for the LED controller module. I Currently have a problem with mounting the pogo connector. The issue is that the design I had in mind won’t work because I have no way of putting brass inserts into the screw holes so I have to find another way. Maybe I could have the top in 2 parts then I could put the brass inserts in."}, {"post_id": 44206, "ts": "2026-08-09T20:18:29Z", "hours": 3.9331, "text": "Finished the LED PCB for the flashlight module I couldn’t fit 40 LEDs like I said I would so there are 30 LEDs. It should still have close to 9000 lm max brightness (It will probably run only for a few seconds at max brightness before it will overheat). I’m just going to drive the LEDs little harder. I first wanted to have connectors for power and the thermistor but I found that JLCPCB only offers 1 layer aluminum core PCBs so I was limited to a 1 layer PCB and I couldn’t use THT connectors so instead I’m going to solder the wires straight to the board."}, {"post_id": 43450, "ts": "2026-08-08T18:21:27Z", "hours": 4.0211, "text": "Finished the LED driver board of the flashlight module! So that’s one of the PCBs done for the flashlight module will do the one that holds the LEDs next. I will be using about 40 of these LEDs so the max brightness will be around 9600 lm. I probably won’t be able to run it at max brightness for very long because it will (probably) hit thermal limits since the only cooling for it is the aluminum core PCB and maybe a CNC aluminum body."}, {"post_id": 42675, "ts": "2026-08-07T15:03:56Z", "hours": 3.1503, "text": "Started designing the flashlight module PCB! I finished the schematic for the driver board yesterday. It’s going to have 2 different PCBs one that does all the communication and driving of the LEDs and the other that is going to have all the LEDs on it. I think thermal management will be easier this way since the LEDs will get pretty hot. I also thought of a name for the project I’m going to name it Pikne which means lightning in estonian."}, {"post_id": 40833, "ts": "2026-08-04T16:44:28Z", "hours": 6.6417, "text": "Finished routing the PCB Now I just got to run it through drc and fix silkscreen. Then the LiPo charger module PCB should be finished."}, {"post_id": 39039, "ts": "2026-08-01T18:32:26Z", "hours": 4.9156, "text": "Finished the LiPo charger module schematic! I had some problems making the battery balancing circuitry because I didn’t know how to switch the balancing mosfets without frying the microcontroller. The problem was that the ground reference for the microcontroller and mosfets were different that basically means that for example the mosfet connected for balancing cell 3 of the battery will have its reference from cell 3 of the pack but the microcontroller will have its reference from the negative of the pack (cell 1) so for the mosfet its source will be at 0V (gnd), but for the microcontroller the mosfet’s source will be around 10.8V. That will mean if I try to turn on the mosfet with 3.3V from the microcontroller Vgs would equal -7.5V (3.3V - 10.8V) which means the mosfet will not turn on since for an N-channel mosfet Vgs has to be positive (atleast 2V for the one I used). First I wanted to use a P-channel mosfet to connect the positive side of the cell to the gate of the N-channel mosfet that would turn on the N-channel mosfet since Vgs would be around 3.6V (3.6V - 0V) but when the balancing mosfet will be off the P-channel mosfet’s gate will be pulled up to the cell voltage so for the mosfets its around 3.6V but for the microcontroller around 10.8v for cell 3 that will fry the microcontroller. Instead I used a octocoupler to connect the positive side of the cell to the N-channel mosfet. Like this I can turn the balancing mosfet on without having the high voltage on the pin of the microcontroller. That probably wasn’t a very good explanation. I’m not very good at explaining. Expected features of the module: Supports charging 1-4S LiPo and Li-Ion batteries Max charge current: 5-6A (1S), 4-4.5A (2S), 3A (3S), 2A (4S) If you actually read through all of this, thank you!"}, {"post_id": 35984, "ts": "2026-07-27T19:43:01Z", "hours": 2.7172, "text": "Finished the shell! This should mean that the hardware of the power bank is mostly finished I still have to test it and then also make firmware for it. Now I think I’m gonna start working more on the modules. I currently have these planned: A Led controller module that will integrate with Home Assistant and allow you to control led strips and stuff (I already have a PCB made for this one). A LiPo charger module that will allow you to charge up to 3s LiPos maybe even 4s A flashlight module (I don’t think I have to explain this) If you have any ideas on more modules I should make please comment them."}, {"post_id": 35430, "ts": "2026-07-26T20:40:28Z", "hours": 8.3822, "text": "Got done with the redesign of the front It took longer than I thought it would. Most of the time I spent fixing the stuff that broke after changing the shell size, but after 8h it’s done! Now I just gotta figure out the button placement again because the old place won’t work with the new design and do some finishing touches and then the shell should be ready. Also I didn’t need to redesign the BMS because the current design fit the new design no problem."}, {"post_id": 33690, "ts": "2026-07-23T20:18:58Z", "hours": 4.6111, "text": "I had almost finished the shell but I got an idea on how to make the power bank a little smaller (2 mm thinner and 4-10 mm shorter). So now I’m gonna redesign the BMS and hope that my idea will actually work without any clearance issues. And also I now have a github repo for the project so you can go take a look at the current PCB designs yourself."}, {"post_id": 32507, "ts": "2026-07-21T18:49:13Z", "hours": 7.6381, "text": "I finished the lower shell part! I ran into some issues with the button placement because I didn’t think about it when designing the main PCB. I placed the button too close to the edge of the PCB, leaving only about 3mm of space between the button and the wall of the shell, as shown in one of the pictures. Since I already have the PCB and I don’t want to order a new revision just to move the button, I will use a different button on the side of the power bank that I will solder to the original button pads with wires. It’s probably not the best solution, but it should work."}, {"post_id": 28833, "ts": "2026-07-15T10:39:10Z", "hours": 6.8114, "text": "So I had to resolder the main PCB because I ripped a pad off a IC while trying to reflow it. I learned the hard way that capacitors also don’t like being on a hot plate for too long. I ended up burning most of them. Now I have to wait for new capacitors before I can fully assemble the PCB."}, {"post_id": 22286, "ts": "2026-07-04T17:52:55Z", "hours": 4.7672, "text": "First devlog on my power bank. Just finished the battery holder in cad. Next will be the lower shell part."}]...
|
Title: Pikne by @marksdude | Stardance
Devlogs:
F Title: Pikne by @marksdude | Stardance
Devlogs:
First devlog on my power bank. Just finished the battery holder in cad. Next will be the lower shell part.
So I had to resolder the main PCB because I ripped a pad off a IC while trying to reflow it. I learned the hard way that capacitors also don’t like being on a hot plate for too long. I ended up burning most of them. Now I have to wait for new capacitors before I can fully assemble the PCB.
I finished the lower shell part! I ran into some issues with the button placement because I didn’t think about it when designing the main PCB. I placed the button too close to the edge of the PCB, leaving only about 3mm of space between the button and the wall of the shell, as shown in one of the pictures. Since I already have the PCB and I don’t want to order a new revision just to move the button, I will use a different button on the side of the power bank that I will solder to the original button pads with wires. It’s probably not the best solution, but it should work.
I had almost finished the shell but I got an idea on how to make the power bank a little smaller (2 mm thinner and 4-10 mm shorter). So now I’m gonna redesign the BMS and hope that my idea will actually work without any clearance issues. And also I now have a github repo for the project so you can go take a look at the current PCB designs yourself.
Got done with the redesign of the front It took longer than I thought it would. Most of the time I spent fixing the stuff that broke after changing the shell size, but after 8h it’s done! Now I just gotta figure out the button placement again because the old place won’t work with the new design and do some finishing touches and then the shell should be ready. Also I didn’t need to redesign the BMS because the current design fit the new design no problem.
Finished the shell! This should mean that the hardware of the power bank is mostly finished I still have to test it and then also make firmware for it. Now I think I’m gonna start working more on the modules. I currently have these planned: A Led controller module that will integrate with Home Assistant and allow you to control led strips and stuff (I already have a PCB made for this one). A LiPo charger module that will allow you to charge up to 3s LiPos maybe even 4s A flashlight module (I don’t think I have to explain this) If you have any ideas on more modules I should make please comment them.
Finished the LiPo charger module schematic! I had some problems making the battery balancing circuitry because I didn’t know how to switch the balancing mosfets without frying the microcontroller. The problem was that the ground reference for the microcontroller and mosfets were different that basically means that for example the mosfet connected for balancing cell 3 of the battery will have its reference from cell 3 of the pack but the microcontroller will have its reference from the negative of the pack (cell 1) so for the mosfet its source will be at 0V (gnd), but for the microcontroller the mosfet’s source will be around 10.8V. That will mean if I try to turn on the mosfet with 3.3V from the microcontroller Vgs would equal -7.5V (3.3V - 10.8V) which means the mosfet will not turn on since for an N-channel mosfet Vgs has to be positive (atleast 2V for the one I used). First I wanted to use a P-channel mosfet to connect the positive side of the cell to the gate of the N-channel mosfet that would turn on the N-channel mosfet since Vgs would be around 3.6V (3.6V - 0V) but when the balancing mosfet will be off the P-channel mosfet’s gate will be pulled up to the cell voltage so for the mosfets its around 3.6V but for the microcontroller around 10.8v for cell 3 that will fry the microcontroller. Instead I used a octocoupler to connect the positive side of the cell to the N-channel mosfet. Like this I can turn the balancing mosfet on without having the high voltage on the pin of the microcontroller. That probably wasn’t a very good explanation. I’m not very good at explaining. Expected features of the module: Supports charging 1-4S LiPo and Li-Ion batteries Max charge current: 5-6A (1S), 4-4.5A (2S), 3A (3S), 2A (4S) If you actually read through all of this, thank you!
Finished routing the PCB Now I just got to run it through drc and fix silkscreen. Then the LiPo charger module PCB should be finished.
Started designing the flashlight module PCB! I finished the schematic for the driver board yesterday. It’s going to have 2 different PCBs one that does all the communication and driving of the LEDs and the other that is going to have all the LEDs on it. I think thermal management will be easier this way since the LEDs will get pretty hot. I also thought of a name for the project I’m going to name it Pikne which means lightning in estonian.
Finished the LED driver board of the flashlight module! So that’s one of the PCBs done for the flashlight module will do the one that holds the LEDs next. I will be using about 40 of these LEDs so the max brightness will be around 9600 lm. I probably won’t be able to run it at max brightness for very long because it will (probably) hit thermal limits since the only cooling for it is the aluminum core PCB and maybe a CNC aluminum body.
Finished the LED PCB for the flashlight module I couldn’t fit 40 LEDs like I said I would so there are 30 LEDs. It should still have close to 9000 lm max brightness (It will probably run only for a few seconds at max brightness before it will overheat). I’m just going to drive the LEDs little harder. I first wanted to have connectors for power and the thermistor but I found that JLCPCB only offers 1 layer aluminum core PCBs so I was limited to a 1 layer PCB and I couldn’t use THT connectors so instead I’m going to solder the wires straight to the board.
I’ve been designing the shell for the LED controller module. I Currently have a problem with mounting the pogo connector. The issue is that the design I had in mind won’t work because I have no way of putting brass inserts into the screw holes so I have to find another way. Maybe I could have the top in 2 parts then I could put the brass inserts in.
Finished the LED controller shell and made a logo I solved the pogo connector mounting problem by having the front of the upper part open and having the wall on the bottom part.
Started designing the case for the flashlight module. I had to move some stuff around on the driver PCB to make a cutout for the pogo connector. Also changed the connector for the LEDs from JST VH to JST XH for a smaller footprint.
Finished the flashlight module case! It will be CNCed out of aluminum, so it could act as a heatsink only the frame that holds the acrylic lens is 3D printed. I tried to fill up as much free space as possible with aluminum so the LEDs could run at max brightness for as long as possible. And… about the LiPo charger module I probably won’t make it I don’t think I have enough time since getting a grant and shipping of the PCBs will take a few weeks, so I may not have enough time to make firmware for everything so I’m skipping it for now.
Added logos to everything, fixed some alignment issues and added little holes for the module to go into to take stress away from the USB-C plug when dropped or twisted.
Discovered some issues with the main PCB’s schematic when I was checking it before making the BOM First issue was that the inductor I chose for the battery charge IC (BQ25792) that also makes the 9, 12, 15 and 20V for USB PD had a current rating too little (guess that’s what happens if you design a PCB like this very inexperienced like I was 8 months ago) which would have limited it to around 30W output max, so this time I calculated the required rating myself (previously got the inductor from a reference design). Found that it should have been almost double the previous 7A for the 45W I initially aimed for, but if the IC can handle 60W then why not choose an inductor for 60W? So that’s what I did, the new inductor that has a rating of 15.8A should be able handle 60W. Second was that for some reason I tied the SDRV pin of the battery charge IC to the battery when instead it should have been tied to GND through a 1nf capacitor if not in use. I don’t know why I did it because the datasheet clearly says “Connect a 0402 / 50V / 1nF ceramic capacitor from SDRV to GND when the ship FET is not used.” This may have been the cause why the PCB didn’t work correctly when I made the first prototype of it around 2 months ago. I thought it was because of bad soldering, so I tried to resolder everything with a hot plate and burned bunch of my capacitors and probably some other components too. There were some other minor issues like me choosing footprints too small for some capacitors and not using the output current monitoring of the efuse. The efuse current monitoring isn’t really an issue but it is nice to see the exact output current on the display. I probably skipped it because I couldn’t understand how it worked back then. Thank you for reading!
Found an issue on the BMS board I found that I had connected the cell sense pins in the wrong order. I had connected them like this: B- to VC0, B+ to VC1 and cell 1 to VC2, but it should have been connected like this: B- to VC0, cell 1 to VC1 and B+ to VC2. I almost didn’t notice it because I didn’t check that part of it. I thought that I wouldn’t have made a mistake like that. This wasn’t the only issue with the sense connections the other was that I didn’t use kelvin connections for them. Without kelvin connections you will get less accurate readings because of voltage drop in the copper. I also improved it a little. I added cutouts for the current sensing resistor so I have separate pads for the sensing traces and the high current path. This should improve the current sensing accuracy which means I get a more accurate battery charge estimate. Then I added buttons for waking the IC up for programming and for shutting the output down so the battery can safely be removed. I moved the connector for the thermistors and the balance lead to the other side so the wires won’t have to run near a high current switching inductor which is on the main PCB. Thank you for reading!
Not enough space yay!!! With a higher current inductor comes a bigger package which doesn’t fit. I have a few options now: Change the case Find a smaller connector that can handle the current use a different inductor that isn’t that tall Probably going to try to find a shorter inductor. I may be able to make the 5v regulator inductor smaller because I don’t think it needs a current rating that high and then maybe use the regained space for a wider and shorter inductor.
Been working on the BOM. It has been pretty boring. Every PCB has its own BOM and I have put the final price of every one of them into one main BOM so it will be easier to read. I also changed the inductor on the main power bank PCB to a one that fits the enclosure. I found one that has the needed current rating and is small enough so I didn’t have to change anything other than the inductor on the PCB.
Took some pictures First I’m going to talk about funding. I’m currently waiting for funding. Hopefully I get it before Stardance ends. I requested funding for the power bank and the LED controller module, no flashlight module because I’m prioritizing getting the power bank working. It was also the most expensive module and would have required me to write even more firmware. Firmware development isn’t my strong suit. In the meantime I thought it would be a good idea to ask for permission to use my school’s 3D printers. Got the permission, printed the enclosure and took some pictures. Currently, it is basically just an empty enclosure, I put in the screws, OLED, pogo connector and the first revision non-working PCB to test how the parts would fit and so it would look better on the pictures. That’s all for now, thank you. I will be working on the firmware from now on.
I learned how to send data over UART to ESPHome. I will use this to send battery info from the power bank to the LED controller module, so it could be displayed in Home Assistant. How will it work? First the ATmega328P in the power bank will put all the values that will be sent into a single string. The string will look like this: bat:xx|current:xx|voltage:xx|usb_current:xx Then when the module receives it, ESPHome will run a lambda that splits the received string into separate strings for each value. They will then be converted into floats and sent to the corresponding sensor component. For testing, I used a XIAO ESP32-C3 to send dummy data to a revision 1 LED controller PCB. Next, I will work on module detection or the OLED interface for the power bank.
Started work on the main firmware file. I will implement the more important stuff first, like the stuff needed for the power bank to function and most of the status displaying. Then, I will start work on the less important features, like more advanced safety (in case one of the BMS’s MOSFETs fail) and communication between the power bank and modules. I have currently made functions for reading the USB output current and for reading the battery charger’s status.
I have finished version 0.1 of the firmware. It currently only has a simple menu to check some battery information. It relies on the ArduinoSMBus library for communicating with the BMS and the Adafruit SSD1306 and Adafruit GFX libraries for drawing on the OLED. I also made some wiring diagrams....
|
1792532864.413885
|
1793137664.413885
|
|
70372
|
Tycoon game by @centcoder | Stardance
|
centcoder
|
1
|
13.0
|
55
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T19:54:57Z", "hours": 13.0, "multiplier": 4.2, "payout": 55, "blessing": "neutral", "text": "I made a tycoon game where you can upgrade your skills, your job and the goal is to get more money. You can acquire business/shops to get passive income and you can also invest in stock simulations! Enjoy!", "repo": "https://github.com/centcodergit/myfirstgame", "demo": "https://centcodergit.github.io/myfirstgame/"}]...
|
[{"post_id": 81297, "ts": "202 [{"post_id": 81297, "ts": "2026-10-20T18:22:36Z", "hours": 1.6514, "text": "I am DONE!!! -Finished the js Fixed any remaining bugs (Let’s go!) Publishing the game right now to! Go check it out if you want to!"}, {"post_id": 81273, "ts": "2026-10-20T16:02:24Z", "hours": 2.6847, "text": "I was mainly working on continuing the js but also fixed some bugs Bugs fixed: -Fixed the bug with the empty screen (blank screen) -Fixed some errors on the html and css (most were minor but there was a major one with the variables that took some time) Fixed bugs with the new file (the js) and connections with it with the html and css I will continue working on the js now and I think i will be done soon (can’t really show a result cause it is not something actual to see yet.) In the previous devlogs (which were a bit shorter) I was developing the html and css, there were some bugs there as mentioned but everything looks better (at least for now). I hope that the game will be out soon!"}, {"post_id": 80808, "ts": "2026-10-18T20:53:34Z", "hours": 3.4139, "text": "BROO I finally fixed some bugs on the css and progressing on the js. Game out soon i hope!"}, {"post_id": 80716, "ts": "2026-10-18T16:25:56Z", "hours": 5.4614, "text": "I finished the html (the bugs, at least for now) and currently working on the js and css"}]...
|
Title: Tycoon game by @centcoder | Stardance
Devl Title: Tycoon game by @centcoder | Stardance
Devlogs:
I finished the html (the bugs, at least for now) and currently working on the js and css
BROO I finally fixed some bugs on the css and progressing on the js. Game out soon i hope!
I was mainly working on continuing the js but also fixed some bugs Bugs fixed: -Fixed the bug with the empty screen (blank screen) -Fixed some errors on the html and css (most were minor but there was a major one with the variables that took some time) Fixed bugs with the new file (the js) and connections with it with the html and css I will continue working on the js now and I think i will be done soon (can’t really show a result cause it is not something actual to see yet.) In the previous devlogs (which were a bit shorter) I was developing the html and css, there were some bugs there as mentioned but everything looks better (at least for now). I hope that the game will be out soon!
I am DONE!!! -Finished the js Fixed any remaining bugs (Let’s go!) Publishing the game right now to! Go check it out if you want to!
Ships:
I made a tycoon game where you can upgrade your skills, your job and the goal is to get more money. You can acquire business/shops to get passive income and you can also invest in stock simulations! Enjoy!...
|
1793008353.530786
|
1793094753.530786
|
|
30933
|
HamOS (ham-ster, not ham) by @Luksus | Stardance
|
Luksus
|
4
|
37.0
|
361
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T19:20:33Z", "hours": 13.0, "multiplier": 16.46, "payout": 219, "blessing": "neutral", "text": "PLEASE READ LAST DEVLOG <3 Hello. This is the 3rd and last ship of HamOS. It was incredibly fun making this project. In this ship I added a lots of things which I don’t remember (CurrentOpenAppsBar, F11, animations, styles, widgets, bug fixes, QoL updates, etc..) Please checkout every app, windows, features in HamOS. There is a hidden secret for you the second, you enter the website! My main inspiration for this project was the old era of computers and my hamster “Džambule”. (May my luck find 188 stardust for grants from this ship)", "repo": "https://github.com/lkspodmol/hamos", "demo": "https://lkspodmol.github.io/hamos"}, {"ship_num": 2, "ts": "2026-08-10T20:10:55Z", "hours": 8.0, "multiplier": 9.8, "payout": 81, "blessing": "neutral", "text": "Hello everyone! This is my 3nd ship of HamOS. (2nd of WebOS 2) A lot has changed since 2nd ship and those are: Apps: Help, App for helping users with QnA Settings, App for customization of HamOS HamOS To Go, Similar app (tool) to Windows To Go, it will launch HamOS in your tab instead of Džambulas computer. A new shortcut to Wikipedia New look for existing Introduction app, in NOKIA style (hands) And the biggest nightmare…. Scaling. I had problems with scaling HamOS website to other resolutions. Only 1920x1080 was supported, but now from 720p to 4K (16:9) should work without any major issues. The most annoying thing about this were also always changing margins, so app icons are alligned, etc… And for fun, I added a little sticky note that will help visitors start up the computer with HamOS. Also please, do not mind if the window you are moving is faster or slower than your mouse pointer. (check app Help) If you have any ideas, on what I should add, comment please! Visit HamOS at: https://lkspodmol.github.io/myos1/ (Please try F11) Thanks for reading. Happy coding and happy rating!", "repo": "https://github.com/lkspodmol/hamos", "demo": "https://lkspodmol.github.io/hamos"}, {"ship_num": 3, "ts": "2026-07-24T23:17:16Z", "hours": 7.0, "multiplier": 8.65, "payout": 61, "blessing": "neutral", "text": "Hello everyone! This is 2nd ship of HamOS, that brought some cool features and that are: Crt monitor Coslop Starting and shutting down the system Sound effects! I had a lot of fun drawing in this ship. I think the crt monitor turned out very good. I am also very happy with the sounds I added. Fits in so well. I am also updating the very fine text on the “Floppy”, that says, what version you are running (always the newest). I have some ideas for the future, but I think that a little break whould be also very good idea. If you have any ideas, on what I should add, comment please! Likes are very appreciated <3. Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)", "repo": "https://github.com/lkspodmol/hamos", "demo": "https://lkspodmol.github.io/hamos"}, {"ship_num": 4, "ts": "2026-07-22T16:02:57Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Have a working webpage with multiple draggable windows, Check It should look like your own and not exactly like the guide, Check Have at least 3 devlogs showing your progress along the way, Check Have at least 1 new feature that the guide didn’t list, Check It shouldn’t have a password (so anyone can test it out!), Check Hello everyone! This is my first ship on stardance and I hope, that you will like my WebOS 1. My WebOS 1 is HamOS. Not ham like ham, but ham like ham-ster. Hamster, because of my hamster Džambule. I love him very much, so I got an idea to create WebOS, that is designed for him and you got in somehow. Little things that I liked when coding is being lost in my own code. The best things I added in my opinion are: The loading screen!! Photo gallery of him And the custom hand drew icons made by me (intentionally bad) So please, visit and try HamOS at: https://lkspodmol.github.io/myos1/ . WebOS 1 was incredibly fun and interesting and I will try to continue in WebOS 2. Should it be HamOS, or HamOS PRO? Let me know. Thank you for reading this or commenting, liking and happy coding!", "repo": "https://github.com/lkspodmol/hamos", "demo": "https://lkspodmol.github.io/hamos"}]...
|
[{"post_id": 81298, "ts": "202 [{"post_id": 81298, "ts": "2026-10-20T18:28:24Z", "hours": 1.8453, "text": "Devlog? #15 - PLEASE READ! Hello everyone… New version of HamOS v1.7 just rolled out. What have I added or fixed? Bugs: volume lowered of loud sounds Added: new styles menu new styles The end? So yeah. This will be probably the last devlog of HamOS. I had many laughs when making HamOS and I must thank the organizers of Stardance for this! I want to say thank you to the every person I have talked to on stardance / hackclub. That includes slack. Specifically: Ethan, Brahmtej, Craw, Fraud squad , mixid_mbb, LakasZada, Thunder, starviper, SeradedStripes and all of unmentioned. You made my day less boring either with just chatting in the #stardance, huddling in huddle, playing on our minecraft server or playing games in #boba-bash-greater-noida. #boba-bash-greater-noida deserves its own section. It was incredibly fun playing with all of you for a week. The best ones were Skribbl, Among Us and Gartic Phone. I will include some funny screenshots. Big + to the organizers of this event, Brahmtej and agm. I hope we will meet again next year or sooner ❤️ . I will remember (hopefully). Lukas out . Visit HamOS at: https://lkspodmol.github.io/hamos/"}, {"post_id": 77886, "ts": "2026-10-08T17:29:40Z", "hours": 1.905, "text": "Devlog #14 Hello everyone! New version of HamOS v1.6 just rolled out! What have I added or fixed? Bugs: Added: “current open apps bar” animations! New system of indexes.html and fodler structures! A whole new STYLES system!! The boring part: I had idea of different styles a long time back in time. So I implemented them in this update. You can select what style you want and it will apply. The new selection menu will be more polished in the next update. I promise. If YOU (yes, you) want to make a style for hamos, please click the link in the selection menu and dm me! I would be very happy! With the animations of “CAOB”. It was a little difficult. I need to make the timing right, make it launch or not close when app is still open. It had its bugs when in development, but it should be working flawlessly now. Visit HamOS at: https://lkspodmol.github.io/myos1/ Thanks for reading and that is all for this update. Happy coding everyone!"}, {"post_id": 75899, "ts": "2026-10-01T15:22:15Z", "hours": 0.9667, "text": "The opening of community styles for HamOS! Hello everyone. Today im announcing that YOU, can create styles for HamOS, that will be added! If anyone wants to make a style (please do, I will be very happy), dm me on slack @luksus with the files, etc. (View the before last attached photo.) Everything you will need, will be in the template that I made for you (dimensions, info, restricted areas, etc.) Please download the template ( https://drive.google.com/drive/folders/1wteLNYUOm6-3gt77MpcvDc4UFpRlmfD8?usp=sharing ). You can also view the finished example. Edit 2 hours later: I just tried doing style myself and it turned out pretty okay! Check before last attached screenshot. I will be waiting for everyone’s styles ! Happy coding stardancers. ( https://lapse.hackclub.com/timelapse/7iCZKuc8ZhRJ )"}, {"post_id": 74799, "ts": "2026-09-28T09:18:33Z", "hours": 1.6833, "text": "Devlog #13 Hello everyone! What did I add in this update? Animations for “Currently opened apps bar”! And delay for the apps to launch (just like in a real life). When you open app, the little icon BOUNCES (video in attachment). This update isn’t live right now and wont be until v1.6. Visit HamOS at: https://lkspodmol.github.io/myos1/ Thanks for reading and that is all for this update. Happy coding everyone!"}, {"post_id": 74152, "ts": "2026-09-26T19:42:31Z", "hours": 2.7161, "text": "Devlog #12 Hello everyone! New version of HamOS v1.5 just rolled out! What have I added or fixed? Bugs: cursor: pointer; bug fix (entire desktop was clickable) cursor: pointer; bug fix (entire app rows were clickable, not only apps) Added: Widgets! Current apps opened bar! New settings feature New QnA The boring part: In this version, I had an idea to add widgets (because I loved widgets in Windows Vista). Then I needed content for the widgets. I wanted clock, but I was lazy to create some clock, so I just used clock widget iframe. Some people dont have to like the widgets, so I added a new option in settings to hide them. And with all of the apps opened, it was a little bit difficult to navigate between them, so I added “Current apps opened bar”. When app is opened, it shows its icon in the bar, which can be clicked for focusing the app window. The order of app icons in the bar is fixed, because I was too lazy to implement some kind of order-system. Visit HamOS at: https://lkspodmol.github.io/myos1/ Thanks for reading and that is all for this update. Happy coding everyone!"}, {"post_id": 69102, "ts": "2026-09-16T11:33:43Z", "hours": 2.94, "text": "Devlog #11 Hello everyone! A little devlog after a long time of inactivity. The break was amazing. Been to Bulgaria. Nice sea they’ve got. And now to HamOS. I am currently working on widgets, (little inspiration taken from my beloved Windows Vista). I am too lazy to create some clock, so I just used clock widget iframe. ( ) The version of the HamOS with a one widget added is live now, but it is in beta and not polished. (Something like a developer version of iOS) I had a lot of ideas for HamOS, but I don’t know if I will have enough time to add all of them. Visit HamOS at: https://lkspodmol.github.io/myos1/ That is all. Happy coding everyone!"}, {"post_id": 46604, "ts": "2026-08-13T23:20:19Z", "hours": 0.3886, "text": "oh my god. What am I even publishing? Before checking the code for other bugs, etc.. I shipped it, because I was very excited and wanted to get item that I very want. I checked on HamOS today if I didn’t overlook anything and I saw that newly opened app windows weren’t in the center of the crt. So I changed multiple % values. And then I noticed that Welcome and Introduction app windows weren’t getting focused when they are clicked. I left welcome app and introduction app in one div, because of one < /div >. After fixing that, the app windows weren’t in the center of the crt AGAIN. So I had to revert every % value that I changed. (Thank god for github commits) So this was a little log of fixing ONE < /DIV > that caused these issues… Happy coding everyone.. happy happy."}, {"post_id": 45451, "ts": "2026-08-11T22:18:13Z", "hours": 0.8619, "text": "Hey everyone! Quick fix happened. On some screens, there was a bug that the icons weren’t aligned properly. My dumb ah put row div in a row div in a row div. The best code you will ever see. Had to change so many % values. But it is over now. Fix is now live (thankfully, before reviewers could rate it)."}, {"post_id": 44783, "ts": "2026-08-10T19:54:34Z", "hours": 1.0506, "text": "Devlog #10 Hello everyone! Just published HamOS v1.4, version mainly about resolution scaling and small fixes. In v1.4 was alongside added Settings app that has personalization features (primary colors and set wallpapers). And if you will notice, a little sticky paper was added that will help visitors start up HamOS. After this Devlog I will ship HamOS Again! I want more opinions :> (and stardust tooo–.) Visit HamOS at: https://lkspodmol.github.io/myos1/ That is all. Happy coding everyone!"}, {"post_id": 42926, "ts": "2026-08-07T22:05:49Z", "hours": 3.1981, "text": "Devlog #9 omg this was a nightmare. Hey everyone! Just wanted to share that I finally somehow fixed scaling of HamOS! Previously, only 1920x1080 was supported, but now, 720p HD —> 4K! Yippie! : b Now I just need to add one more feature and this update will be live in the next version of HamOS v1.4. The biggest issue I encountered while making this was also applying it to the top bar. I also somehow broke a bug, bug-feature, that the top bar is always under app windows, now, app windows are under the top bar. Happy coding everyone! Ham out. –hehe"}, {"post_id": 41033, "ts": "2026-08-04T23:18:32Z", "hours": 4.0636, "text": "Devlog #8 Hey everyone! HamOS v1.3 is here. This is everything that happened in this update: The new Help app contains some problems that people issue with HamOS. In the style of QnA. If you have any questions or problems with HamOS, please comment under one of my devlogs. And the new HamOS To Go tool does something like Windows To Go tool. Windows To Go creates Windows on usb drive that you can plug into any computer and run your version of Windows. The HamOS To Go tool opens a new tab that will have only the HamOS, without the crt monitor. I added this feature to help some people with bugs or if they only want the HamOS without the crt monitor. And a new shortcut for Wikipedia. I was also playing with margins, so icons, divs look aligned. I used the existing icon of app Introduction for the new app Help and designed a new icon for it. I had idea in my mind, that well, if it is an introduction, it is like connecting people (or hamsters) no? I remembered old nokia loading screen and was inspired by it (the hands). And at the end, I added a little bit more info to the githubs README file. After the break, I had a whole set of ideas that I wrote down. One of them is Theme app suggested from anonymous that rated 2nd ship. Sadly, I have to fix a big issue first and that is screen scaling D: HamOS is only fully supported on 1920x1080 for now. Others have to workaround by scaling the site bigger or smaller. That is it. Happy coding everyone! Visit HamOS here: https://lkspodmol.github.io/myos1/"}, {"post_id": 34338, "ts": "2026-07-24T23:03:03Z", "hours": 1.3542, "text": "Devlog #7 Hey everyone! HamOS version v1.2 is here! What have I updated: Different crt monitor stand LED retextured Power-on button retextured Added Welcome SOUNDS!! (starting up, power-on button, welcome) If you have any ideas, on what I should add, comment please! Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)"}, {"post_id": 34077, "ts": "2026-07-24T15:19:18Z", "hours": 3.3767, "text": "Devlog #6 Hey everyone! HamOS version v1.1 is here! What have I updated: Copilot, but Coslop The crt monitor! Nicer power-on button Removed the Pro If you have any ideas, on what I should add, comment please! Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)"}, {"post_id": 33562, "ts": "2026-07-23T16:23:39Z", "hours": 2.3761, "text": "Hey everyone! Just added a crt monitor that will show HamOS Pro! Check it out at: https://lkspodmol.github.io/myos1/ Likes and comments are appreciated <3. (image is a sneak peak, until you check it out yourself)"}, {"post_id": 32989, "ts": "2026-07-22T14:45:45Z", "hours": 1.8106, "text": "Devlog #5 Hey everyone! Last update on HamOS. What have I updated: Removed link texts in bar Added new shortcuts with new goated icons Image optimisations ( < picture > idea @ethmarks , Thanks!) New loading screen! I will probably continue HamOS in WebOS 2, so HamOS 2, HamOS PRO? - Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)"}, {"post_id": 32503, "ts": "2026-07-21T18:36:49Z", "hours": 1.0731, "text": "Devlog #4 Hey everyone! A lot of this update wasn’t about adding huge features, just one app and fixing some small things. I added a Photos app, so Džambule finally has somewhere to keep his favorite pictures. 🐹📸 You can also click individual photo and view it in full resolution / quality. Also fyi, the icons are drawn by me. It is intentionally bad, don’t think that I cant draw. hehe.. I’m thinking about adding a very lite version of Start button. We will see if that will happen. Whould be cool. I’m also wondering how does stardances algorithm work. I’ve seen one devlog, that had one sentence and got hundreds of views. Hope algorithm will notice me. If the Start button will happen, then I’m probably gonna ship my HamOS to the stars. Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding."}, {"post_id": 29815, "ts": "2026-07-16T23:12:33Z", "hours": 0.6344, "text": "Not technically a devlog, but Devlog #3 Hey everyone! It struck me out of nowhere, that I am making a HamOS. OS for / about hamster. So should not it be about my hamster? Its logic. So, I personalized it to my hamster Džambule. You will by in my hamsters computer (please do not break anything). In the next update, I am thinking that I will make apps like Notes and Photos, that will already have something in them (Džambule’s notes or photos) Thanks everyone for reading this and happy coding!"}, {"post_id": 29565, "ts": "2026-07-16T16:16:43Z", "hours": 3.4081, "text": "Devlog #2 Hey everyone! Heres what I added to my HamOS: Draggable windows Bar at top of a window with X Closing and opening apps/windows Desktop icons Only welcome window shows up when page is loaded Window focusing… Etc. It looks very nice in this state right now. Little bit scared of part 5 in the tutorial. I have an idea for the app, but I just hope that it wont be too hard. Thanks everyone for reading this devlog and maybe visiting my HamOS? Bye! Link for HamOS: https://lkspodmol.github.io/myos1/"}, {"post_id": 29029, "ts": "2026-07-15T17:59:05Z", "hours": 1.7144, "text": "Hello everyone! Just started working on my WebOS, that will be called HamOS. No, not ham, like ham, but ham like ham-ster :D. The tutorial was super helpful even though it didn’t look like at first. This HamOS will be mainly customized to my hamster Džambule. I even added a gif of him :>. That was enough coding for the day. Finished 2 parts. Thanks stardance for this, for everything and for the STICKERS!!. Out."}]...
|
Title: HamOS (ham-ster, not ham) by @Luksus | Star Title: HamOS (ham-ster, not ham) by @Luksus | Stardance
Devlogs:
Hello everyone! Just started working on my WebOS, that will be called HamOS. No, not ham, like ham, but ham like ham-ster :D. The tutorial was super helpful even though it didn’t look like at first. This HamOS will be mainly customized to my hamster Džambule. I even added a gif of him :>. That was enough coding for the day. Finished 2 parts. Thanks stardance for this, for everything and for the STICKERS!!. Out.
Devlog #2 Hey everyone! Heres what I added to my HamOS: Draggable windows Bar at top of a window with X Closing and opening apps/windows Desktop icons Only welcome window shows up when page is loaded Window focusing… Etc. It looks very nice in this state right now. Little bit scared of part 5 in the tutorial. I have an idea for the app, but I just hope that it wont be too hard. Thanks everyone for reading this devlog and maybe visiting my HamOS? Bye! Link for HamOS: https://lkspodmol.github.io/myos1/
Not technically a devlog, but Devlog #3 Hey everyone! It struck me out of nowhere, that I am making a HamOS. OS for / about hamster. So should not it be about my hamster? Its logic. So, I personalized it to my hamster Džambule. You will by in my hamsters computer (please do not break anything). In the next update, I am thinking that I will make apps like Notes and Photos, that will already have something in them (Džambule’s notes or photos) Thanks everyone for reading this and happy coding!
Devlog #4 Hey everyone! A lot of this update wasn’t about adding huge features, just one app and fixing some small things. I added a Photos app, so Džambule finally has somewhere to keep his favorite pictures. 🐹📸 You can also click individual photo and view it in full resolution / quality. Also fyi, the icons are drawn by me. It is intentionally bad, don’t think that I cant draw. hehe.. I’m thinking about adding a very lite version of Start button. We will see if that will happen. Whould be cool. I’m also wondering how does stardances algorithm work. I’ve seen one devlog, that had one sentence and got hundreds of views. Hope algorithm will notice me. If the Start button will happen, then I’m probably gonna ship my HamOS to the stars. Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding.
Devlog #5 Hey everyone! Last update on HamOS. What have I updated: Removed link texts in bar Added new shortcuts with new goated icons Image optimisations ( < picture > idea @ethmarks , Thanks!) New loading screen! I will probably continue HamOS in WebOS 2, so HamOS 2, HamOS PRO? - Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)
Hey everyone! Just added a crt monitor that will show HamOS Pro! Check it out at: https://lkspodmol.github.io/myos1/ Likes and comments are appreciated <3. (image is a sneak peak, until you check it out yourself)
Devlog #6 Hey everyone! HamOS version v1.1 is here! What have I updated: Copilot, but Coslop The crt monitor! Nicer power-on button Removed the Pro If you have any ideas, on what I should add, comment please! Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)
Devlog #7 Hey everyone! HamOS version v1.2 is here! What have I updated: Different crt monitor stand LED retextured Power-on button retextured Added Welcome SOUNDS!! (starting up, power-on button, welcome) If you have any ideas, on what I should add, comment please! Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)
Devlog #8 Hey everyone! HamOS v1.3 is here. This is everything that happened in this update: The new Help app contains some problems that people issue with HamOS. In the style of QnA. If you have any questions or problems with HamOS, please comment under one of my devlogs. And the new HamOS To Go tool does something like Windows To Go tool. Windows To Go creates Windows on usb drive that you can plug into any computer and run your version of Windows. The HamOS To Go tool opens a new tab that will have only the HamOS, without the crt monitor. I added this feature to help some people with bugs or if they only want the HamOS without the crt monitor. And a new shortcut for Wikipedia. I was also playing with margins, so icons, divs look aligned. I used the existing icon of app Introduction for the new app Help and designed a new icon for it. I had idea in my mind, that well, if it is an introduction, it is like connecting people (or hamsters) no? I remembered old nokia loading screen and was inspired by it (the hands). And at the end, I added a little bit more info to the githubs README file. After the break, I had a whole set of ideas that I wrote down. One of them is Theme app suggested from anonymous that rated 2nd ship. Sadly, I have to fix a big issue first and that is screen scaling D: HamOS is only fully supported on 1920x1080 for now. Others have to workaround by scaling the site bigger or smaller. That is it. Happy coding everyone! Visit HamOS here: https://lkspodmol.github.io/myos1/
Devlog #9 omg this was a nightmare. Hey everyone! Just wanted to share that I finally somehow fixed scaling of HamOS! Previously, only 1920x1080 was supported, but now, 720p HD —> 4K! Yippie! : b Now I just need to add one more feature and this update will be live in the next version of HamOS v1.4. The biggest issue I encountered while making this was also applying it to the top bar. I also somehow broke a bug, bug-feature, that the top bar is always under app windows, now, app windows are under the top bar. Happy coding everyone! Ham out. –hehe
Devlog #10 Hello everyone! Just published HamOS v1.4, version mainly about resolution scaling and small fixes. In v1.4 was alongside added Settings app that has personalization features (primary colors and set wallpapers). And if you will notice, a little sticky paper was added that will help visitors start up HamOS. After this Devlog I will ship HamOS Again! I want more opinions :> (and stardust tooo–.) Visit HamOS at: https://lkspodmol.github.io/myos1/ That is all. Happy coding everyone!
Hey everyone! Quick fix happened. On some screens, there was a bug that the icons weren’t aligned properly. My dumb ah put row div in a row div in a row div. The best code you will ever see. Had to change so many % values. But it is over now. Fix is now live (thankfully, before reviewers could rate it).
oh my god. What am I even publishing? Before checking the code for other bugs, etc.. I shipped it, because I was very excited and wanted to get item that I very want. I checked on HamOS today if I didn’t overlook anything and I saw that newly opened app windows weren’t in the center of the crt. So I changed multiple % values. And then I noticed that Welcome and Introduction app windows weren’t getting focused when they are clicked. I left welcome app and introduction app in one div, because of one < /div >. After fixing that, the app windows weren’t in the center of the crt AGAIN. So I had to revert every % value that I changed. (Thank god for github commits) So this was a little log of fixing ONE < /DIV > that caused these issues… Happy coding everyone.. happy happy.
Devlog #11 Hello everyone! A little devlog after a long time of inactivity. The break was amazing. Been to Bulgaria. Nice sea they’ve got. And now to HamOS. I am currently working on widgets, (little inspiration taken from my beloved Windows Vista). I am too lazy to create some clock, so I just used clock widget iframe. ( ) The version of the HamOS with a one widget added is live now, but it is in beta and not polished. (Something like a developer version of iOS) I had a lot of ideas for HamOS, but I don’t know if I will have enough time to add all of them. Visit HamOS at: https://lkspodmol.github.io/myos1/ That is all. Happy coding everyone!
Devlog #12 Hello everyone! New version of HamOS v1.5 just rolled out! What have I added or fixed? Bugs: cursor: pointer; bug fix (entire desktop was clickable) cursor: pointer; bug fix (entire app rows were clickable, not only apps) Added: Widgets! Current apps opened bar! New settings feature New QnA The boring part: In this version, I had an idea to add widgets (because I loved widgets in Windows Vista). Then I needed content for the widgets. I wanted clock, but I was lazy to create some clock, so I just used clock widget iframe. Some people dont have to like the widgets, so I added a new option in settings to hide them. And with all of the apps opened, it was a little bit difficult to navigate between them, so I added “Current apps opened bar”. When app is opened, it shows its icon in the bar, which can be clicked for focusing the app window. The order of app icons in the bar is fixed, because I was too lazy to implement some kind of order-system. Visit HamOS at: https://lkspodmol.github.io/myos1/ Thanks for reading and that is all for this update. Happy coding everyone!
Devlog #13 Hello everyone! What did I add in this update? Animations for “Currently opened apps bar”! And delay for the apps to launch (just like in a real life). When you open app, the little icon BOUNCES (video in attachment). This update isn’t live right now and wont be until v1.6. Visit HamOS at: https://lkspodmol.github.io/myos1/ Thanks for reading and that is all for this update. Happy coding everyone!
The opening of community styles for HamOS! Hello everyone. Today im announcing that YOU, can create styles for HamOS, that will be added! If anyone wants to make a style (please do, I will be very happy), dm me on slack @luksus with the files, etc. (View the before last attached photo.) Everything you will need, will be in the template that I made for you (dimensions, info, restricted areas, etc.) Please download the template ( https://drive.google.com/drive/folders/1wteLNYUOm6-3gt77MpcvDc4UFpRlmfD8?usp=sharing ). You can also view the finished example. Edit 2 hours later: I just tried doing style myself and it turned out pretty okay! Check before last attached screenshot. I will be waiting for everyone’s styles ! Happy coding stardancers. ( https://lapse.hackclub.com/timelapse/7iCZKuc8ZhRJ )
Devlog #14 Hello everyone! New version of HamOS v1.6 just rolled out! What have I added or fixed? Bugs: Added: “current open apps bar” animations! New system of indexes.html and fodler structures! A whole new STYLES system!! The boring part: I had idea of different styles a long time back in time. So I implemented them in this update. You can select what style you want and it will apply. The new selection menu will be more polished in the next update. I promise. If YOU (yes, you) want to make a style for hamos, please click the link in the selection menu and dm me! I would be very happy! With the animations of “CAOB”. It was a little difficult. I need to make the timing right, make it launch or not close when app is still open. It had its bugs when in development, but it should be working flawlessly now. Visit HamOS at: https://lkspodmol.github.io/myos1/ Thanks for reading and that is all for this update. Happy coding everyone!
Devlog? #15 - PLEASE READ! Hello everyone… New version of HamOS v1.7 just rolled out. What have I added or fixed? Bugs: volume lowered of loud sounds Added: new styles menu new styles The end? So yeah. This will be probably the last devlog of HamOS. I had many laughs when making HamOS and I must thank the organizers of Stardance for this! I want to say thank you to the every person I have talked to on stardance / hackclub. That includes slack. Specifically: Ethan, Brahmtej, Craw, Fraud squad , mixid_mbb, LakasZada, Thunder, starviper, SeradedStripes and all of unmentioned. You made my day less boring either with just chatting in the #stardance, huddling in huddle, playing on our minecraft server or playing games in #boba-bash-greater-noida. #boba-bash-greater-noida deserves its own section. It was incredibly fun playing with all of you for a week. The best ones were Skribbl, Among Us and Gartic Phone. I will include some funny screenshots. Big + to the organizers of this event, Brahmtej and agm. I hope we will meet again next year or sooner ❤️ . I will remember (hopefully). Lukas out . Visit HamOS at: https://lkspodmol.github.io/hamos/
Ships:
Have a working webpage with multiple draggable windows, Check It should look like your own and not exactly like the guide, Check Have at least 3 devlogs showing your progress along the way, Check Have at least 1 new feature that the guide didn’t list, Check It shouldn’t have a password (so anyone can test it out!), Check Hello everyone! This is my first ship on stardance and I hope, that you will like my WebOS 1. My WebOS 1 is HamOS. Not ham like ham, but ham like ham-ster. Hamster, because of my hamster Džambule. I love him very much, so I got an idea to create WebOS, that is designed for him and you got in somehow. Little things that I liked when coding is being lost in my own code. The best things I added in my opinion are: The loading screen!! Photo gallery of him And the custom hand drew icons made by me (intentionally bad) So please, visit and try HamOS at: https://lkspodmol.github.io/myos1/ . WebOS 1 was incredibly fun and interesting and I will try to continue in WebOS 2. Should it be HamOS, or HamOS PRO? Let me know. Thank you for reading this or commenting, liking and happy coding!
Hello everyone! This is 2nd ship of HamOS, that brought some cool features and that are: Crt monitor Coslop Starting and shutting down the system Sound effects! I had a lot of fun drawing in this ship. I think the crt monitor turned out very good. I am also very happy with the sounds I added. Fits in so well. I am also updating the very fine text on the “Floppy”, that says, what version you are running (always the newest). I have some ideas for the future, but I think that a little break whould be also very good idea. If you have any ideas, on what I should add, comment please! Likes are very appreciated <3. Visit HamOS here: https://lkspodmol.github.io/myos1/ Thanks for reading! Happy coding. (pls algorithm, big views)
Hello everyone! This is my 3nd ship of HamOS. (2nd of WebOS 2) A lot has changed since 2nd ship and those are: Apps: Help, App for helping users with QnA Settings, App for customization of HamOS HamOS To Go, Similar app (tool) to Windows To Go, it will launch HamOS in your tab instead of Džambulas computer. A new shortcut to Wikipedia New look for existing Introduction app, in NOKIA style (hands) And the biggest nightmare…. Scaling. I had problems with scaling HamOS website to other resolutions. Only 1920x1080 was supported, but now from 720p to 4K (16:9) should work without any major issues. The most annoying thing about this were also always changing margins, so app icons are alligned, etc… And for fun, I added a little sticky note that will help visitors start up the computer with HamOS. Also please, do not mind if the window you are moving is faster or slower than your mouse pointer. (check app Help) If you have any ideas, on what I should add, comment please! Visit HamOS at: https://lkspodmol.github.io/myos1/ (Please try F11) Thanks for reading. Happy coding and happy rating!
PLEASE READ LAST DEVLOG <3 Hello. This is the 3rd and last ship of HamOS. It was incredibly fun making this project. In this ship I added a lots of things which I don’t remember (CurrentOpenAppsBar, F11, animations, styles, widgets, bug fixes, QoL updates, etc..) Please checkout every app, windows, features in HamOS. There is a hidden secret for you the second, you enter the website! My main inspiration for this project was the old era of computers and my hamster “Džambule”. (May my luck find 188 stardust for grants from this ship)...
|
1793083756.847836
|
1793170156.847836
|
|
67095
|
Lightweight minesweeper by @Pery | Stardance
|
Pery
|
0
|
1.29
|
0
|
[]
|
[{"post_id": 81301, "ts": "202 [{"post_id": 81301, "ts": "2026-10-20T18:39:25Z", "hours": 1.2889, "text": "Read more"}]...
|
Title: Lightweight minesweeper by @Pery | Stardanc Title: Lightweight minesweeper by @Pery | Stardance
Devlogs:
Read more...
|
1793105665.8977618
|
1793710465.8977618
|
|
70680
|
Test by @radioblahaj | Stardance
|
radioblahaj
|
0
|
1.27
|
0
|
[]
|
[{"post_id": 81303, "ts": "202 [{"post_id": 81303, "ts": "2026-10-20T18:50:20Z", "hours": 1.275, "text": "Desktop pet"}]...
|
Title: Test by @radioblahaj | Stardance
Devlogs:
Title: Test by @radioblahaj | Stardance
Devlogs:
Desktop pet...
|
1792525633.882755
|
1793130433.882755
|
|
66842
|
Netcity by @Mando328 | Stardance
|
Mando328
|
1
|
21.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T19:41:18Z", "hours": 21.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "NETCITY Netcity is an animated network visualizer. For now it only works in demo mode, in which it generates fake network traffic to use in the visualizer. In the future i plan on adding real network listener to show it and an audio layer generated from the network movement.", "repo": "https://github.com/Mando328/NetCity", "demo": "https://github.com/Mando328/NetCity/releases/tag/v0.2.0-alpha"}]...
|
[{"post_id": 81307, "ts": "202 [{"post_id": 81307, "ts": "2026-10-20T19:22:39Z", "hours": 5.8833, "text": "Devlog #6: Wrote the frontend and package TL;DR: Wrote the 3D engine and vibecoded the package Goal for this session: Write an visual interpretation for the data from server What I did: In three js i turn every ip into separate buildings. Ips from the same host group into districts. In the center there is a router. AI usage: Used AI to polish up the front end because I hate working with it, but like 4.5h of my time was spend on laying the basics down and than AI came and added a bit of animations and the distrification feature. AI wrote the whole instaler thing with electron. I added human vs AI coding bar here for proof of not being a vibecoder. What I learned A whole lot about THREE.js That electron exists"}, {"post_id": 79421, "ts": "2026-10-13T21:51:50Z", "hours": 7.7525, "text": "Devlog #5: Wrote memory system TL;DR: Wrote a memory system that holds the city state and sends changes that occurred to frontend Goal for this session: Make city.py track which cells changed since the last read, so the server can send small updates instead of the full state 10 times per second. What I did: Made a Cell and City class that hold info about… city and cell. Could have guessed tbh. Decided that each cell will represent one ip, and ips used by the same process will spawn (if possible) neighboring each another so we can get distinct districts. Problems I hit: My first grid generating algorithm could not spawn cells in an even way around the center. I used ai to help me with the math needed for the new one. It now works really good. What I learned Yes Math is hard Next up: Establish the actual connection that will use this code MY LONGEST SESSION EVER"}, {"post_id": 77491, "ts": "2026-10-07T06:53:25Z", "hours": 0.8111, "text": "Devlog #4: Wrote a web socket TL;DR: Wrote a simple asynchronous web socket to connect backend with frontend. Goal for this session: Write a backend connection to upcoming frontend What I did: Wrote a script that turns snapshots from the aggregator into JSON and sends them to the browser window through a websocket. It worked pretty well (see the screenshots) Problems I hit: I spent a while searching for why is the port i am trying to use already taken (I could not open connection through it) and it turned out that MY OWN SERVER.PY WAS ALREADY RUNNING AND BLOCKING THE PORT. Nonetheless, lesson learned. I also had problem with websocket.serve expecting only one argument while my handler needed two, but I solved it with lambda temporary function. What I learned What a websocket is What a async function is That I can use lambda ws: handler(ws, agg) to pass more arguments into websocket.serve when I need to. Next up: Create the 3D engine in JS"}, {"post_id": 77380, "ts": "2026-10-06T18:31:17Z", "hours": 1.2567, "text": "Devlog #3: Tested the aggregator TL;DR: Built test_run.py to bridge the fake traffic generator and the aggregator in real-time using threads. Goal for this session: Connect the background event generator to the aggregator and test them both What I did: So I simply started the generator in a separate thread and wrote a loop that calculates the packets and bytes/s in/out in each tick (100ms) . It later prints it in terminal with info about packet and event count. The output: processes=4 packets=28 events=0 in : 133078 B/s, out: 20054 B/s processes=5 packets=25 events=0 in : 114678 B/s, out: 21327 B/s processes=5 packets=27 events=1 in : 86732 B/s, out: 29492 B/s processes=4 packets=25 events=1 in : 67049 B/s, out: 7650 B/s processes=4 packets=28 events=1 in : 124895 B/s, out: 15077 B/s processes=6 packets=25 events=0 in : 83312 B/s, out: 30431 B/s processes=6 packets=48 events=0 in : 241464 B/s, out: 60790 B/s processes=5 packets=119 events=0 in : 751542 B/s, out: 74549 B/s processes=5 packets=133 events=0 in : 790185 B/s, out: 63535 B/s btw the sudden spike of packets we see at the end is a proof of the burst functionality working! Problems I hit: I accidentally overwrote the values of bytes per second so it only showed the values of the last packet, not the sum of them. Next up: Write the web socket for frontend integration (this is fully new territory for me so I am excited) P.S thanks to @ethmarks for devlog review"}, {"post_id": 77104, "ts": "2026-10-05T17:16:20Z", "hours": 1.41, "text": "Devlog #2: Writing the aggregator TL;DR: Wrote the Aggregator that empties the queue every tick and turns hundreds of single events into one snapshot. Tested it with asserts. Hit a few silent bugs on the way. Goal for this session: Write the part that actually reads the queue from the fake generator and summarizes it. What I did: Wrote the aggregator with flush() function flush() takes everything out of the queue and returns one snapshot: bytes in, bytes out and packet count per process, plus a list of one-off events (DNS and connections) Traffic with no known process goes under \"unknown\" - Added a limit of 20000 events per tick, so a flood of events can’t make one tick last forever This is how the snapshots looks like: { \"t\": 1791121104.34, \"processes\": { \"chrome.exe\": {\"bytes_in\": 1000, \"bytes_out\": 200, \"packets\": 2}, \"spotify.exe\": {\"bytes_in\": 500, \"bytes_out\": 0, \"packets\": 1}, \"unknown\": {\"bytes_in\": 0, \"bytes_out\": 120, \"packets\": 1} }, \"events\": [ {\"type\": \"dns\", \"process\": \"unknown\", \"request_name\": \"google.com\"} ]} Problems I hit: I used =+ 1 instead of += 1 so the program just set the counter to 1 instead of adding 1 What I learned: -That the bugs that do not crash the script are worse than the ones that do #Next up: test_run.py : fake generator in a thread + aggregator every 100 ms Turn per-tick sums into bytes/s P.S. : BUKU BUKU GO!"}, {"post_id": 75974, "ts": "2026-10-01T19:55:22Z", "hours": 1.4017, "text": "Devlog #1.1 Just a quick update: I managed to finish the fake traffic generator. If you want to read about it, check the last devlog. Next up: An aggregator that will collect and encapsulate all those random-timed events into organized packets"}, {"post_id": 75688, "ts": "2026-09-30T19:18:46Z", "hours": 2.4631, "text": "Devlog #1: Writing fake traffic generator TL;DR: Wrote a fake event generator for normal events, still need to do it for DNS and connections. Had trouble with time.sleep() Goal for this session Write a bigger part of fake event generator What I did Wrote helper functions for queueing, making states of processes and making packets from states Wrote a function that using them all adds packets to queue Implemented the burst functionality into it Problems I hit The output was not smooth. During 5 seconds it was sometimes generating much less packets than expected. It was because time.sleep(0.01) is not exactly 0.01s but at least 0.01s. Fix: measure the real time since the last iteration dt and scale by it, so the packet count follows real time, not loop speed. The fractional part is handled with a random coin flip, since I can’t send 0.033 of a packet: expected = state [ \"rate\" ] * mult * dt n = int ( expected ) if random . random () < ( expected - n ) : n = n + 1 for _ in range ( n ) : put ( q , make_packet ( name , prof , state )) What I learned That time.sleep can’t be trusted What threading is What queues are Next up Add DNS and connection events to this"}, {"post_id": 75320, "ts": "2026-09-29T19:00:26Z", "hours": 0.3839, "text": "Devlog #0: Project started! TL;DR: Just some basic info about the project What is this project? Netcity is going to be an audiovisual representation of internet traffic being sent from and to your device. I want to visualize the flow of packet as city traffic, apps as building and apps categories as districts. What is done? I coded the classes. Event info will be held in NamedTuples, just like that class PacketEvent(NamedTuple): time_s: float process: str | None direction : str # in or out protocol : str # tcp or udp remote_ip: str remote_port : int size: int Next up Test the data types Add fake readings generator"}]...
|
Title: Netcity by @Mando328 | Stardance
Devlogs:
Title: Netcity by @Mando328 | Stardance
Devlogs:
Devlog #0: Project started! TL;DR: Just some basic info about the project What is this project? Netcity is going to be an audiovisual representation of internet traffic being sent from and to your device. I want to visualize the flow of packet as city traffic, apps as building and apps categories as districts. What is done? I coded the classes. Event info will be held in NamedTuples, just like that class PacketEvent(NamedTuple): time_s: float process: str | None direction : str # in or out protocol : str # tcp or udp remote_ip: str remote_port : int size: int Next up Test the data types Add fake readings generator
Devlog #1: Writing fake traffic generator TL;DR: Wrote a fake event generator for normal events, still need to do it for DNS and connections. Had trouble with time.sleep() Goal for this session Write a bigger part of fake event generator What I did Wrote helper functions for queueing, making states of processes and making packets from states Wrote a function that using them all adds packets to queue Implemented the burst functionality into it Problems I hit The output was not smooth. During 5 seconds it was sometimes generating much less packets than expected. It was because time.sleep(0.01) is not exactly 0.01s but at least 0.01s. Fix: measure the real time since the last iteration dt and scale by it, so the packet count follows real time, not loop speed. The fractional part is handled with a random coin flip, since I can’t send 0.033 of a packet: expected = state [ "rate" ] * mult * dt n = int ( expected ) if random . random () < ( expected - n ) : n = n + 1 for _ in range ( n ) : put ( q , make_packet ( name , prof , state )) What I learned That time.sleep can’t be trusted What threading is What queues are Next up Add DNS and connection events to this
Devlog #1.1 Just a quick update: I managed to finish the fake traffic generator. If you want to read about it, check the last devlog. Next up: An aggregator that will collect and encapsulate all those random-timed events into organized packets
Devlog #2: Writing the aggregator TL;DR: Wrote the Aggregator that empties the queue every tick and turns hundreds of single events into one snapshot. Tested it with asserts. Hit a few silent bugs on the way. Goal for this session: Write the part that actually reads the queue from the fake generator and summarizes it. What I did: Wrote the aggregator with flush() function flush() takes everything out of the queue and returns one snapshot: bytes in, bytes out and packet count per process, plus a list of one-off events (DNS and connections) Traffic with no known process goes under "unknown" - Added a limit of 20000 events per tick, so a flood of events can’t make one tick last forever This is how the snapshots looks like: { "t": 1791121104.34, "processes": { "chrome.exe": {"bytes_in": 1000, "bytes_out": 200, "packets": 2}, "spotify.exe": {"bytes_in": 500, "bytes_out": 0, "packets": 1}, "unknown": {"bytes_in": 0, "bytes_out": 120, "packets": 1} }, "events": [ {"type": "dns", "process": "unknown", "request_name": "google.com"} ]} Problems I hit: I used =+ 1 instead of += 1 so the program just set the counter to 1 instead of adding 1 What I learned: -That the bugs that do not crash the script are worse than the ones that do #Next up: test_run.py : fake generator in a thread + aggregator every 100 ms Turn per-tick sums into bytes/s P.S. : BUKU BUKU GO!
Devlog #3: Tested the aggregator TL;DR: Built test_run.py to bridge the fake traffic generator and the aggregator in real-time using threads. Goal for this session: Connect the background event generator to the aggregator and test them both What I did: So I simply started the generator in a separate thread and wrote a loop that calculates the packets and bytes/s in/out in each tick (100ms) . It later prints it in terminal with info about packet and event count. The output: processes=4 packets=28 events=0 in : 133078 B/s, out: 20054 B/s processes=5 packets=25 events=0 in : 114678 B/s, out: 21327 B/s processes=5 packets=27 events=1 in : 86732 B/s, out: 29492 B/s processes=4 packets=25 events=1 in : 67049 B/s, out: 7650 B/s processes=4 packets=28 events=1 in : 124895 B/s, out: 15077 B/s processes=6 packets=25 events=0 in : 83312 B/s, out: 30431 B/s processes=6 packets=48 events=0 in : 241464 B/s, out: 60790 B/s processes=5 packets=119 events=0 in : 751542 B/s, out: 74549 B/s processes=5 packets=133 events=0 in : 790185 B/s, out: 63535 B/s btw the sudden spike of packets we see at the end is a proof of the burst functionality working! Problems I hit: I accidentally overwrote the values of bytes per second so it only showed the values of the last packet, not the sum of them. Next up: Write the web socket for frontend integration (this is fully new territory for me so I am excited) P.S thanks to @ethmarks for devlog review
Devlog #4: Wrote a web socket TL;DR: Wrote a simple asynchronous web socket to connect backend with frontend. Goal for this session: Write a backend connection to upcoming frontend What I did: Wrote a script that turns snapshots from the aggregator into JSON and sends them to the browser window through a websocket. It worked pretty well (see the screenshots) Problems I hit: I spent a while searching for why is the port i am trying to use already taken (I could not open connection through it) and it turned out that MY OWN SERVER.PY WAS ALREADY RUNNING AND BLOCKING THE PORT. Nonetheless, lesson learned. I also had problem with websocket.serve expecting only one argument while my handler needed two, but I solved it with lambda temporary function. What I learned What a websocket is What a async function is That I can use lambda ws: handler(ws, agg) to pass more arguments into websocket.serve when I need to. Next up: Create the 3D engine in JS
Devlog #5: Wrote memory system TL;DR: Wrote a memory system that holds the city state and sends changes that occurred to frontend Goal for this session: Make city.py track which cells changed since the last read, so the server can send small updates instead of the full state 10 times per second. What I did: Made a Cell and City class that hold info about… city and cell. Could have guessed tbh. Decided that each cell will represent one ip, and ips used by the same process will spawn (if possible) neighboring each another so we can get distinct districts. Problems I hit: My first grid generating algorithm could not spawn cells in an even way around the center. I used ai to help me with the math needed for the new one. It now works really good. What I learned Yes Math is hard Next up: Establish the actual connection that will use this code MY LONGEST SESSION EVER
Devlog #6: Wrote the frontend and package TL;DR: Wrote the 3D engine and vibecoded the package Goal for this session: Write an visual interpretation for the data from server What I did: In three js i turn every ip into separate buildings. Ips from the same host group into districts. In the center there is a router. AI usage: Used AI to polish up the front end because I hate working with it, but like 4.5h of my time was spend on laying the basics down and than AI came and added a bit of animations and the distrification feature. AI wrote the whole instaler thing with electron. I added human vs AI coding bar here for proof of not being a vibecoder. What I learned A whole lot about THREE.js That electron exists
Ships:
NETCITY Netcity is an animated network visualizer. For now it only works in demo mode, in which it generates fake network traffic to use in the visualizer. In the future i plan on adding real network listener to show it and an audio layer generated from the network movement....
|
1793102057.1953986
|
1793188457.1953986
|
|
69463
|
fast typing by @pmandal7355 | Stardance
|
pmandal7355
|
0
|
5.54
|
0
|
[]
|
[{"post_id": 81310, "ts": "202 [{"post_id": 81310, "ts": "2026-10-20T19:30:08Z", "hours": 0.6739, "text": "made the readme and now its time to ship"}, {"post_id": 81200, "ts": "2026-10-20T08:12:57Z", "hours": 1.3483, "text": "made the game , just some bugs need to be fixed and the readme is left"}, {"post_id": 80997, "ts": "2026-10-19T15:31:09Z", "hours": 0.6178, "text": "made the full parts of the rendering , just the ui is left to made and the readme is left"}, {"post_id": 80668, "ts": "2026-10-18T13:25:01Z", "hours": 1.8475, "text": "made the livery and race sentences and some tweaks, next will be the rendering part and ui , everything is from scratch"}, {"post_id": 79632, "ts": "2026-10-14T19:16:52Z", "hours": 1.0489, "text": "made some parts of the game and downloaded the dependencies and made the graphics"}]...
|
Title: fast typing by @pmandal7355 | Stardance
De Title: fast typing by @pmandal7355 | Stardance
Devlogs:
made some parts of the game and downloaded the dependencies and made the graphics
made the livery and race sentences and some tweaks, next will be the rendering part and ui , everything is from scratch
made the full parts of the rendering , just the ui is left to made and the readme is left
made the game , just some bugs need to be fixed and the readme is left
made the readme and now its time to ship...
|
1792849852.9382157
|
1793454652.9382157
|
|
70686
|
Unsub by @Capy | Stardance
|
Capy
|
0
|
0.47
|
0
|
[]
|
[{"post_id": 81318, "ts": "202 [{"post_id": 81318, "ts": "2026-10-20T20:12:13Z", "hours": 0.4694, "text": "I started coding Unsub! Currently, I’ve got a nice intro panel which smoothly transitions into the screen upon which the game will be played! (you could even call it screen-ception! ..Or not…) Anyway, I think this project will stick more than the others I’ve tried making recently! :) I’ll add some fun gameplay features. Hope to see you in the next devlog, thanks for reading! :D Anyway, I’m off to bed! :)"}]...
|
Title: Unsub by @Capy | Stardance
Devlogs:
I star Title: Unsub by @Capy | Stardance
Devlogs:
I started coding Unsub! Currently, I’ve got a nice intro panel which smoothly transitions into the screen upon which the game will be played! (you could even call it screen-ception! ..Or not…) Anyway, I think this project will stick more than the others I’ve tried making recently! :) I’ll add some fun gameplay features. Hope to see you in the next devlog, thanks for reading! :D Anyway, I’m off to bed! :)...
|
1792529224.3276656
|
1793134024.3276656
|
|
57429
|
UltimateWarioPlane by @niejestemprawdziwyy | Stard UltimateWarioPlane by @niejestemprawdziwyy | Stardance...
|
niejestemprawdziwyy
|
0
|
6.55
|
0
|
[]
|
[{"post_id": 81320, "ts": "202 [{"post_id": 81320, "ts": "2026-10-20T20:14:01Z", "hours": 4.4625, "text": "Ole mole guacamole Got seriously lost and had to fix a bug, because the game crashed but now i’ve got minigame 1 done. I also wanted to add the explosion when losing a life, because why not. The next minigame will be either clicker or space invaders clone, we’ll see. And why is piwo the substitute of heart here, when it’s a game about a plane? Because piwo is my fuel."}, {"post_id": 77100, "ts": "2026-10-05T17:08:55Z", "hours": 2.0906, "text": "Just a simple look at the platform level, most things still don’t have textures, so what would i be showing lol. For now i’m following the tutorial, but i still want to add some variations. Except the playable character being, well, a plane. And all jokes aside, flappy bird with it would be quite the idea for another minigame. And also, if anyone reads devlogs, do you know why is the plane so blurry? When i look at the image it’s normal, but in godot it’s all blurred. I made it in piskel and exported as .png. Lastly, if YOU have an idea of a fun minigame, comment down below and remember to like, subscribe and whatever byee"}]...
|
Title: UltimateWarioPlane by @niejestemprawdziwyy Title: UltimateWarioPlane by @niejestemprawdziwyy | Stardance
Devlogs:
Just a simple look at the platform level, most things still don’t have textures, so what would i be showing lol. For now i’m following the tutorial, but i still want to add some variations. Except the playable character being, well, a plane. And all jokes aside, flappy bird with it would be quite the idea for another minigame. And also, if anyone reads devlogs, do you know why is the plane so blurry? When i look at the image it’s normal, but in godot it’s all blurred. I made it in piskel and exported as .png. Lastly, if YOU have an idea of a fun minigame, comment down below and remember to like, subscribe and whatever byee
Ole mole guacamole Got seriously lost and had to fix a bug, because the game crashed but now i’ve got minigame 1 done. I also wanted to add the explosion when losing a life, because why not. The next minigame will be either clicker or space invaders clone, we’ll see. And why is piwo the substitute of heart here, when it’s a game about a plane? Because piwo is my fuel....
|
1792705933.8041182
|
1793310733.8041182
|
|
37056
|
Main Website/Portfolio by @reshiiiram | Stardance
|
reshiiiram
|
2
|
23.0
|
61
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T20:28:46Z", "hours": 8.0, "multiplier": 7.28, "payout": 61, "blessing": "neutral", "text": "Alright!!! this is going to be my website’s second ship! Please check out the art gallery and the cool image map! I’m really proud of how this portfolio came out and I will be adding the photography page next and may be a blog page next ship.", "repo": "https://github.com/mairemare/reshi-the-coolram", "demo": "https://mairemare.github.io/reshi-the-coolram/"}, {"ship_num": 2, "ts": "2026-07-26T04:11:47Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "It’s finally done!!! I really love how this website turned out after 15 hours of coding. This website really shows my interests and love for space. My website includes: an about me, projects section, and an updates section where I’ll put any important updates on my projects or my life. I’m gonna improve more on website making so that I can promote my future projects even more and my friends with their fan merch businesses. Thank you for all your support! I might take a short break on coding after this and begin on Library of Halcyon.", "repo": "https://github.com/mairemare/reshi-the-coolram", "demo": "https://mairemare.github.io/reshi-the-coolram/"}]...
|
[{"post_id": 81322, "ts": "202 [{"post_id": 81322, "ts": "2026-10-20T20:24:59Z", "hours": 0.4608, "text": "Alright!!! my website it ready for shipping! Not all the pages are done but the gallery is up!"}, {"post_id": 81109, "ts": "2026-10-19T22:17:55Z", "hours": 0.8553, "text": "Image Map Complete! I am now currently adding my art in my art gallery and I will potentially add my photos next."}, {"post_id": 80882, "ts": "2026-10-19T04:44:37Z", "hours": 1.2711, "text": "Added my first link on image map. I’m having a slight problem on alignment but that just means I need to watch a tut on how to actually do this. I also added some of the stuff back from the first version of the website."}, {"post_id": 78923, "ts": "2026-10-12T01:57:39Z", "hours": 1.0742, "text": "reworked about me Okay so I reworked the about me section and put up small details about myself. I will be working on adding coordinates on my image map after I’m done with the main page so that there wouldn’t be any conflict (just in case that it turns my html does not care that the image is a separate entity)."}, {"post_id": 78739, "ts": "2026-10-11T13:25:37Z", "hours": 1.3261, "text": "progress^^ I’m working on an image map so my website can look more cooler and colorful. Might make mini-pages alongside that to show all my artworks and coding projects. I should be able to ship this before stardance ends."}, {"post_id": 60642, "ts": "2026-09-03T04:03:41Z", "hours": 2.9783, "text": "I’ve been reworking on my main website layout (since witchyware is out and there isn’t enough space on the page). I’m still sticking to the space concept and I’m gonna try and figure out the script for making tabs. Probably tomorrow night I’ll think of a different header design."}, {"post_id": 46158, "ts": "2026-08-13T05:36:00Z", "hours": 0.3444, "text": "I’m back! — okay so I updated the website to put concept arts and new updates. I’ve been watching and learning css stuff so that I can make my website easier to navigate. My plan is to separate the sections and the projects…something like that. Then, I’ll add a gallery section and other stuff. — I think I’ll be able to update it once I finish half of the warioware mission."}, {"post_id": 34961, "ts": "2026-07-26T02:47:43Z", "hours": 4.6428, "text": "My website is about to be ready for shipping! I can’t figure out how to get the link to open my website instead of my readme. Either way, here’s a preview of my read me!"}, {"post_id": 34417, "ts": "2026-07-25T03:27:28Z", "hours": 3.8119, "text": "Almost done with the site! All I need to do is to add a few aesthetics and more mechanisms. Anyways, here’s a preview of the projects section. Thank you for all your support chat."}, {"post_id": 33894, "ts": "2026-07-24T05:29:07Z", "hours": 2.3725, "text": "New Layout!! I finally got the arrangement and the buttons to work. I might be able to ship this tomorrow or the day after that."}, {"post_id": 33350, "ts": "2026-07-23T05:56:41Z", "hours": 1.1056, "text": "a lot of progress!! I discovered the existence of img src and text align and underwent an Industrial Revolution. I just need to learn how to code buttons and I’m off to designing and adding stuff."}, {"post_id": 33329, "ts": "2026-07-23T04:24:55Z", "hours": 1.9858, "text": "After 3 Youtube tutorials and 10 google searches later, I finally made some great progress! Well, it doesn’t really look like what I had planned, but everything is starting to come together."}, {"post_id": 32784, "ts": "2026-07-22T05:14:34Z", "hours": 0.4086, "text": "Lowkey finished my website’s outline and what it should look like. I’m working on a cyberpunk style website where I can put up my works and all that stuff."}, {"post_id": 32768, "ts": "2026-07-22T04:13:21Z", "hours": 0.6614, "text": "Just finished the personal web tutorial. Not bad as my first coding project that isn’t block based. I’m gonna start outlining what I want my web to look like on Canva and learn CSS after this log."}]...
|
Title: Main Website/Portfolio by @reshiiiram | Sta Title: Main Website/Portfolio by @reshiiiram | Stardance
Devlogs:
Just finished the personal web tutorial. Not bad as my first coding project that isn’t block based. I’m gonna start outlining what I want my web to look like on Canva and learn CSS after this log.
Lowkey finished my website’s outline and what it should look like. I’m working on a cyberpunk style website where I can put up my works and all that stuff.
After 3 Youtube tutorials and 10 google searches later, I finally made some great progress! Well, it doesn’t really look like what I had planned, but everything is starting to come together.
a lot of progress!! I discovered the existence of img src and text align and underwent an Industrial Revolution. I just need to learn how to code buttons and I’m off to designing and adding stuff.
New Layout!! I finally got the arrangement and the buttons to work. I might be able to ship this tomorrow or the day after that.
Almost done with the site! All I need to do is to add a few aesthetics and more mechanisms. Anyways, here’s a preview of the projects section. Thank you for all your support chat.
My website is about to be ready for shipping! I can’t figure out how to get the link to open my website instead of my readme. Either way, here’s a preview of my read me!
I’m back! — okay so I updated the website to put concept arts and new updates. I’ve been watching and learning css stuff so that I can make my website easier to navigate. My plan is to separate the sections and the projects…something like that. Then, I’ll add a gallery section and other stuff. — I think I’ll be able to update it once I finish half of the warioware mission.
I’ve been reworking on my main website layout (since witchyware is out and there isn’t enough space on the page). I’m still sticking to the space concept and I’m gonna try and figure out the script for making tabs. Probably tomorrow night I’ll think of a different header design.
progress^^ I’m working on an image map so my website can look more cooler and colorful. Might make mini-pages alongside that to show all my artworks and coding projects. I should be able to ship this before stardance ends.
reworked about me Okay so I reworked the about me section and put up small details about myself. I will be working on adding coordinates on my image map after I’m done with the main page so that there wouldn’t be any conflict (just in case that it turns my html does not care that the image is a separate entity).
Added my first link on image map. I’m having a slight problem on alignment but that just means I need to watch a tut on how to actually do this. I also added some of the stuff back from the first version of the website.
Image Map Complete! I am now currently adding my art in my art gallery and I will potentially add my photos next.
Alright!!! my website it ready for shipping! Not all the pages are done but the gallery is up!
Ships:
It’s finally done!!! I really love how this website turned out after 15 hours of coding. This website really shows my interests and love for space. My website includes: an about me, projects section, and an updates section where I’ll put any important updates on my projects or my life. I’m gonna improve more on website making so that I can promote my future projects even more and my friends with their fan merch businesses. Thank you for all your support! I might take a short break on coding after this and begin on Library of Halcyon.
Alright!!! this is going to be my website’s second ship! Please check out the art gallery and the cool image map! I’m really proud of how this portfolio came out and I will be adding the photography page next and may be a blog page next ship....
|
1793091247.515727
|
1793177647.515727
|