|
38869
|
Han-Yang's page by @Han-Yang | Stardance
|
Han-Yang
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-24T17:30:22Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple 3 page website showing my hobbies, interests, and contacts.", "repo": "https://github.com/hydraprimus/My-personal-Site", "demo": "https://hydraprimus.github.io/My-personal-Site/"}]...
|
[{"post_id": 34140, "ts": "202 [{"post_id": 34140, "ts": "2026-07-24T17:19:59Z", "hours": 1.1225, "text": "I added a hobbies and contact section to my page. I removed the interests, cus that’s kind of the same thing as hobbies. Also all the navbar buttons work now and also change color when hovering!"}, {"post_id": 33735, "ts": "2026-07-23T21:46:30Z", "hours": 0.765, "text": "just finished making and styling the home page for my website."}]...
|
Title: Han-Yang's page by @Han-Yang | Stardanc Title: Han-Yang's page by @Han-Yang | Stardance
Devlogs:
just finished making and styling the home page for my website.
I added a hobbies and contact section to my page. I removed the interests, cus that’s kind of the same thing as hobbies. Also all the navbar buttons work now and also change color when hovering!
Ships:
I made a simple 3 page website showing my hobbies, interests, and contacts....
|
1793652551.488311
|
1793738951.488311
|
|
29857
|
IndianOS by @sk_zaidji | Stardance
|
sk_zaidji
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-03T14:33:45Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built IndianOS, a browser-based desktop operating system inspired by India using HTML, CSS, and JavaScript. It includes a desktop interface, Start Menu, draggable windows, Files, Notes, Calculator, a live IST clock, a boot screen, notification toasts, an About window, and support for maximizing windows by double-clicking the title bar. The most challenging part was implementing the draggable window system. I had to manage mouse events, calculate the correct window position while dragging, and handle the window stacking order (z-index) so the active window always appears on top. I also worked on making the maximize/restore behavior smooth and ensuring all the UI components worked together. I’m proud that I built a complete desktop-like experience from scratch without using any frameworks. The project has an original Indian-inspired theme, a clean interface, and several extra features beyond the basic tutorial, such as the boot screen, notification toasts, About window, and window maximize functionality. It gave me a much better understanding of JavaScript event handling and UI development.", "repo": "https://github.com/MdZaidji/my-first-webos", "demo": "https://mdzaidji.github.io/my-first-webos/"}]...
|
[{"post_id": 21492, "ts": "202 [{"post_id": 21492, "ts": "2026-07-03T13:57:55Z", "hours": 0.9119, "text": "🚀 Devlog #3 – Final Polish & Completion Today I completed IndianOS and focused on polishing the overall user experience.What I added🚀 Boot screen with a loading animation before the desktop appears.🔔 Notification toasts that display when applications are opened.🪟 Double-click on a window title bar to maximize and restore windows.ℹ️ An About IndianOS window with project information.🎨 Improved the desktop layout, taskbar, and window styling for a cleaner, more modern look.ChallengesThe biggest challenge was making the window system feel smooth and responsive. I refined the dragging logic, improved window layering with z-index, and made sure maximizing and restoring windows worked correctly without affecting other open applications.What I learnedManaging DOM events for draggable interfaces.Using JavaScript to control window states and interactions.Improving UI/UX with small visual details like animations and notifications.Organizing HTML, CSS, and JavaScript into a simple desktop-style application.Final Features🖥️ Desktop Interface📋 Start Menu🪟 Multiple Draggable Windows📁 Files App📝 Notes App🧮 Calculator🕒 Live IST Clock🚀 Boot Screen🔔 Notification Toasts🪟 Double-click to Maximize Windowsℹ️ About IndianOSBuilding IndianOS was a fun way to learn more about DOM manipulation, event handling, and designing a desktop-like interface entirely with HTML, CSS, and JavaScript. This project also gave me experience structuring a larger frontend project while keeping the interface simple and responsive."}, {"post_id": 21460, "ts": "2026-07-03T12:46:29Z", "hours": 1.0086, "text": "Devlog 2 – Window Manager Today I implemented the core of IndianOS: draggable windows. I built separate windows for Files, Notes, and Calculator, added close buttons, and made windows come to the front when clicked. The biggest challenge was handling dragging smoothly without affecting other windows, but after debugging the mouse events I got it working."}, {"post_id": 21427, "ts": "2026-07-03T11:35:16Z", "hours": 1.1467, "text": "Devlog 1 – Starting IndianOS 🇮🇳 Today I started building IndianOS, a browser-based desktop operating system inspired by India. Instead of copying the tutorial exactly, I wanted to create my own look and feel.So far I have:Created the project structure.Built the desktop layout.Added desktop icons.Added a taskbar with a live IST clock.Chosen an India-inspired theme for the UI.Next, I’ll work on draggable windows and build the core applications like Files, Notes, and Calculator."}]...
|
Title: IndianOS by @sk_zaidji | Stardance
Devlogs Title: IndianOS by @sk_zaidji | Stardance
Devlogs:
Devlog 1 – Starting IndianOS 🇮🇳 Today I started building IndianOS, a browser-based desktop operating system inspired by India. Instead of copying the tutorial exactly, I wanted to create my own look and feel.So far I have:Created the project structure.Built the desktop layout.Added desktop icons.Added a taskbar with a live IST clock.Chosen an India-inspired theme for the UI.Next, I’ll work on draggable windows and build the core applications like Files, Notes, and Calculator.
Devlog 2 – Window Manager Today I implemented the core of IndianOS: draggable windows. I built separate windows for Files, Notes, and Calculator, added close buttons, and made windows come to the front when clicked. The biggest challenge was handling dragging smoothly without affecting other windows, but after debugging the mouse events I got it working.
🚀 Devlog #3 – Final Polish & Completion Today I completed IndianOS and focused on polishing the overall user experience.What I added🚀 Boot screen with a loading animation before the desktop appears.🔔 Notification toasts that display when applications are opened.🪟 Double-click on a window title bar to maximize and restore windows.ℹ️ An About IndianOS window with project information.🎨 Improved the desktop layout, taskbar, and window styling for a cleaner, more modern look.ChallengesThe biggest challenge was making the window system feel smooth and responsive. I refined the dragging logic, improved window layering with z-index, and made sure maximizing and restoring windows worked correctly without affecting other open applications.What I learnedManaging DOM events for draggable interfaces.Using JavaScript to control window states and interactions.Improving UI/UX with small visual details like animations and notifications.Organizing HTML, CSS, and JavaScript into a simple desktop-style application.Final Features🖥️ Desktop Interface📋 Start Menu🪟 Multiple Draggable Windows📁 Files App📝 Notes App🧮 Calculator🕒 Live IST Clock🚀 Boot Screen🔔 Notification Toasts🪟 Double-click to Maximize Windowsℹ️ About IndianOSBuilding IndianOS was a fun way to learn more about DOM manipulation, event handling, and designing a desktop-like interface entirely with HTML, CSS, and JavaScript. This project also gave me experience structuring a larger frontend project while keeping the interface simple and responsive.
Ships:
I built IndianOS, a browser-based desktop operating system inspired by India using HTML, CSS, and JavaScript. It includes a desktop interface, Start Menu, draggable windows, Files, Notes, Calculator, a live IST clock, a boot screen, notification toasts, an About window, and support for maximizing windows by double-clicking the title bar. The most challenging part was implementing the draggable window system. I had to manage mouse events, calculate the correct window position while dragging, and handle the window stacking order (z-index) so the active window always appears on top. I also worked on making the maximize/restore behavior smooth and ensuring all the UI components worked together. I’m proud that I built a complete desktop-like experience from scratch without using any frameworks. The project has an original Indian-inspired theme, a clean interface, and several extra features beyond the basic tutorial, such as the boot screen, notification toasts, About window, and window maximize functionality. It gave me a much better understanding of JavaScript event handling and UI development....
|
1793652552.6437433
|
1793738952.6437433
|
|
26767
|
Angel's WebOS by @angelneupane | Stardance
|
angelneupane
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-03T13:04:09Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I present the AngelOS! I created a webOS with 4 app windows, which are: DateTime Window My LinkedIn A to-do list A coin flip app that uses the Math.random() function to pick heads or tails at random and tells the user if they win or lose. The greatest difficulty I faced was setting up hackatime on github codespaces. After I had that part down, everything was smooth. Figuring out how to implement the coin flip function was a challenge, too. Before deciding on the coin flip app, I tried creating a CPS counter app, but it was too difficult, so I dropped the idea.", "repo": "https://github.com/angelneupane/AngelOS", "demo": "https://angelneupane.github.io/AngelOS/"}]...
|
[{"post_id": 21461, "ts": "202 [{"post_id": 21461, "ts": "2026-07-03T12:46:54Z", "hours": 0.6733, "text": "Devlog [5] Created a coinflip app using the Math.random() function."}, {"post_id": 21400, "ts": "2026-07-03T10:07:39Z", "hours": 1.4547, "text": "Devlog [4] Added a button to close the windows and added icons to open specific windows and made a simple to-do list app that uses tag."}, {"post_id": 20769, "ts": "2026-07-02T13:46:16Z", "hours": 0.7914, "text": "Devlog [3] Changed the inline CSS that was common for all elements to Internal CSS, added the drag window feature, added headers to each window, made separate windows for date and time and LinkedIn, changed the background image, added multiple classes to classify div as draggable and windows."}, {"post_id": 20186, "ts": "2026-07-01T18:51:22Z", "hours": 0.4386, "text": "Devlog[2] Created a div for the heading, my LinkedIn profile and the date and time function and made it kinda fit the theme."}, {"post_id": 20161, "ts": "2026-07-01T18:20:39Z", "hours": 0.6114, "text": "Devlog[1] I added a background image to the body, added a heading and attached a link to github.com. Most of the time was spent trying to set up hackatime because I just couldn’t get it to work right."}]...
|
Title: Angel's WebOS by @angelneupane | Starda Title: Angel's WebOS by @angelneupane | Stardance
Devlogs:
Devlog[1] I added a background image to the body, added a heading and attached a link to github.com. Most of the time was spent trying to set up hackatime because I just couldn’t get it to work right.
Devlog[2] Created a div for the heading, my LinkedIn profile and the date and time function and made it kinda fit the theme.
Devlog [3] Changed the inline CSS that was common for all elements to Internal CSS, added the drag window feature, added headers to each window, made separate windows for date and time and LinkedIn, changed the background image, added multiple classes to classify div as draggable and windows.
Devlog [4] Added a button to close the windows and added icons to open specific windows and made a simple to-do list app that uses tag.
Devlog [5] Created a coinflip app using the Math.random() function.
Ships:
I present the AngelOS! I created a webOS with 4 app windows, which are: DateTime Window My LinkedIn A to-do list A coin flip app that uses the Math.random() function to pick heads or tails at random and tells the user if they win or lose. The greatest difficulty I faced was setting up hackatime on github codespaces. After I had that part down, everything was smooth. Figuring out how to implement the coin flip function was a challenge, too. Before deciding on the coin flip app, I tried creating a CPS counter app, but it was too difficult, so I dropped the idea....
|
1793652553.8121047
|
1793738953.8121047
|
|
27423
|
Adobe Lightroom Clone by @catlover125r | Stardance
|
catlover125r
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-28T06:55:21Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Open-source, catalog-based, non-destructive RAW photo editor (Lightroom-class), GPLv3, 100% local AI. Engine in Rust, one wgpu shader codebase, ONNX Runtime for all ML. This repo contains the Phase-0 spike + a working Phase-1 (MVP) with a real desktop GUI — proven end-to-end on Apple Silicon (Metal + CoreML): crates/raw-decode — LibRaw → linear 16-bit RGB + metadata probe, via a stable C-ABI shim. crates/recipe — serde parametric edit-recipe (sparse, identity-default). crates/catalog — SQLite catalog: import folders of RAWs (with EXIF), read/write recipes, idempotent. crates/gpu — wgpu develop pipeline (WB, exposure, contrast, highlights/shadows/whites/blacks, vibrance/saturation, dehaze, 8-band HSL, post-crop vignette, grain), shared by the live preview and headless export. Preview == export. cargo run -p gpu –example modtest checks the modules. crates/app — egui desktop app: a Library grid (background-decoded thumbnails) and a Develop view with live sliders driving the GPU pipeline, plus the import / –recipe / –export / –selftest headless CLI. crates/ai-smoke — ONNX Runtime + CoreML EP smoke test for SAM2. catalog/schema.sql — full SQLite catalog schema (Task 3). docs/ — stack decisions, recipe format, develop pipeline, model packaging.", "repo": "https://github.com/catlover125r/AdobeMaybeLight", "demo": "https://github.com/catlover125r/AdobeMaybeLight/releases/tag/v0.1.0"}]...
|
[{"post_id": 17440, "ts": "202 [{"post_id": 17440, "ts": "2026-06-28T06:52:08Z", "hours": 3.8881, "text": "It’s looking good. I used Rust for the first time to make this project. As you can see below, the sliders work well!"}]...
|
Title: Adobe Lightroom Clone by @catlover125r | St Title: Adobe Lightroom Clone by @catlover125r | Stardance
Devlogs:
It’s looking good. I used Rust for the first time to make this project. As you can see below, the sliders work well!
Ships:
Open-source, catalog-based, non-destructive RAW photo editor (Lightroom-class), GPLv3, 100% local AI. Engine in Rust, one wgpu shader codebase, ONNX Runtime for all ML. This repo contains the Phase-0 spike + a working Phase-1 (MVP) with a real desktop GUI — proven end-to-end on Apple Silicon (Metal + CoreML): crates/raw-decode — LibRaw → linear 16-bit RGB + metadata probe, via a stable C-ABI shim. crates/recipe — serde parametric edit-recipe (sparse, identity-default). crates/catalog — SQLite catalog: import folders of RAWs (with EXIF), read/write recipes, idempotent. crates/gpu — wgpu develop pipeline (WB, exposure, contrast, highlights/shadows/whites/blacks, vibrance/saturation, dehaze, 8-band HSL, post-crop vignette, grain), shared by the live preview and headless export. Preview == export. cargo run -p gpu –example modtest checks the modules. crates/app — egui desktop app: a Library grid (background-decoded thumbnails) and a Develop view with live sliders driving the GPU pipeline, plus the import / –recipe / –export / –selftest headless CLI. crates/ai-smoke — ONNX Runtime + CoreML EP smoke test for SAM2. catalog/schema.sql — full SQLite catalog schema (Task 3). docs/ — stack decisions, recipe format, develop pipeline, model packaging....
|
1793652557.3688188
|
1793738957.3688188
|
|
54669
|
BLACKBOX (complain filing application) by @Fabulou BLACKBOX (complain filing application) by @FabulousHippoOfOrangeLake | Stardance...
|
FabulousHippoOfOrangeLake
|
1
|
22.5
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T16:28:54Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a python desktop app for student feedback, issue and complain management. The main idea was to provide students with one core place to report problems. Students use their roll number for logins, they can upvote issues to show its urgency, they can change their own password. There is also a separate admin dashboard with issues organised cleanly according to priority. I am proud of using Custom Tkinter for the first time but not proud of having 1200 lines of code in one file! I hope u find this project worthy and fun to use!", "repo": "https://github.com/sharmashashwat27-source/BLACKBOX", "demo": "https://github.com/sharmashashwat27-source/BLACKBOX/releases/tag/custom-Tkinter"}]...
|
[{"post_id": 72698, "ts": "202 [{"post_id": 72698, "ts": "2026-09-23T15:05:48Z", "hours": 7.5047, "text": "DEVLOG #9 idk SO i added so may features and it was such a pain in the ass to retain feature when adding new ones i kept messing up here and there and even forgot to call the simplest of functions. But now i’m here and this is what I added: Different types of admin (headmaster, housemaster senior master etc.) feature to chose who u want to submit the report too feature to forward the issue (as an admin) - if the particular admin finds its not for him logging in if ur in guest mode and logging out if ur in student mode my reports and all reports button added a view issue button which lets u view the full issue instead of the dot expanding thing i had before lastly the stupidest but most needed asterisk while entering passwords."}, {"post_id": 64289, "ts": "2026-09-08T15:59:34Z", "hours": 0.8783, "text": "DEVLOG#9 So today I finished the new gui design it isn’t as good and as clean as my refernce but I am still happ with it i even added the code from where the gui redesign started. by the way i had to change this exact code numerous timessssss. This devlog includes the most time i spent vibe coding , and regretted………….. So i hope to add 2-3 more features like allowing admins to change the password(maybe) and I hope to ship this project by day after tommorow :)"}, {"post_id": 63630, "ts": "2026-09-07T15:37:46Z", "hours": 1.7175, "text": "DEVLOG#8 Today I fixed ALL of the mistakes like when u get the admin passowrd wrong whilst changing the status of a Issue report shitt was working great i hope to ship this before the 10th buutttttttttttttt….. Life isn’t so easy, I wanted to UPGRADE the GUI one last time to make it look like a decent application and I am still in the middle of that but i will definitely update u according to my progress. Here my inspiration ( not where i am rn ) I am aiming for smthing like this for my app"}, {"post_id": 60904, "ts": "2026-09-03T15:40:22Z", "hours": 1.0444, "text": "DEVLOG #8 So today I gave the same functions i gave to student view yesterday to admin view but better I added a priority calculator, a show more show less thing from yesterday and the filter thingy"}, {"post_id": 60289, "ts": "2026-09-02T15:47:16Z", "hours": 1.0939, "text": "DEVOG#7 This took way more time than it should have, so when i ran the program today I realized that the filter function wasn’t working properly and to fix i ended up removing the show show less option which i got working after loads of struggles due to some of the STUPIDEST mistakes…"}, {"post_id": 59638, "ts": "2026-09-01T15:38:45Z", "hours": 2.1444, "text": "DEVLOG #6 SO today consisted of me correcting my stupid mistakes again…. But this time I actually fixed everything and I also added a show more, show less option/button because too much text was ending up pushing the upvote button off the screen, making it IMPOSSIBLE to upvote. I also add a feature that lets the users sort and classify the problems so its easier to manage rather than having like 20+ problems on your page and having to read through ALL of themm.. Along with that I even took the concept of taking urgency as input out of the equation as I didn’t want people to be writing “The urgency is 9999 bro trust me”; to deal with such larpers I added basic yet effective limiters…"}, {"post_id": 59536, "ts": "2026-09-01T12:40:57Z", "hours": 0.8722, "text": "DEVLOG#5 So I basically worked on adding a function to chage the status of a problem, something only admins can access. Liittle did I know I would mess up half of the code smhw, even Chatgpt wasn’t helping but after fixing some of the stupidest mistakes I got the code running, but yes there are still some problemss…"}, {"post_id": 57405, "ts": "2026-08-29T15:28:54Z", "hours": 1.0681, "text": "DEVLOG#4 so today included touching up and finessing because i forgot to add features, i also added a change password function messed around with customtkinter but failed miserably hope to do some absolute legendary progress tomorrow."}, {"post_id": 56566, "ts": "2026-08-28T11:29:59Z", "hours": 3.6278, "text": "DEVLOG#3 Absolutely Legendary progress, almost done with the final GUI looks awesome. I also worked on major backend code addes passwords and login statements for both students and admins and i also ensured that one person cannot upvote on an issue more than once. I also added guest mode. Tomorrow will include making loads of changes and making the GUI better!"}, {"post_id": 55581, "ts": "2026-08-27T15:05:38Z", "hours": 1.0158, "text": "DEVLOG#2 So today was a mess because I had to go around fighting teachers in my school just so I could have my OWN LAPTOP, a big pain in the *ss but all of that stuff aside. Today’s progress was decent i worked on the GUI alot messed around with Tkinter diferrent sizes and style and I also added a admin tab to the website which is still in progress because I ran into numerous errors and I am still pinpointing my mistakes. Along with the admin tab I added a login interface type of thig and that turned out to be a task because again MY FIRST TIME designing an OAUTH. Hope to improve the GUI a lotttttt!!!!!!! but i am satisfied with what i have right now. till we meet againnnnnn………."}, {"post_id": 55107, "ts": "2026-08-26T15:47:57Z", "hours": 1.0783, "text": "DEVLOG#1 First time working with JSON and Tkinter till now i have coded the frontend of the app to some extent and hope to start working on the backend soon. This was also my first time using JSON, I used it to make kind of like a database which store previous complains and uses this stored data to develop a combined report of similar issues. Lovely experience, but not going to lie Gemini helped me out a lot to spot my mistakes in like every 20-25 lines and it turned out to be somewhat a pain but I hope that JSON and Tkinter will help me developing future projects."}]...
|
Title: BLACKBOX (complain filing application) by @ Title: BLACKBOX (complain filing application) by @FabulousHippoOfOrangeLake | Stardance
Devlogs:
DEVLOG#1 First time working with JSON and Tkinter till now i have coded the frontend of the app to some extent and hope to start working on the backend soon. This was also my first time using JSON, I used it to make kind of like a database which store previous complains and uses this stored data to develop a combined report of similar issues. Lovely experience, but not going to lie Gemini helped me out a lot to spot my mistakes in like every 20-25 lines and it turned out to be somewhat a pain but I hope that JSON and Tkinter will help me developing future projects.
DEVLOG#2 So today was a mess because I had to go around fighting teachers in my school just so I could have my OWN LAPTOP, a big pain in the *ss but all of that stuff aside. Today’s progress was decent i worked on the GUI alot messed around with Tkinter diferrent sizes and style and I also added a admin tab to the website which is still in progress because I ran into numerous errors and I am still pinpointing my mistakes. Along with the admin tab I added a login interface type of thig and that turned out to be a task because again MY FIRST TIME designing an OAUTH. Hope to improve the GUI a lotttttt!!!!!!! but i am satisfied with what i have right now. till we meet againnnnnn……….
DEVLOG#3 Absolutely Legendary progress, almost done with the final GUI looks awesome. I also worked on major backend code addes passwords and login statements for both students and admins and i also ensured that one person cannot upvote on an issue more than once. I also added guest mode. Tomorrow will include making loads of changes and making the GUI better!
DEVLOG#4 so today included touching up and finessing because i forgot to add features, i also added a change password function messed around with customtkinter but failed miserably hope to do some absolute legendary progress tomorrow.
DEVLOG#5 So I basically worked on adding a function to chage the status of a problem, something only admins can access. Liittle did I know I would mess up half of the code smhw, even Chatgpt wasn’t helping but after fixing some of the stupidest mistakes I got the code running, but yes there are still some problemss…
DEVLOG #6 SO today consisted of me correcting my stupid mistakes again…. But this time I actually fixed everything and I also added a show more, show less option/button because too much text was ending up pushing the upvote button off the screen, making it IMPOSSIBLE to upvote. I also add a feature that lets the users sort and classify the problems so its easier to manage rather than having like 20+ problems on your page and having to read through ALL of themm.. Along with that I even took the concept of taking urgency as input out of the equation as I didn’t want people to be writing “The urgency is 9999 bro trust me”; to deal with such larpers I added basic yet effective limiters…
DEVOG#7 This took way more time than it should have, so when i ran the program today I realized that the filter function wasn’t working properly and to fix i ended up removing the show show less option which i got working after loads of struggles due to some of the STUPIDEST mistakes…
DEVLOG #8 So today I gave the same functions i gave to student view yesterday to admin view but better I added a priority calculator, a show more show less thing from yesterday and the filter thingy
DEVLOG#8 Today I fixed ALL of the mistakes like when u get the admin passowrd wrong whilst changing the status of a Issue report shitt was working great i hope to ship this before the 10th buutttttttttttttt….. Life isn’t so easy, I wanted to UPGRADE the GUI one last time to make it look like a decent application and I am still in the middle of that but i will definitely update u according to my progress. Here my inspiration ( not where i am rn ) I am aiming for smthing like this for my app
DEVLOG#9 So today I finished the new gui design it isn’t as good and as clean as my refernce but I am still happ with it i even added the code from where the gui redesign started. by the way i had to change this exact code numerous timessssss. This devlog includes the most time i spent vibe coding , and regretted………….. So i hope to add 2-3 more features like allowing admins to change the password(maybe) and I hope to ship this project by day after tommorow :)
DEVLOG #9 idk SO i added so may features and it was such a pain in the ass to retain feature when adding new ones i kept messing up here and there and even forgot to call the simplest of functions. But now i’m here and this is what I added: Different types of admin (headmaster, housemaster senior master etc.) feature to chose who u want to submit the report too feature to forward the issue (as an admin) - if the particular admin finds its not for him logging in if ur in guest mode and logging out if ur in student mode my reports and all reports button added a view issue button which lets u view the full issue instead of the dot expanding thing i had before lastly the stupidest but most needed asterisk while entering passwords.
Ships:
I made a python desktop app for student feedback, issue and complain management. The main idea was to provide students with one core place to report problems. Students use their roll number for logins, they can upvote issues to show its urgency, they can change their own password. There is also a separate admin dashboard with issues organised cleanly according to priority. I am proud of using Custom Tkinter for the first time but not proud of having 1200 lines of code in one file! I hope u find this project worthy and fun to use!...
|
1793652559.3501043
|
1793738959.3501043
|
|
46856
|
pi - web os by @NotSuspiciousProgrammer | Stardanc pi - web os by @NotSuspiciousProgrammer | Stardance...
|
NotSuspiciousProgrammer
|
2
|
9.0
|
24
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-14T00:06:08Z", "hours": 6.0, "multiplier": 3.5, "payout": 24, "blessing": "neutral", "text": "I made a PI-THEMED WEB-OS!! The most challenging part was the script for making “windows” draggable; I had to look through some tutorials for that. Either way, as a professional pi enthusiast, I’m pretty excited for this pi theme! As part of the WebOS2 Mission, I have more than three new features from what I submitted to WebOS1. Some of them include the Settings App, Bible App, and sound effects that say the next digit of pi each time you open/close an app. That part was very fun :P I hope you enjoy my Pi webOS! Please provide feedback on my project, whether you’re a pi enthusiast or not :)", "repo": "https://github.com/kpoovakan/piwebos", "demo": "https://kpoovakan.github.io/piwebos"}, {"ship_num": 2, "ts": "2026-08-11T23:36:39Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a pi-themed “operating system” that can run in a web browser! The hardest part for me was making the windows draggable, since I ran into some bugs even while following the guide. Thanks to some clarification in a W3Schools article, I managed to fix those bugs. I have some features in this OS that the guide doesn’t list, one which is the app that plays music. The other is the helpful text at the bottom of the screen (telling you where the apps can be opened!) that disappears when an app is opened. I enjoyed making this pi-themed “operating system”. I hope you enjoy exploring it!", "repo": "https://github.com/kpoovakan/piwebos", "demo": "https://kpoovakan.github.io/piwebos"}]...
|
[{"post_id": 67747, "ts": "202 [{"post_id": 67747, "ts": "2026-09-13T23:59:20Z", "hours": 1.6781, "text": "I updated my README! Now it has two images, a setup guide, and an organized table for my “apps”. There’s also a features list and a small credits section. I also went through my code and fixed all the bugs I could find. Time to ship!!"}, {"post_id": 66994, "ts": "2026-09-13T00:24:00Z", "hours": 3.9725, "text": "I added more apps to my webOS! Now it has a pi app, games, a web app, an e-mail redirect, a file manager, a notepad, a calculator, a Turbowarp redirect, a music app, YouTube, maps, a flight tracker redirect, a Bible app, and a settings app. The settings app lets you customize things like the time format and sound effect preferences."}, {"post_id": 45470, "ts": "2026-08-11T23:27:57Z", "hours": 0.8372, "text": "I added the content to my three applications! Now, there’s an app with stuff about pi, an app featuring my other coding projects, and a section to play popular classical piano pieces."}, {"post_id": 45452, "ts": "2026-08-11T22:21:00Z", "hours": 1.5489, "text": "I added more CSS styles and customization. I also made the “windows” draggable with JavaScript, and I added buttons to open and close the app placeholders. Next I’ll be adding things to the apps themselves!"}, {"post_id": 45398, "ts": "2026-08-11T20:32:05Z", "hours": 0.325, "text": "Added core code for my pi-themed web OS! I created a blue color palette for the CSS, added placeholder tags for what shall soon become the OS apps, and implemented a pi-themed background."}]...
|
Title: pi - web os by @NotSuspiciousProgrammer | S Title: pi - web os by @NotSuspiciousProgrammer | Stardance
Devlogs:
Added core code for my pi-themed web OS! I created a blue color palette for the CSS, added placeholder tags for what shall soon become the OS apps, and implemented a pi-themed background.
I added more CSS styles and customization. I also made the “windows” draggable with JavaScript, and I added buttons to open and close the app placeholders. Next I’ll be adding things to the apps themselves!
I added the content to my three applications! Now, there’s an app with stuff about pi, an app featuring my other coding projects, and a section to play popular classical piano pieces.
I added more apps to my webOS! Now it has a pi app, games, a web app, an e-mail redirect, a file manager, a notepad, a calculator, a Turbowarp redirect, a music app, YouTube, maps, a flight tracker redirect, a Bible app, and a settings app. The settings app lets you customize things like the time format and sound effect preferences.
I updated my README! Now it has two images, a setup guide, and an organized table for my “apps”. There’s also a features list and a small credits section. I also went through my code and fixed all the bugs I could find. Time to ship!!
Ships:
I made a pi-themed “operating system” that can run in a web browser! The hardest part for me was making the windows draggable, since I ran into some bugs even while following the guide. Thanks to some clarification in a W3Schools article, I managed to fix those bugs. I have some features in this OS that the guide doesn’t list, one which is the app that plays music. The other is the helpful text at the bottom of the screen (telling you where the apps can be opened!) that disappears when an app is opened. I enjoyed making this pi-themed “operating system”. I hope you enjoy exploring it!
I made a PI-THEMED WEB-OS!! The most challenging part was the script for making “windows” draggable; I had to look through some tutorials for that. Either way, as a professional pi enthusiast, I’m pretty excited for this pi theme! As part of the WebOS2 Mission, I have more than three new features from what I submitted to WebOS1. Some of them include the Settings App, Bible App, and sound effects that say the next digit of pi each time you open/close an app. That part was very fun :P I hope you enjoy my Pi webOS! Please provide feedback on my project, whether you’re a pi enthusiast or not :)...
|
1793652560.8538454
|
1793738960.8538454
|
|
30956
|
PreShoot by @DanielLiu | Stardance
|
DanielLiu
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-05T15:54:42Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "PreShoot is a personalized AI creative assistant built for creators who struggle with knowing what to post. Instead of giving generic ideas, PreShoot learns your style, niche, gear, and platform, then turns a single photo into tailored, ready-to-film content concepts. Each idea comes with clear creative direction — including shot breakdowns, angles, pacing, lighting suggestions, and editing style — designed around how you actually create. The goal is simple: remove creative uncertainty and help creators stay consistent, improve content quality, and execute faster without overthinking what to post next. PreShoot is built for modern creators, from short-form content on TikTok and Instagram to more structured storytelling on YouTube. Less guessing. More creating.", "repo": "https://github.com/Dan904312/PRESHOOT", "demo": "https://preshoot.vercel.app"}]...
|
[{"post_id": 22798, "ts": "202 [{"post_id": 22798, "ts": "2026-07-05T11:41:31Z", "hours": 0.2811, "text": "I recently got my landing page up!! It is vibe coded by claude and lowkey looks kinda bad but I’ll make it better!!"}]...
|
Title: PreShoot by @DanielLiu | Stardance
Devlogs Title: PreShoot by @DanielLiu | Stardance
Devlogs:
I recently got my landing page up!! It is vibe coded by claude and lowkey looks kinda bad but I’ll make it better!!
Ships:
PreShoot is a personalized AI creative assistant built for creators who struggle with knowing what to post. Instead of giving generic ideas, PreShoot learns your style, niche, gear, and platform, then turns a single photo into tailored, ready-to-film content concepts. Each idea comes with clear creative direction — including shot breakdowns, angles, pacing, lighting suggestions, and editing style — designed around how you actually create. The goal is simple: remove creative uncertainty and help creators stay consistent, improve content quality, and execute faster without overthinking what to post next. PreShoot is built for modern creators, from short-form content on TikTok and Instagram to more structured storytelling on YouTube. Less guessing. More creating....
|
1793652562.020744
|
1793738962.020744
|
|
904
|
Girlfriend Simulator by @snehasish | Stardance
|
|
2
|
37.0
|
434
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-03T20:03:26Z", "hours": 9.0, "multiplier": 15.93, "payout": 148, "blessing": "neutral", "text": "Major Updates for Girlfriend Simulator Note: This is the final update (ship) and no more updates will be made in future to this project. Main Updates Girlfriend Memories: Your Girlfriend remembers every small detail you share about yourself in her chat. Persistent Relationship Profile: Your girlfriend also remembers how you treated her on your last conversation and her mood really depends on that the next time you have a conversation with her Your own Models: Your girlfriend can run on your own API key. By default uses Google Gemini 2.5 Flash (so you will need a Gemini API Key). This removes any limits to daily conversations (capped at 20 when using not-your-model. Mood Aware User Interface: Your chat colors, themes and styling changes based on your girlfriend’s mood. Helps you understand what situation you’re currently in XD", "repo": "https://github.com/snhsish/gfsim", "demo": "https://gfsim.snehasish.xyz"}, {"ship_num": 2, "ts": "2026-06-08T09:27:01Z", "hours": 28.0, "multiplier": 12.02, "payout": 286, "blessing": "neutral", "text": "I built a Girlfriend Simulator which simulates a start-to-end relationship with your personally characterized girlfriend (powered by different fine-grained AI models). Why is it different from an AI wrapper or asking ChatGPT to “pretend to be my girlfriend?”: Well, the experience here is more natural and more likely-to-be-a-real-girlfriend type xi. Problems faced: getting the model to be more natural. I had fine-tuned a Qwen model which performed pretty well and NATURAL when replying as girlfriend, but due to high costing I cannot be putting it out in the public for free usage, so I had to use a fine-grained Qwen model (system prompt) Some pages / features are still not completed, but the chat experience is working completely fine!", "repo": "https://github.com/snhsish/gfsim", "demo": "https://gfsim.snehasish.xyz"}]...
|
[{"post_id": 13566, "ts": "202 [{"post_id": 13566, "ts": "2026-06-22T06:36:28Z", "hours": 4.0833, "text": "Girlfriend Simulator : Major Update This update is all about feature improvement. What’s New Persistent Relationship Profile Previously relationship state was ephemeral, i.e. everytime you started a new chat, your relationship state was back to NORMAL. But now things have changed. A persistent relationship state has been introduced. Your behavioral rating is now taken more seriously. How you reply, how you react and how you understand her, matters now Inactivity Tracking Your latest message is now tracked by the system to set your girlfriend’s mood. If you have ghosted her for long, it must have affected her behaviour. This lets her react naturally to absences (cold, sarcastic, or confrontational depending on health/mood). Mood-aware UI The UI of the chat changes according to your girlfriend’s mood now. So you get a hint when to make her feel wanted and when to make her laugh."}, {"post_id": 11313, "ts": "2026-06-18T14:40:13Z", "hours": 3.2144, "text": "You can now configure and bring in your own API Keys Currently only Gemini API Key is supported which uses the gemini-2.5-flash model Why bring in your own keys? Well there’s a 20 message per user daily limit when using the server provided model. But you definitely might want to talk to your GF more than just 20 messages a day right :) So if you bring in your own keys, you can chat without any limits! You can view usages of your own keys from the Usage page itself ( /account/usage ) Are my keys safe? Your keys are stored in your browser’s localStorage. It’s not sent to our servers at all. (You can verify checking the opensource code anyways!) ALSO, thanks to some of you guys who tried out the simulator, tried to jailbreak and manipulate the models, it helped me understand the system a little more. ALSO, the sim is completely SFW - even if you go NSFW. LYG<3"}, {"post_id": 5578, "ts": "2026-06-09T12:56:21Z", "hours": 2.0533, "text": "Your can now view your Girlfriend’s “Memories”. Memories are basically a collection of details (birthday, job description, reminders, etc.) you mention/share about yourself in chat. It is stored, so that it can be passed as context for your girlfriend. So now she actually remembers the “small details about you”. Uses a second LLM call which analyzes your messages to check if any important “detail” about you has been sent, so your girlfriend remembers it. You can always delete the sensitive ones and recommended."}, {"post_id": 4490, "ts": "2026-06-07T20:25:51Z", "hours": 10.8542, "text": "Lot of updates: Chat persistence: Your chats with your GF are now permanently stored in cloud, so you can access the chats anytime. Chats infinite scroll: To not display all your 100k messages with your GF at once and break stuff, infinite scroll has been added to chat to load old chats on demand Add reaction to messages: You can now react to messages from your girlfriend (and there’s a chance she might get pssed off from that and reply about it). Also your girlfriend can react to your messages too now. * You can currently only react to message groups and now individual message bubble, it’ll be fixed in a future update. Added no-reply handler: SO BASICALLY you can be left ON-SEEN or ON-DELIVERED by your girlfriend if you misbehave lol Some bug fixes: add limit to user message input, GF’s side texts not being stored in DB, etc. Some UI/UX optimizations alongside system prompt optimizations for the MODEL. * I really want to optimize the system prompt even further more ’cause currently it uses almost 1k tokens per message which feels quiet unoptimized and over-usage of tokens"}, {"post_id": 3331, "ts": "2026-06-06T06:38:09Z", "hours": 6.5922, "text": "Added: Account Page: where you can update your OWN profile details like your avatar, name, description, DOB, MBTI, zodiac, etc. which will let your girlfriend know about you and your personality (from your description of you) User Welcome Screen and Navigation Tour: For better UX and understandibility, I have added a welcome screen modal with three steps explaining what the app is about and how it works + sidebar tour for explaining what each link does Signout button in account page Next:: Public Use Launch"}, {"post_id": 2181, "ts": "2026-06-04T15:13:05Z", "hours": 5.2556, "text": "made the usage page which shows tokens and messages for the past 14 days also here are some sample girlfriend responses which felt natural to me"}, {"post_id": 762, "ts": "2026-06-02T12:29:59Z", "hours": 1.7394, "text": "chats now work model: qwen the model smh replies and added multi message support"}, {"post_id": 414, "ts": "2026-06-01T20:18:42Z", "hours": 1.0042, "text": "updated message input and added attachment input (menu), emoji selector and GIF picker also implemented auto-height increment for the message input textarea and enter-is-send and shift-enter-is-not-send for the message input next: send the message and get a response (basic) via VERCEL AI SDK + Gemini Google API"}, {"post_id": 341, "ts": "2026-06-01T17:20:30Z", "hours": 2.1508, "text": "setup and designed the app interface and the chat page with beautiful starter texts to send to your AI girlfriend and get the convo started. next: design the chat input section along"}, {"post_id": 184, "ts": "2026-06-01T06:32:25Z", "hours": 0.5367, "text": "Added user authentication (login page) using Google OAuth (better-auth + supabase) setup"}]...
|
Title: Girlfriend Simulator by @snehasish | Starda Title: Girlfriend Simulator by @snehasish | Stardance
Devlogs:
Added user authentication (login page) using Google OAuth (better-auth + supabase) setup
setup and designed the app interface and the chat page with beautiful starter texts to send to your AI girlfriend and get the convo started. next: design the chat input section along
updated message input and added attachment input (menu), emoji selector and GIF picker also implemented auto-height increment for the message input textarea and enter-is-send and shift-enter-is-not-send for the message input next: send the message and get a response (basic) via VERCEL AI SDK + Gemini Google API
chats now work model: qwen the model smh replies and added multi message support
made the usage page which shows tokens and messages for the past 14 days also here are some sample girlfriend responses which felt natural to me
Added: Account Page: where you can update your OWN profile details like your avatar, name, description, DOB, MBTI, zodiac, etc. which will let your girlfriend know about you and your personality (from your description of you) User Welcome Screen and Navigation Tour: For better UX and understandibility, I have added a welcome screen modal with three steps explaining what the app is about and how it works + sidebar tour for explaining what each link does Signout button in account page Next:: Public Use Launch
Lot of updates: Chat persistence: Your chats with your GF are now permanently stored in cloud, so you can access the chats anytime. Chats infinite scroll: To not display all your 100k messages with your GF at once and break stuff, infinite scroll has been added to chat to load old chats on demand Add reaction to messages: You can now react to messages from your girlfriend (and there’s a chance she might get pssed off from that and reply about it). Also your girlfriend can react to your messages too now. * You can currently only react to message groups and now individual message bubble, it’ll be fixed in a future update. Added no-reply handler: SO BASICALLY you can be left ON-SEEN or ON-DELIVERED by your girlfriend if you misbehave lol Some bug fixes: add limit to user message input, GF’s side texts not being stored in DB, etc. Some UI/UX optimizations alongside system prompt optimizations for the MODEL. * I really want to optimize the system prompt even further more ’cause currently it uses almost 1k tokens per message which feels quiet unoptimized and over-usage of tokens
Your can now view your Girlfriend’s “Memories”. Memories are basically a collection of details (birthday, job description, reminders, etc.) you mention/share about yourself in chat. It is stored, so that it can be passed as context for your girlfriend. So now she actually remembers the “small details about you”. Uses a second LLM call which analyzes your messages to check if any important “detail” about you has been sent, so your girlfriend remembers it. You can always delete the sensitive ones and recommended.
You can now configure and bring in your own API Keys Currently only Gemini API Key is supported which uses the gemini-2.5-flash model Why bring in your own keys? Well there’s a 20 message per user daily limit when using the server provided model. But you definitely might want to talk to your GF more than just 20 messages a day right :) So if you bring in your own keys, you can chat without any limits! You can view usages of your own keys from the Usage page itself ( /account/usage ) Are my keys safe? Your keys are stored in your browser’s localStorage. It’s not sent to our servers at all. (You can verify checking the opensource code anyways!) ALSO, thanks to some of you guys who tried out the simulator, tried to jailbreak and manipulate the models, it helped me understand the system a little more. ALSO, the sim is completely SFW - even if you go NSFW. LYG<3
Girlfriend Simulator : Major Update This update is all about feature improvement. What’s New Persistent Relationship Profile Previously relationship state was ephemeral, i.e. everytime you started a new chat, your relationship state was back to NORMAL. But now things have changed. A persistent relationship state has been introduced. Your behavioral rating is now taken more seriously. How you reply, how you react and how you understand her, matters now Inactivity Tracking Your latest message is now tracked by the system to set your girlfriend’s mood. If you have ghosted her for long, it must have affected her behaviour. This lets her react naturally to absences (cold, sarcastic, or confrontational depending on health/mood). Mood-aware UI The UI of the chat changes according to your girlfriend’s mood now. So you get a hint when to make her feel wanted and when to make her laugh.
Ships:
I built a Girlfriend Simulator which simulates a start-to-end relationship with your personally characterized girlfriend (powered by different fine-grained AI models). Why is it different from an AI wrapper or asking ChatGPT to “pretend to be my girlfriend?”: Well, the experience here is more natural and more likely-to-be-a-real-girlfriend type xi. Problems faced: getting the model to be more natural. I had fine-tuned a Qwen model which performed pretty well and NATURAL when replying as girlfriend, but due to high costing I cannot be putting it out in the public for free usage, so I had to use a fine-grained Qwen model (system prompt) Some pages / features are still not completed, but the chat experience is working completely fine!
Major Updates for Girlfriend Simulator Note: This is the final update (ship) and no more updates will be made in future to this project. Main Updates Girlfriend Memories: Your Girlfriend remembers every small detail you share about yourself in her chat. Persistent Relationship Profile: Your girlfriend also remembers how you treated her on your last conversation and her mood really depends on that the next time you have a conversation with her Your own Models: Your girlfriend can run on your own API key. By default uses Google Gemini 2.5 Flash (so you will need a Gemini API Key). This removes any limits to daily conversations (capped at 20 when using not-your-model. Mood Aware User Interface: Your chat colors, themes and styling changes based on your girlfriend’s mood. Helps you understand what situation you’re currently in XD...
|
1793652563.1808276
|
1793738963.1808276
|
|
24380
|
CubeTrainer by @EthanCubes | Stardance
|
EthanCubes
|
1
|
45.0
|
447
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-10T01:23:02Z", "hours": 45.0, "multiplier": 10.4, "payout": 447, "blessing": "neutral", "text": "I made a timer and algorithm driller for people who solve Rubik’s cubes (aka speedcubers). I have minimal experience with JavaScript, and since this project is extremely JavaScript heavy (9 JavaScript files with an average of like 150 lines each (max 869 min 25)), it was pretty challenging for me. I’m really proud of how I build most of the application by myself with minimal or no AI assistance. Note that this project is relatively niche and other programs that do the same thing but better already exist.", "repo": "https://github.com/EthanCubes/CubeTrainer", "demo": "https://ethancubes.github.io/CubeTrainer/"}]...
|
[{"post_id": 25631, "ts": "202 [{"post_id": 25631, "ts": "2026-07-10T01:17:26Z", "hours": 0.3631, "text": "Devlog 13: Final devlog before ship I didn’t add much, just fixed some bugs and inconvenient things. For example, the space bar (finally) no longer triggers the dropdown menus. That was very annoying. Also, I added an option to clear all site settings and data, in case you have a outdated save file (no one is going to have that except me probably) that’s messing things up. I also added some things to the README."}, {"post_id": 25617, "ts": "2026-07-10T00:25:25Z", "hours": 2.1794, "text": "Devlog #12: I separated the times for timer mode and driller mode. Since timer mode is intended for timing entire solves and driller mode is intended for only short portions of the solve, it doesn’t make sense for them to be lumped together. I did this by adding another object inside the object for stored solves, and renaming the existing object. So now, inside of the stored solves object, there’s one object named “timer” and another named “driller”, to make it easy to get the correct object for the selected mode. I kept encountering errors on the GitHub Pages, but everything’s fine on Live Server. It’s happened so many times, it’s getting annoying. there’s literally no visual difference why do i still have to include a screenshot"}, {"post_id": 25120, "ts": "2026-07-09T03:48:48Z", "hours": 6.0483, "text": "Devlog #11: You can finally change stuff! I added settings to the web app, including the option to hide certain elements and 3 themes. The settings even stay across sessions, unless you clear solves, in which case the settings will be reset. This was totally intentional to make sure users are mindful about their times and not just spam times and definitely not because I’m too lazy to fix that part of the code. :)"}, {"post_id": 24352, "ts": "2026-07-07T21:16:38Z", "hours": 0.7514, "text": "Devlog #10: So it turns out that much of the code that involves paths and fetching other files were broken. I didn’t realize that until after I posted the devlog yesterday. For the next 24 hours, I proceeded to try everything I could think of to fix it. In the process, I definitely had one or two crashouts somewhat reminiscent to Doggie Acheron 1% . I ended up just having the program fetch the JSON files and the favicon from GitHub instead of the local files. This does come with the downside of difficulties when testing the code when I don’t have wifi but that’s a small tradeoff considering I have wifi pretty often."}, {"post_id": 23798, "ts": "2026-07-06T23:08:34Z", "hours": 8.6786, "text": "Devlog #9: Finally. FINALLY I HAVE EVIDENCE TO BACK UP THAT THIS ISN’T A CSTIMER CLONE. The main feature that I intended to add from the start, and the main reason that I wanted to make this web app in the first place has finally been implemented. It is, of course, the ability to drill algorithms. Yes, it does need more polishing. No, you can’t import your own algorithm sets yet. But you can drill some Roux algorithms, and that’s already better than CSTimer and JPerm.net. Or at least that’s what I tell myself before I go to bed so I don’t feel like a waste of space. This session was definitely the toughest mental challenge I’ve probably ever experienced. I started to code this, but halfway through I just decided to revert some of the changes cause the code was messy and wasn’t working. I reverted the changes back to the left Git commit and discovered that I forgot what I was doing at that time, and also that the code was broken. I proceeded to spend like 3 more hours fixing my broken code, and somehow ended up with something semi-coherent. Features I need to add: Importing algorithm sets Changing the theme Tool to create algorithm sets Probably more but I forgot. (sorry it doesn’t really look much different in the screenshot but I promise I actually did a lot of stuff."}, {"post_id": 21703, "ts": "2026-07-03T20:01:51Z", "hours": 2.9117, "text": "Devlog #8: The window not displays the difference between the current solve and the previous solve. If the user got a faster time, it displays green. If they got a slower time, it displays red (like CSTimer lol). I also added a help window that dims the background when it appears. There’s not much in the help window right now. Bugs The most notable bug(?) I encountered is the thing where some coding languages return weird numbers when dealing with decimals. It turned out like -0.249999999999999999999996 or something like that. I used difference.toPrecision(2); to round it to 3 decimals and I guess it works for now."}, {"post_id": 20386, "ts": "2026-07-01T23:31:48Z", "hours": 3.2872, "text": "Devlog #7: I added box that lists all the solves the user has done, and it even saves when you close the browser or refresh the page. I also made the scramble copyable by clicking on it. I did this with local storage, so I guess it probably isn’t the best way to do it, but I couldn’t find any good tutorials for indexedDB online (probably because of my cooked attention span). I ended up storing the entire object inside a single local storage string. Notable bugs that I fixed -When any of the buttons are pressed with the mouse, any press of the spacebar triggers the button because apparently that’s how buttons work. Retrospectively, I probably could’ve use a CSS property or something idk to prevent this from happening but I just made fake buttons instead."}, {"post_id": 18849, "ts": "2026-06-30T01:31:56Z", "hours": 2.1625, "text": "Devlog #6: I CAN SEE COLOURS! I finally used some CSS, added background colours, and moved some elements. As you can see, the cube net drawing is at the bottom right and the timer and scrambles are centred now. I didn’t have internet for the majority of this, so I lowkey copied a bunch of code from my other project CubeOS, which I have saved locally still. I also added a function to hide all elements when the timer is timing, to help with focus by setting the display to none and switching it back afterwards. Lastly, I wrote a couple of JSON files (with the help of AI when I did have internet for a few minutes) that contain the cubing algorithms that the drilling mode will use. But after I was done writing them I discovered that I don’t know how to actually read files using JavaScript, so I’ll be figuring that out later."}, {"post_id": 18013, "ts": "2026-06-28T23:52:49Z", "hours": 5.0386, "text": "Devlog #5: I spent a couple of hours doing optimizations and adding features that aren’t used yet but will definitely be built upon in the future. The one change that the user can actually see doesn’t work yet because I added the UI for it before the actual functionality was added. I’m going to attach a screenshot and try to see if you can spot the difference. I did try to add a new feature (hence the aforementioned UI change) but I ended up running into a bunch of issues including the following: Functions being called before they’re defined Browser running out of memory somehow Distraction Skill issue (please laugh. i need external validation) Here are the things I need to do still: [] Add a drilling mode that helps you master doing Rubik’s cubes algorithms [] Add ability to upload your own algorithms to drill [] Add ability for the timer to store solves in local story [] Add compatibility with CSTimer.net so that you can export or import timer solves. [] Add a somewhat good GUI"}, {"post_id": 16578, "ts": "2026-06-26T23:22:03Z", "hours": 8.5214, "text": "Devlog #4: I added a net of the scrambled Rubik’s cube to my webpage. Even though a real cube moves in separate pieces, I decided to calculate the cube using the stickers. I used an array to represent all 54 stickers on the cube, and used functions that switched around the stickers to represent turning the cube’s faces. I was originally going to make a function switching around the stickers for every single face turn (there’s 12, not including rotating the entire cube, the middle slice, and the double moves). But after I made the function for turning the top face and it already took up like 100 lines of code, and deciding that I don’t want to get carpal tunnel syndrome when I’m not even an adult, I realized I could just rotate the entire cube and stick with only one face turn. This brought down my code from a potential 1200 lines to only 300. At this point, I’ve spent like 2 hours on making this cube net but there’s still nothing on screen to show for it. So I quickly coded a net of the cube using HTML and CSS and used JavaScript to change each element according to what its color in the array is. Just when everything was just about done, I ran into the biggest problem of this entire session: the net/drawing wasn’t accurate. After about 2 hours of debugging, I discovered I forgot to reset the cube before “scrambling” it again. I literally wrote a function doing just that and I forgot to use it. (I’m reading the page on how to write a devlog and apparently they’re only supposed to be 4-6 sentences… lol)"}, {"post_id": 14806, "ts": "2026-06-24T01:31:37Z", "hours": 1.6894, "text": "Devlog #3: I SWEAR THIS IS NOT INTENDED (ENTIRELY) AS A CSTIMER CLONE. Soooo… I added scrambles to my web app. (You can see the current scramble above the time). I just used JavaScript random to pick from the basic 6 moves a 3x3 Rubik’s cube, as well as a modifier (normal, prime (counterclockwise), and 2 (twice). This move is then checked against the previous move so that there won’t be any cases of someone having to do the same move twice in a row. Every time the timer stops, a new scramble is generated and replaces the old one. Also, I added a delay of one second that the user has to hold to trigger the timer. In addition to that, the timer now changes colour when you’re holding the spacebar down before starting the timer. It’s green if the timer will start when you release it, and red if it’ll just cancel the timer. Wow, this is looking more and more like a CSTimer clone, right? (honestly I agree)"}, {"post_id": 14604, "ts": "2026-06-23T19:31:50Z", "hours": 1.7858, "text": "Devlog #2: I fixed most problems with the timer. It now updates in real time, and you can (and must) use the space bar to activate it. You start it after you release the space bar, and stop it as soon as you press the space bar again, without automatically starting the timer every time you stop it (believe me, that was a problem for a long time). So far, it’s turning out like a CSTimer clone, which isn’t actually what I want at the end of the day. Even though this will probably look like a CSTimer clone for a very long time, eventually I swear I’ll make it have additional functionality."}, {"post_id": 14086, "ts": "2026-06-23T02:11:19Z", "hours": 1.485, "text": "Devlog #1: I’m trying to build a web application that acts like a timer for solving Rubik’s cubes, a scramble generator, and a cubing algorithm driller. This coding session, I built a timer (or is it called a stopwatch?). It’s not that good, and you have to physically click a button with your mouse to start and stop the timer. It also does not update live and displays the time in milliseconds, which is… not the best. I’ll improve on it later though. I’ve gained a bit of JavaScript experience from my WebOS project, so this was honestly not that hard. It was very satisfying to code though. The actual web page still looks ugly though, I’ll style it after I add the bulk of the functionality probably."}]...
|
Title: CubeTrainer by @EthanCubes | Stardance
Dev Title: CubeTrainer by @EthanCubes | Stardance
Devlogs:
Devlog #1: I’m trying to build a web application that acts like a timer for solving Rubik’s cubes, a scramble generator, and a cubing algorithm driller. This coding session, I built a timer (or is it called a stopwatch?). It’s not that good, and you have to physically click a button with your mouse to start and stop the timer. It also does not update live and displays the time in milliseconds, which is… not the best. I’ll improve on it later though. I’ve gained a bit of JavaScript experience from my WebOS project, so this was honestly not that hard. It was very satisfying to code though. The actual web page still looks ugly though, I’ll style it after I add the bulk of the functionality probably.
Devlog #2: I fixed most problems with the timer. It now updates in real time, and you can (and must) use the space bar to activate it. You start it after you release the space bar, and stop it as soon as you press the space bar again, without automatically starting the timer every time you stop it (believe me, that was a problem for a long time). So far, it’s turning out like a CSTimer clone, which isn’t actually what I want at the end of the day. Even though this will probably look like a CSTimer clone for a very long time, eventually I swear I’ll make it have additional functionality.
Devlog #3: I SWEAR THIS IS NOT INTENDED (ENTIRELY) AS A CSTIMER CLONE. Soooo… I added scrambles to my web app. (You can see the current scramble above the time). I just used JavaScript random to pick from the basic 6 moves a 3x3 Rubik’s cube, as well as a modifier (normal, prime (counterclockwise), and 2 (twice). This move is then checked against the previous move so that there won’t be any cases of someone having to do the same move twice in a row. Every time the timer stops, a new scramble is generated and replaces the old one. Also, I added a delay of one second that the user has to hold to trigger the timer. In addition to that, the timer now changes colour when you’re holding the spacebar down before starting the timer. It’s green if the timer will start when you release it, and red if it’ll just cancel the timer. Wow, this is looking more and more like a CSTimer clone, right? (honestly I agree)
Devlog #4: I added a net of the scrambled Rubik’s cube to my webpage. Even though a real cube moves in separate pieces, I decided to calculate the cube using the stickers. I used an array to represent all 54 stickers on the cube, and used functions that switched around the stickers to represent turning the cube’s faces. I was originally going to make a function switching around the stickers for every single face turn (there’s 12, not including rotating the entire cube, the middle slice, and the double moves). But after I made the function for turning the top face and it already took up like 100 lines of code, and deciding that I don’t want to get carpal tunnel syndrome when I’m not even an adult, I realized I could just rotate the entire cube and stick with only one face turn. This brought down my code from a potential 1200 lines to only 300. At this point, I’ve spent like 2 hours on making this cube net but there’s still nothing on screen to show for it. So I quickly coded a net of the cube using HTML and CSS and used JavaScript to change each element according to what its color in the array is. Just when everything was just about done, I ran into the biggest problem of this entire session: the net/drawing wasn’t accurate. After about 2 hours of debugging, I discovered I forgot to reset the cube before “scrambling” it again. I literally wrote a function doing just that and I forgot to use it. (I’m reading the page on how to write a devlog and apparently they’re only supposed to be 4-6 sentences… lol)
Devlog #5: I spent a couple of hours doing optimizations and adding features that aren’t used yet but will definitely be built upon in the future. The one change that the user can actually see doesn’t work yet because I added the UI for it before the actual functionality was added. I’m going to attach a screenshot and try to see if you can spot the difference. I did try to add a new feature (hence the aforementioned UI change) but I ended up running into a bunch of issues including the following: Functions being called before they’re defined Browser running out of memory somehow Distraction Skill issue (please laugh. i need external validation) Here are the things I need to do still: [] Add a drilling mode that helps you master doing Rubik’s cubes algorithms [] Add ability to upload your own algorithms to drill [] Add ability for the timer to store solves in local story [] Add compatibility with CSTimer.net so that you can export or import timer solves. [] Add a somewhat good GUI
Devlog #6: I CAN SEE COLOURS! I finally used some CSS, added background colours, and moved some elements. As you can see, the cube net drawing is at the bottom right and the timer and scrambles are centred now. I didn’t have internet for the majority of this, so I lowkey copied a bunch of code from my other project CubeOS, which I have saved locally still. I also added a function to hide all elements when the timer is timing, to help with focus by setting the display to none and switching it back afterwards. Lastly, I wrote a couple of JSON files (with the help of AI when I did have internet for a few minutes) that contain the cubing algorithms that the drilling mode will use. But after I was done writing them I discovered that I don’t know how to actually read files using JavaScript, so I’ll be figuring that out later.
Devlog #7: I added box that lists all the solves the user has done, and it even saves when you close the browser or refresh the page. I also made the scramble copyable by clicking on it. I did this with local storage, so I guess it probably isn’t the best way to do it, but I couldn’t find any good tutorials for indexedDB online (probably because of my cooked attention span). I ended up storing the entire object inside a single local storage string. Notable bugs that I fixed -When any of the buttons are pressed with the mouse, any press of the spacebar triggers the button because apparently that’s how buttons work. Retrospectively, I probably could’ve use a CSS property or something idk to prevent this from happening but I just made fake buttons instead.
Devlog #8: The window not displays the difference between the current solve and the previous solve. If the user got a faster time, it displays green. If they got a slower time, it displays red (like CSTimer lol). I also added a help window that dims the background when it appears. There’s not much in the help window right now. Bugs The most notable bug(?) I encountered is the thing where some coding languages return weird numbers when dealing with decimals. It turned out like -0.249999999999999999999996 or something like that. I used difference.toPrecision(2); to round it to 3 decimals and I guess it works for now.
Devlog #9: Finally. FINALLY I HAVE EVIDENCE TO BACK UP THAT THIS ISN’T A CSTIMER CLONE. The main feature that I intended to add from the start, and the main reason that I wanted to make this web app in the first place has finally been implemented. It is, of course, the ability to drill algorithms. Yes, it does need more polishing. No, you can’t import your own algorithm sets yet. But you can drill some Roux algorithms, and that’s already better than CSTimer and JPerm.net. Or at least that’s what I tell myself before I go to bed so I don’t feel like a waste of space. This session was definitely the toughest mental challenge I’ve probably ever experienced. I started to code this, but halfway through I just decided to revert some of the changes cause the code was messy and wasn’t working. I reverted the changes back to the left Git commit and discovered that I forgot what I was doing at that time, and also that the code was broken. I proceeded to spend like 3 more hours fixing my broken code, and somehow ended up with something semi-coherent. Features I need to add: Importing algorithm sets Changing the theme Tool to create algorithm sets Probably more but I forgot. (sorry it doesn’t really look much different in the screenshot but I promise I actually did a lot of stuff.
Devlog #10: So it turns out that much of the code that involves paths and fetching other files were broken. I didn’t realize that until after I posted the devlog yesterday. For the next 24 hours, I proceeded to try everything I could think of to fix it. In the process, I definitely had one or two crashouts somewhat reminiscent to Doggie Acheron 1% . I ended up just having the program fetch the JSON files and the favicon from GitHub instead of the local files. This does come with the downside of difficulties when testing the code when I don’t have wifi but that’s a small tradeoff considering I have wifi pretty often.
Devlog #11: You can finally change stuff! I added settings to the web app, including the option to hide certain elements and 3 themes. The settings even stay across sessions, unless you clear solves, in which case the settings will be reset. This was totally intentional to make sure users are mindful about their times and not just spam times and definitely not because I’m too lazy to fix that part of the code. :)
Devlog #12: I separated the times for timer mode and driller mode. Since timer mode is intended for timing entire solves and driller mode is intended for only short portions of the solve, it doesn’t make sense for them to be lumped together. I did this by adding another object inside the object for stored solves, and renaming the existing object. So now, inside of the stored solves object, there’s one object named “timer” and another named “driller”, to make it easy to get the correct object for the selected mode. I kept encountering errors on the GitHub Pages, but everything’s fine on Live Server. It’s happened so many times, it’s getting annoying. there’s literally no visual difference why do i still have to include a screenshot
Devlog 13: Final devlog before ship I didn’t add much, just fixed some bugs and inconvenient things. For example, the space bar (finally) no longer triggers the dropdown menus. That was very annoying. Also, I added an option to clear all site settings and data, in case you have a outdated save file (no one is going to have that except me probably) that’s messing things up. I also added some things to the README.
Ships:
I made a timer and algorithm driller for people who solve Rubik’s cubes (aka speedcubers). I have minimal experience with JavaScript, and since this project is extremely JavaScript heavy (9 JavaScript files with an average of like 150 lines each (max 869 min 25)), it was pretty challenging for me. I’m really proud of how I build most of the application by myself with minimal or no AI assistance. Note that this project is relatively niche and other programs that do the same thing but better already exist....
|
1793652564.3920848
|
1793738964.3920848
|
|
4712
|
VaultForge Crypto Wallet by @professional_toad | S VaultForge Crypto Wallet by @professional_toad | Stardance...
|
professional_toad
|
2
|
127.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-31T11:50:55Z", "hours": 101.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? VaultForge is a multi-chain, fully self-custodial crypto wallet with support for Bitcoin, EVM chains (e.g., Arbitrum, Avalanche, Base, BNB Chain, Ethereum, Polygon, etc.), Solana, Tron, and XRP. Additionally, VaultForge has support for swapping (see below screenshot) using Decentralized EXchanges (DEXs) such as Uniswap and Jupiter and DEX aggregators such as LI.FI and Relay. There is also support for transferring stablecoins (crypto tokens pegged to dollars) across chains with Circle’s CCTP v2. Why did I make it? I was frustrated with the lack of consistent support for major chains across crypto wallets and the need to use multiple of them. It turns out it was much harder to make than I thought. What was challenging? By far the hardest part was adding support for swapping and the CCTP features to some extent as it required extensive knowledge of each chain as they all behaved differently and needed a lot of research on each provider’s API. It also took loads of rigorous testing to make absolutely sure that it would work every time before doing a test with real funds (again, see the below screenshot). What are you proud of? I’m really happy with how the wallet onboarding turned out - all though it is quite a small part of the application I think it is quite easy to use and set up the wallet and lets you set up all the common settings such as your base currency and theme (light or dark mode). What should people know so they can test your project? Unfortunately, due to time constraints and the amount of extra code it would require to add this feature, I was not able to add a demo feature to test the wallet without real funds. This might make it hard to test the entirety of the wallet’s features, especially the sending and swapping part. If I had more time, I would definitely try to improve this. Also, due to the slow build times with GitHub Actions, I removed support for Intel Macs. I don’t think many people use them anymore though so I hope it isn’t too big of an issue.", "repo": "https://github.com/kunningKing11/vaultforge", "demo": "https://github.com/kunningKing11/vaultforge/releases"}, {"ship_num": 2, "ts": "2026-06-29T16:59:27Z", "hours": 26.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Fully functional, multi-chain (Bitcoin, EVM, and Solana support with more on the way) wallet. To test this project, please go to the GitHub repository linked to the project.", "repo": "https://github.com/kunningKing11/vaultforge", "demo": "https://github.com/kunningKing11/vaultforge/releases"}]...
|
[{"post_id": 85472, "ts": "202 [{"post_id": 85472, "ts": "2026-10-31T11:37:39Z", "hours": 1.3644, "text": "Devlog #33 - some cleanup i migrated from vite to bun’s built-in bundler and minifier and updated the README."}, {"post_id": 83431, "ts": "2026-10-27T23:12:02Z", "hours": 6.4089, "text": "Devlog 32 - what a grind!!! vaultforge v0.5.0 is finally out ! so many new features i honestly can’t remember all of them! just as a recap vaultforge is available on mac, linux, and windows. i’m on linux so i couldn’t really test the binaries on other oses that well. there’s a .deb and .rpm for linux for debian-based (debian, ubuntu, etc.) and fedora-based (rhel, fedora, bazzite) distros. and yes, before you ask, there is an appimage available. btw github actions is sooooo slow 🐌, especially the mac os x64 runners - grrrrrrr . i’ve been stuck here just waiting for the past 1/2 an hour… i was so frustrated that i decided to completely remove support for itnel macs cuz the build times are like 3x slower. sorry intel mac users. that took so long… finally ready to ship! tbh i mostly just did some ci stuff since last devlog but i also added some nice ui impirovements. guys please give me a good rating 🙏"}, {"post_id": 81422, "ts": "2026-10-21T07:03:36Z", "hours": 0.7881, "text": "Devlog 31 - swapping support for Solana! (partially) there’s now swapping support for solana, at least for DEX aggregators like LI.FI or Relay. i still need to figure out native solana DEX swapping on platforms like Jupiter…"}, {"post_id": 81198, "ts": "2026-10-20T08:10:50Z", "hours": 3.2675, "text": "Devlog 30 - support for swapping (finally!) this took so long!!! i thought i would be done last friday but ig that was overly optimistic… there are still some small things i will fix/improve to make the experience a bit smoother in the coming days. Implementation so i added uniswap support for all supported evm chains; however only for same-chain transactions and only through one pool. this is suboptimal so i want to add cross-chain support and through multiple pools maybe in the future. to make it possible to do cross-chain swaps, i added Relay support (it’s an aggregator) were solvers compete to give a quote. the issue with this is that they charge quite a fee and so i really want to just use uniswap where possible. what’s next better uniswap integration (as mentioned above), plus support for solana potentially jupiter support (it’s a solana DEX) as it has really good rates and high liquidity."}, {"post_id": 80081, "ts": "2026-10-16T05:40:57Z", "hours": 1.2094, "text": "Devlog 29 - more coin icons! specifically for AAVE, Chainlink (LINK), and Uniswap (UNI)."}, {"post_id": 79643, "ts": "2026-10-14T20:01:16Z", "hours": 1.4264, "text": "Devlog 28 - coin icons! it finally looks sooo professional now… just look at those icons! they will also appear in the send and transfer (soon to be swap!) tabs over the coming days. uniswap dex integration is still the top priority though. 🫡 before there weren’t any (they were just grey) and every wallet has them so i made it better ig"}, {"post_id": 79385, "ts": "2026-10-13T19:20:45Z", "hours": 3.1186, "text": "Devlog 27 - CCTP support is here… in like 30 minutes hang tight, it’s coming soon 🚀 i attached some proof , you guys can check out the transaction here more info on this tomorrow after v0.5.0 comes out with the CCTP support. you haven’t seen nothing yet, uniswap support coming next; stay tuned! probably coming in the next week or so…"}, {"post_id": 79016, "ts": "2026-10-12T11:14:38Z", "hours": 2.2986, "text": "Devlog 26 unfortunately, it’s taking longer than i would like to add the swapping and CCTP functionality. i would say i’m about 80% there, but there are quite a few things that i have to think about and as such, i think i will get it working by tomorrow (tuesday). stay tuned! 👀"}, {"post_id": 77760, "ts": "2026-10-08T05:56:13Z", "hours": 2.3114, "text": "Devlog 25 - some progress on the swapping i haven’t had much time in the last few days but i managed to do a big refactor to make the code more modular and cleaner. this is needed so that i can do more complex transactions instead of just basic transfers. i haven’t pushed it to main or committed it yet but it’s basically done. in terms of when CCTP support will ship, I think it will be by the end of sunday."}, {"post_id": 76737, "ts": "2026-10-04T13:27:58Z", "hours": 2.095, "text": "Devlog 24 - adding support for swapping after absolutely grinding on the support for swapping for the past week, here are some updates: 12 commits coming to main soon, about half bug fixes 4/10 things completed that i think are required for adding swapping support (more info below) i’ve also decided on a rough implementation order of swapping-related functionality: CCTP v2 transfers (basically moving USDC stablecoins across chains) Uniswap DEX (the biggest Decentrallized EXchange) Jupiter DEX ( the biggest dex on Solana) NEAR Intents (a cross-chain DEX) LI.FI aggregator (basically tells the walet the best market rates) i know this is kind of an ambitious timeline but i think i can pull it all off before the end of stardance on the 31st of october 🤞. i think i will manage to get CCTP transfers working by friday or sunday, depending on how much time i have."}, {"post_id": 74986, "ts": "2026-09-28T19:35:45Z", "hours": 1.4533, "text": "Devlog 23 15 new commits pushed to main ! still cooking on the integrated swapping support… sorry this is a short devlog; i’m more focused on the coding rn and will post when i’ve done something more substantial."}, {"post_id": 74352, "ts": "2026-09-27T06:58:05Z", "hours": 2.1792, "text": "Devlog 22 since the deadline for stardance has been extended by one month, i decided to keep going and make VaultForge as good as possible over the coming weeks. here’s a quick overview of what i will focus on next: actual swapping, and integration with multiple DEXes (think Jupiter, NEAR Intents, Uniswap, etc.) a better activity view token and chain icons! makes it much easier to differentiate between assets general performance and UI improvements with these new features, especially the integrated swapping, my wallet is finally going to be on par (mostly) with established wallets such as metamask. i’ve already got like 10+ commits since the last release that i will merge to main branch soon…"}, {"post_id": 73472, "ts": "2026-09-25T06:06:46Z", "hours": 1.0978, "text": "Devlog 21 as promised, VaultForge v0.4.0 is out! this brings huge changes to wallet unlock speed, adds ripple support, adds BIP-84 addresses, and loads more. here is the link to the release page if you want to check it out. some interesting stats: there was an increase of >6,000 lines of code which is a more than 50% increase since v0.3.0 . 132 commits since last release. this is probably going to be my second-to-last devlog as i really want to hit the 100-hour mark."}, {"post_id": 72818, "ts": "2026-09-23T20:02:48Z", "hours": 7.05, "text": "Devlog 20 so i finally added ripple support… and migrated everything to React for a much better, cleaner UI. and as always, i am late again. i actually could have finished on friday but i had other things to do (like homework) and i also wanted to migrate to react as well since I decided this will be my last release before the end of stardance, so i really want to add everything i can. this is because after stardance i will take a break of a few months on this project and then come back with a different hack club ysws challenge. the react migration was so big that i decided to use AI this time: the finished App.tsx file containing the react code is over 3090 lines of code (proof is the 2nd attached image)! that’s the largest code file i have ever worked on. since this is a huge change to the ui, i decided to create some before and after comparisons below. anyways, i decided to share some design decisions relating to the migration to react. i knew react was a big framework so it would add a few MB to the app’s file size (about 1-2 MB as of my recent testing) but the app itself is tiny anyway - not even 30 MB - so i thought it was really worth it. it gives you design consistency, more so than tailwindcss, which i needed since the more fun part for me was working on the backend and not the frontend (the user-facing part of the application). plus, the guys who work at coinbase (shoutout to them) made a goated plugin/theme/whatever you call it for react which makes my app have the default coinbase theme that i can tweak (i made the font monospace) which is alone like 70% of the stuff needed for the migration. i promise i will release v0.4.0 tomorrow…"}, {"post_id": 68207, "ts": "2026-09-14T18:12:58Z", "hours": 0.5819, "text": "Devlog 19 still cooking on the ripple support… i think i will be done by friday."}, {"post_id": 66040, "ts": "2026-09-11T16:23:03Z", "hours": 0.4975, "text": "Devlog 18 i finished all the perf improvements! there was one that i left out though bc it probably wouldn’t have helped much in terms of performance and would have been a pain to implement. i am FINALLY going to move on to ripple support for the next few days…"}, {"post_id": 65508, "ts": "2026-09-10T18:18:14Z", "hours": 0.7617, "text": "Devlog 17 perf improvement #3 done! 🎊 now refreshes are fully concurrent, w/ a limit of 4 requests at a time to avoid rate limiting. i haven’t fully tetsed it yet but it feels noticeably faster (like 25-35% faster) until the updated prices & balances are shown. plus, I kind of finished the settings stuff so i’ll be working on ripple support ig…"}, {"post_id": 64935, "ts": "2026-09-09T17:38:35Z", "hours": 2.8842, "text": "Devlog 16 sorry guys, i’m kind of late on this one tbh: I said that I would have the settings improvements, ripple support and all that ready by like monday but clearly nothing has happened since like the weekend. i have decided to delay the timleine by about a week as after some careful consideration I found it was wayyy too aggressive and my fingers can’t keep up with the typing speed i would need for that :) i seriously have no idae whatsoever why I thought it was possible to add that many features in such a short space of time. I know it kind of is but I have school now which means i have much less time for this with homework and studying and stuff. however, today I decided to lock in and actually do this and so I can assure you that i am hard at work doing the settings stuff rn and ripple support is absolutely coming right after that this next release really is going to be a big one… p.s. i attached a screenshot of some of the new commits i worked on (more are coming soon)"}, {"post_id": 62021, "ts": "2026-09-05T07:16:08Z", "hours": 1.6236, "text": "Devlog #15 Since the last devlog, I’ve worked on some more boring stuff: Tauri cleanup and desktop-specific improvements. I moved the application setup and command registration from src-tauri/src/main.rs into a new src-tauri/src/lib.rs . This keeps the entry point organized and follows Tauri’s recommended structure, while main.rs now only launches the library. I also replaced the browser clipboard API with Tauri’s native clipboard manager plugin. Copy buttons now use the desktop clipboard integration. Finally, VaultForge now enforces a single-instance window. If the app is launched while another instance is already open, the new launch focuses the existing main window instead of opening a second copy, which is far more desirable of a behaviour imo as it lets a user find a window without inadvertently opening even more. Plus some more random stuff: I now sign off all my commits As of today (4th of September), I also sign all my commits with a PGP key to verify all commits are made on my laptop and not by someone who hacked my GitHub account or smth - this is definitely overkill but why not Next, I’m continuing the settings improvements before moving on to Ripple support. P.S. I also randomly moved to Neovim as it looks much better than VS Code."}, {"post_id": 61004, "ts": "2026-09-03T18:18:49Z", "hours": 1.7533, "text": "Devlog #14 Not very much since last time; just some refactors and small improvements throughout. You can kind of tell by all the fix/chore/docs changes… btw improved settings is in the works - I think I’ll do some more progress over the next two days, then some actual chain support for Ripple. I’ve decided that I will release v0.4.0 before adding basic Zcash support as it’s been basically a month since last release and I don’t want to keep you guys waiting for those of you who want to download the binaries directly w/o building. Quick summary Now –> ~5 September: settings improvements 5 September –> 7 September: Ripple support 7/8 September: release of VaultForge v0.4.0"}, {"post_id": 59639, "ts": "2026-09-01T15:39:50Z", "hours": 3.5681, "text": "Devlog #13 I finally added different currencies ! Before, all prices were displayed in USD and now they can display in any of the below currencies: USD ($) EUR (€) GBP (£) JPY (¥) Shoutout to the fantastic API I used for this! Previously, I fetched CoinGecko pricing data which came in USD but I needed to convert this data into whatever currency the user chose so I had to find an API. However, there really weren’t any good forex APIs that were free with no rate limits when I searched for one so I turned to ChatGPT to find one and find one it did. This API gives daily central bank rates and even has data going back to 1948 on 201 currencies which is more than enough for this project. I also added the second performance improvement : caching the HTTP request client object to avoid having to recreate it on every API request. As of rn the project roadmap for the near future is this: Finish perf improvements Add basic Ripple (XRP) transaction support Maybe add transparent <=> transparent pool transaction support for Zcash (ZEC) Release VaultForge v0.5.0"}, {"post_id": 58117, "ts": "2026-08-30T13:52:54Z", "hours": 5.2722, "text": "Devlog #12 Quite a bit more to report this time! Since last devlog, I’ve mostly been working on improving actual wallet functionality, fixing some smaller UI issues, and looking into performance. Recent changes Below is a quick summary of what I’ve been working on since the last devlog: Full TRC-20 token support is here! 🎊 Tron is no longer limited to just native TRX transfers, and the token validation/network logic has been updated to support TRC-20 tokens as well. Significantly improved Bitcoin support by adding proper BIP84 account discovery . VaultForge now scans both receive and change addresses, tracks which UTXOs belong to which derived addresses, signs each input with the correct derived key, and refreshes discovery before sending. Anecdote: I use Brave Wallet which did the receive and change addresses thing so my funds didn’t show up in previous versions of VaultForge. However, as of this update, I now am. Wallet unlocking now feels much faster ! Cached balances/prices are shown immediately while fresh data refreshes in the background. Improved asset cards so they show which network an asset belongs to . Assets worth less than $1 are now hidden from the portfolio/assets view unless VaultForge does not have price data for them. Fixed a few UI issues, including dashboard scrolling, refresh errors, escaping asset data (aka preventing XSS) , and copying the currently selected wallet address. Converted the remaining .js config files to TypeScript because apparently I cannot resist refactoring things even when it makes no difference whatsoever. For the first time in this series of devlogs, I’m linking the changes to relevant commits on GitHub wherever possible so you can have a look. Performance improvements I also found a few ways to reduce VaultForge’s roughly 10s full refresh time: Cached unlock (mentioned above): perceived unlock time is now closer to ~1–3s, although balances/prices can still take around the same amount of time to fully refresh in the background. Reuse HTTP clients: should save roughly ~0.2-1.5s by reusing connections. Concurrent provider calls: likely the biggest improvement, potentially bringing a ~10s refresh down to ~3–5s. Refresh prices separately: could make fresh balances appear another ~0.5–2s sooner. Derive Argon2 once: should save roughly a few hundred ms to ~1s on cold unlocks. The above estimated perf improvements are obviously quite variable and depend on a multitude of factors (+ I got ChatGPT to analyze my current code to make an estimate because how else would I do it), but there is definitely still a lot of low-hanging fruit here. Upcoming features Actual settings are still the elephant in the room 😭, so I definitely need to get around to those but since I think this may need a big PR a bit like the previous style improvements, I think I will do this after v0.4.0 (so therefore for v0.5.0 ). Ripple (XRP) support (at least for native token transfers), planned for v0.4.0 . Zcash (ZEC) support: I’ve got a feeling this one will take quite some time so at most I will implement transparent <=> transparent transactions before next release but will have to see. The remaining performance improvements mentioned above."}, {"post_id": 55009, "ts": "2026-08-26T13:12:12Z", "hours": 8.6272, "text": "Devlog #11 What a MASSIVE PR and it’s finally merged ! Hooray! That was the biggest PR I’ve ever created by a big margin. Now I can finally start work on actual features like more support for different blockchains, address types, random extra features that certain chains have… the list goes on. I already have a personal list of 25 different blockchains that I want to add support for, most of which aren’t in the project roadmap simply for the reason that it would make the file overly long and hard to read. * sigh * that will take a long time Not to underestimate what I added with the PR, though - I didn’t spend like 15 hours and do 48 commits for nothing: inside the PR I added Onboarding! 🎊 Lots of (at least in the future) common settings will be selected here to set up your wallet. You can already import an existing wallet or generate a new one (both accept 12, 15, 18, 21, and 24-word recovery phrases) and set an auto-lock timeout and select networks you want or don’t want. Finally, there is also the option to select a theme if you want. New and more prominent splash screen when loading the application. The application itself is super fast so it takes barely any time but to make it look cooler I’ve set a minimum time to display it for to 650 ms. Icons throughout the application to make it look better. Let you copy addresses in the sidebar with one click and list all enabled addresses, not just Ethereum. Squashed some more small UI bugs, especially relating to scrolling in different parts of the application. Although slightly unrelated to the theme of the PR, MUCH better refresh logic and handling. It now respects network selection choices (like the ones you want or don’t want that you selected during onboarding) and tells you exactly which network’s RPC request encountered errors. Perhaps ironically, this was literally the reason I fixed an issue with the Solana RPC. Before this update, it never actually refreshed the balance correctly so it wasn’t working. However, after this change, I was able to identify that the issue was not on my end (yay!) but was actually PublicNode ’s (the RPC I’m using for the majority of chains in this project for consistency, apart from Monad and now Solana) as I assumed it could fetch the user’s token accounts but it couldn’t so I had to switch to using the official Solana RPC which fixed the issue. For anyone who got lost somewhere in the previous paragraph, an RPC is a service that allows you to query data about the state of the blockchain (where crypto transactions are stored) so you can use it to see how much crypto you are holding. Token accounts are basically a weird quirk of Solana where your main account is used to hold Solana which links to associated token accounts (ATAs) , which each hold one token other than Solana. This is by far not a complete list but rather a list of the highlights of this PR; if you want to look at all the changes, please feel free to visit the page linked at the top of this devlog. That said, after this big change, I did say last devlog that I would be getting ready to release version v0.4.0 of this application which is exactly what I will do after adding Tron token support! Quick reminder, after v0.4.0 I am planning to add Ripple (XRP) support, preliminary (meaning like non-shielded probably) support for Zcash and revamp the settings page like I did to the onboarding in this PR. Further out, I will probably focus some more on the in-application swaps to aggregate data from major DEXs (decentralized exchanges) to get the best rates, matching other major wallets w/ more chain support, which would make my wallet actually competitive. 🤞"}, {"post_id": 50515, "ts": "2026-08-19T18:16:53Z", "hours": 6.2019, "text": "Devlog #10 I’m close to finishing the theme improvements (I would say I’m about 90% there) and am doing some general bug fixes and QoL improvements. As such, there isn’t much to log rn except for a few small new features & improvements: Show/hide password button on recovery phrase and password Loads of bug fixes, e.g., inconsistent password strength progress bar on onboarding, preventing the user from typing the Enter key when entering a seed phrase to import, text overflow, etc. Some dependency version bumps If you want to see my progress on this PR (there are already like 30 commits in it - it’s a pretty big PR!), you can do so here . What’s coming next Some final finishing touches on the PR and then I will merge it to main so that it will be in the next release Support for Tron token transfers Support for Ripple The release of VaultForge v0.4.0 either before or after adding support for Ripple transactions A revamp of the settings tab (currently it doesn’t do anything) Support for Zcash"}, {"post_id": 45175, "ts": "2026-08-11T14:25:55Z", "hours": 6.7719, "text": "Devlog #9 Not much to report but I’m still working on improving the theme and the wider interface. You can see my progress here . Recent changes Below is a quick summary of what I’ve been working on since last devlog: Improved fonts ( Tektur for headings, Manrope for body text, and Ubuntu Mono for monospace text) Updated some text across different views for consistency Improved the look and feel of onboarding Added wallet setup flow to onboarding so you can now quickly import or generate a wallet with different seed length options (12, 15, 18, 21, and 24-word seed phrases are all supported now) Theme selection (in onboarding) between four different themes - I know these look a bit AI-generated rn (they are; it would have been frustrating to write out three new themes) but I will make them look a bit better in the future Auto-lock! 🎊 Now, you can easily set an auto-lock option in the onboarding or have none at all Upcoming features I think the elephant in the elephant in the room rn is actual settings which I will be working on over the next few days as currently there are no settings in the literal settings page!"}, {"post_id": 40732, "ts": "2026-08-04T13:27:44Z", "hours": 10.4086, "text": "Devlog #8 That took a lot of time! Over the past two weeks, I have done quite a bit of bug fixing and stopping undesired behaviour, including fixing weird sideways scrolling behaviour on the dashboard portfolio and creating custom scrollbars for less janky behaviour fixing the left sidebar’s contents overflowing vertically when the window height was decreased too much (it now lets you scroll if there is not enough space to fully display its contents) stopping zooming with Ctrl + ... or with trackpad gestures completely fix portfolio allocation percentage bars stuck at zero in the dashboard Along with this, I have done quite some improvement on the CI (especially the release.yaml workflow and pre-commit checks) and some refactoring, including using Lefthook npm install , bun install , Oxlint, Oxfmt validation, TypeScript typechecking, cargo check , and package.json package-lock.json bun.lock src-tauri/Cargo.lock are automatically staged on every commit. The npm install , bun install , and automatic lockfile staging is to ensure consistency between npm and Bun so that both can be used in development and testing. The other checks are for checking (or at least trying to; there could always be edge cases that aren’t covered) that no invalid code gets committed. There is also a maximum commit message subject length (72 characters) and the same for each line of the commit message body to ensure that commit messages stay readable. cargo test , and rust-analyzer analysis on every push to GitHub, since every commit runs the other checks anyway and uncommitted code can’t be pushed refactoring the previously monolithic TypeScript file that contained multiple pages so that each page now gets its own file inside of src/views/ significantly improving release.yaml (the app release workflow for GitHub) so that it now adds a commit count since the last release adds a line count statistic and the change in lines since the previous release allows for release comments and highlights written by me adds a link that links to a GitHub page of all the commits made between the release and the previous one (it already/before this change had all the new commits listed in the release notes with a link to each one) unifying networks.json (the file that contains all the relevant chain information for the TypeScript frontend) with all the scattered equivalent information in the Rust backend; now, the backend references the networks.json file instead Also, you are now able to test out all of these changes as I have just released v0.3.0 of VaultForge! Unfortunately, I haven’t yet worked on any of the theme changes but these are top priority for the next release… As a recap, here are the things that I will be working on for the next release, in order of priority: Updated theme Full Tron support (not just native token sends) Ripple (XRP) support Miscellaneous bug fixes and new features"}, {"post_id": 29564, "ts": "2026-07-16T16:15:34Z", "hours": 7.8725, "text": "Devlog #7 Unfortunately, since I am on holiday, I was not able to complete everything that I wanted to do by the end of last week. However, I was definitely able to make some progress: Progress Tron (TRX) support is here! 🎊 (albeit only native Tron sends are currently supported) some refactoring happened What’s next As I promised last week (but did not manage to complete), I was going to completely redesign the UI to make it more user-friendly and usable and have less of an AI-generated feel. This is because when I initially started this project, I used AI to create a demo app (without any of the signing logic), just to get a sort of structure to build on and add functionality to. However, I have changed pretty much every part of it so far apart from the theme which is why I am going to work on it now/this week. Icons for different currencies and across the application for easily recognisable features Support for Ripple (XRP)"}, {"post_id": 25341, "ts": "2026-07-09T16:00:38Z", "hours": 8.0019, "text": "Devlog #6 Progress Not much to announce rn but so far (since last week/log), I have refactored the code a bit bumped some dependencies made a cool new banner for the project (you can see it on this project’s banner) started work on improving the theme/look of the app fixed some minor issues and bugs, such as EVM nonce processing used the latest nonce from a confirmed block, ignoring the fact that the user may have been fast enough to send two transactions with the same nonce, which would guarantee that at least one transaction will fail BTC preview balance displayed to the user before approving a transaction did not take into account the unspent UTXOs in the calculation Not too exciting but this lays the groundwork for what is to come. 👇🏼 What’s next I will try to add this before the end of this week: a full redesign of the theme full Tron (TRX) support"}, {"post_id": 18461, "ts": "2026-06-29T16:57:39Z", "hours": 1.5761, "text": "Devlog #5 Solana support is here!"}, {"post_id": 17931, "ts": "2026-06-28T21:30:30Z", "hours": 9.9086, "text": "Devlog #4 Support for Solana coming soon, stay tuned! 👀 Since last devlog, I refactored the code a bit and split up all the TypeScript frontend and Rust backend logic into self-contained files, each for a clear purpose. Now, it’s much easier to read and understand the codebase."}, {"post_id": 13869, "ts": "2026-06-22T18:44:00Z", "hours": 1.0944, "text": "Devlog #3 The GitHub repository is public!"}, {"post_id": 13552, "ts": "2026-06-22T05:53:33Z", "hours": 9.5006, "text": "Devlog #2 I added loads of stuff! As promised: CoinGecko pricing data integrated Integrated RPC Progress on the actual transactions (implemented for EVM only so far and I am still working on it) Hardened security: Added a CSP (content security policy) to stop XSS (cross-site scripting) Hardened address validation, including EVM EIP-55 checksum validation Added a “remove wallet data” button Added zeroization for mnemonic/key/salt on lock and clear Coming soon/roadmap: Full support for BTC, EVM, SOL, and TRX chain transfers Actual cross-chain swaps via NEAR Intents Public GitHub repository (the repo hasn’t been made public yet as it’s still not fully working) Full support for more chains, including (but not limited to): Ripple (XRP) Hyperliquid (HYPE) - support for trading perps (perpetuals) Injective (INJ) Algorand (ALGO) Zcash (ZEC) - support transparent AND shielded addresses Monero (XMR) - alternative to Zcash Support for the Open Wallet Standard Native DeFi support: Native Aerodrome Finance LPing (liquidity providing) Native Aave lending (hopefully) Filecoin storage integration so you can easily store, download, and access files stored on Filecoin (hopefully) Integration with Tor for anonymity"}, {"post_id": 6061, "ts": "2026-06-10T05:49:45Z", "hours": 4.1822, "text": "Devlog #1 Just finished the basic UI; more coming soon… Current features already include: Argon2 password hashing to secure wallet Import a wallet seed phrase RPC connection to see how much crypto you’re holding QR code to get people to send stuff to you with a fault tolerance selector, e.g., smaller QR code for 7% data recovery, 25%, 30%, etc. Coming soon: GitHub repository for the project Coming soon: CoinGecko pricing data so you can see how much your crypto is worth Coming soon: actual transactions Coming soon: compatibility with Open Wallet Standard"}]...
|
Title: VaultForge Crypto Wallet by @professional_t Title: VaultForge Crypto Wallet by @professional_toad | Stardance
Devlogs:
Devlog #1 Just finished the basic UI; more coming soon… Current features already include: Argon2 password hashing to secure wallet Import a wallet seed phrase RPC connection to see how much crypto you’re holding QR code to get people to send stuff to you with a fault tolerance selector, e.g., smaller QR code for 7% data recovery, 25%, 30%, etc. Coming soon: GitHub repository for the project Coming soon: CoinGecko pricing data so you can see how much your crypto is worth Coming soon: actual transactions Coming soon: compatibility with Open Wallet Standard
Devlog #2 I added loads of stuff! As promised: CoinGecko pricing data integrated Integrated RPC Progress on the actual transactions (implemented for EVM only so far and I am still working on it) Hardened security: Added a CSP (content security policy) to stop XSS (cross-site scripting) Hardened address validation, including EVM EIP-55 checksum validation Added a “remove wallet data” button Added zeroization for mnemonic/key/salt on lock and clear Coming soon/roadmap: Full support for BTC, EVM, SOL, and TRX chain transfers Actual cross-chain swaps via NEAR Intents Public GitHub repository (the repo hasn’t been made public yet as it’s still not fully working) Full support for more chains, including (but not limited to): Ripple (XRP) Hyperliquid (HYPE) - support for trading perps (perpetuals) Injective (INJ) Algorand (ALGO) Zcash (ZEC) - support transparent AND shielded addresses Monero (XMR) - alternative to Zcash Support for the Open Wallet Standard Native DeFi support: Native Aerodrome Finance LPing (liquidity providing) Native Aave lending (hopefully) Filecoin storage integration so you can easily store, download, and access files stored on Filecoin (hopefully) Integration with Tor for anonymity
Devlog #3 The GitHub repository is public!
Devlog #4 Support for Solana coming soon, stay tuned! 👀 Since last devlog, I refactored the code a bit and split up all the TypeScript frontend and Rust backend logic into self-contained files, each for a clear purpose. Now, it’s much easier to read and understand the codebase.
Devlog #5 Solana support is here!
Devlog #6 Progress Not much to announce rn but so far (since last week/log), I have refactored the code a bit bumped some dependencies made a cool new banner for the project (you can see it on this project’s banner) started work on improving the theme/look of the app fixed some minor issues and bugs, such as EVM nonce processing used the latest nonce from a confirmed block, ignoring the fact that the user may have been fast enough to send two transactions with the same nonce, which would guarantee that at least one transaction will fail BTC preview balance displayed to the user before approving a transaction did not take into account the unspent UTXOs in the calculation Not too exciting but this lays the groundwork for what is to come. 👇🏼 What’s next I will try to add this before the end of this week: a full redesign of the theme full Tron (TRX) support
Devlog #7 Unfortunately, since I am on holiday, I was not able to complete everything that I wanted to do by the end of last week. However, I was definitely able to make some progress: Progress Tron (TRX) support is here! 🎊 (albeit only native Tron sends are currently supported) some refactoring happened What’s next As I promised last week (but did not manage to complete), I was going to completely redesign the UI to make it more user-friendly and usable and have less of an AI-generated feel. This is because when I initially started this project, I used AI to create a demo app (without any of the signing logic), just to get a sort of structure to build on and add functionality to. However, I have changed pretty much every part of it so far apart from the theme which is why I am going to work on it now/this week. Icons for different currencies and across the application for easily recognisable features Support for Ripple (XRP)
Devlog #8 That took a lot of time! Over the past two weeks, I have done quite a bit of bug fixing and stopping undesired behaviour, including fixing weird sideways scrolling behaviour on the dashboard portfolio and creating custom scrollbars for less janky behaviour fixing the left sidebar’s contents overflowing vertically when the window height was decreased too much (it now lets you scroll if there is not enough space to fully display its contents) stopping zooming with Ctrl + ... or with trackpad gestures completely fix portfolio allocation percentage bars stuck at zero in the dashboard Along with this, I have done quite some improvement on the CI (especially the release.yaml workflow and pre-commit checks) and some refactoring, including using Lefthook npm install , bun install , Oxlint, Oxfmt validation, TypeScript typechecking, cargo check , and package.json package-lock.json bun.lock src-tauri/Cargo.lock are automatically staged on every commit. The npm install , bun install , and automatic lockfile staging is to ensure consistency between npm and Bun so that both can be used in development and testing. The other checks are for checking (or at least trying to; there could always be edge cases that aren’t covered) that no invalid code gets committed. There is also a maximum commit message subject length (72 characters) and the same for each line of the commit message body to ensure that commit messages stay readable. cargo test , and rust-analyzer analysis on every push to GitHub, since every commit runs the other checks anyway and uncommitted code can’t be pushed refactoring the previously monolithic TypeScript file that contained multiple pages so that each page now gets its own file inside of src/views/ significantly improving release.yaml (the app release workflow for GitHub) so that it now adds a commit count since the last release adds a line count statistic and the change in lines since the previous release allows for release comments and highlights written by me adds a link that links to a GitHub page of all the commits made between the release and the previous one (it already/before this change had all the new commits listed in the release notes with a link to each one) unifying networks.json (the file that contains all the relevant chain information for the TypeScript frontend) with all the scattered equivalent information in the Rust backend; now, the backend references the networks.json file instead Also, you are now able to test out all of these changes as I have just released v0.3.0 of VaultForge! Unfortunately, I haven’t yet worked on any of the theme changes but these are top priority for the next release… As a recap, here are the things that I will be working on for the next release, in order of priority: Updated theme Full Tron support (not just native token sends) Ripple (XRP) support Miscellaneous bug fixes and new features
Devlog #9 Not much to report but I’m still working on improving the theme and the wider interface. You can see my progress here . Recent changes Below is a quick summary of what I’ve been working on since last devlog: Improved fonts ( Tektur for headings, Manrope for body text, and Ubuntu Mono for monospace text) Updated some text across different views for consistency Improved the look and feel of onboarding Added wallet setup flow to onboarding so you can now quickly import or generate a wallet with different seed length options (12, 15, 18, 21, and 24-word seed phrases are all supported now) Theme selection (in onboarding) between four different themes - I know these look a bit AI-generated rn (they are; it would have been frustrating to write out three new themes) but I will make them look a bit better in the future Auto-lock! 🎊 Now, you can easily set an auto-lock option in the onboarding or have none at all Upcoming features I think the elephant in the elephant in the room rn is actual settings which I will be working on over the next few days as currently there are no settings in the literal settings page!
Devlog #10 I’m close to finishing the theme improvements (I would say I’m about 90% there) and am doing some general bug fixes and QoL improvements. As such, there isn’t much to log rn except for a few small new features & improvements: Show/hide password button on recovery phrase and password Loads of bug fixes, e.g., inconsistent password strength progress bar on onboarding, preventing the user from typing the Enter key when entering a seed phrase to import, text overflow, etc. Some dependency version bumps If you want to see my progress on this PR (there are already like 30 commits in it - it’s a pretty big PR!), you can do so here . What’s coming next Some final finishing touches on the PR and then I will merge it to main so that it will be in the next release Support for Tron token transfers Support for Ripple The release of VaultForge v0.4.0 either before or after adding support for Ripple transactions A revamp of the settings tab (currently it doesn’t do anything) Support for Zcash
Devlog #11 What a MASSIVE PR and it’s finally merged ! Hooray! That was the biggest PR I’ve ever created by a big margin. Now I can finally start work on actual features like more support for different blockchains, address types, random extra features that certain chains have… the list goes on. I already have a personal list of 25 different blockchains that I want to add support for, most of which aren’t in the project roadmap simply for the reason that it would make the file overly long and hard to read. * sigh * that will take a long time Not to underestimate what I added with the PR, though - I didn’t spend like 15 hours and do 48 commits for nothing: inside the PR I added Onboarding! 🎊 Lots of (at least in the future) common settings will be selected here to set up your wallet. You can already import an existing wallet or generate a new one (both accept 12, 15, 18, 21, and 24-word recovery phrases) and set an auto-lock timeout and select networks you want or don’t want. Finally, there is also the option to select a theme if you want. New and more prominent splash screen when loading the application. The application itself is super fast so it takes barely any time but to make it look cooler I’ve set a minimum time to display it for to 650 ms. Icons throughout the application to make it look better. Let you copy addresses in the sidebar with one click and list all enabled addresses, not just Ethereum. Squashed some more small UI bugs, especially relating to scrolling in different parts of the application. Although slightly unrelated to the theme of the PR, MUCH better refresh logic and handling. It now respects network selection choices (like the ones you want or don’t want that you selected during onboarding) and tells you exactly which network’s RPC request encountered errors. Perhaps ironically, this was literally the reason I fixed an issue with the Solana RPC. Before this update, it never actually refreshed the balance correctly so it wasn’t working. However, after this change, I was able to identify that the issue was not on my end (yay!) but was actually PublicNode ’s (the RPC I’m using for the majority of chains in this project for consistency, apart from Monad and now Solana) as I assumed it could fetch the user’s token accounts but it couldn’t so I had to switch to using the official Solana RPC which fixed the issue. For anyone who got lost somewhere in the previous paragraph, an RPC is a service that allows you to query data about the state of the blockchain (where crypto transactions are stored) so you can use it to see how much crypto you are holding. Token accounts are basically a weird quirk of Solana where your main account is used to hold Solana which links to associated token accounts (ATAs) , which each hold one token other than Solana. This is by far not a complete list but rather a list of the highlights of this PR; if you want to look at all the changes, please feel free to visit the page linked at the top of this devlog. That said, after this big change, I did say last devlog that I would be getting ready to release version v0.4.0 of this application which is exactly what I will do after adding Tron token support! Quick reminder, after v0.4.0 I am planning to add Ripple (XRP) support, preliminary (meaning like non-shielded probably) support for Zcash and revamp the settings page like I did to the onboarding in this PR. Further out, I will probably focus some more on the in-application swaps to aggregate data from major DEXs (decentralized exchanges) to get the best rates, matching other major wallets w/ more chain support, which would make my wallet actually competitive. 🤞
Devlog #12 Quite a bit more to report this time! Since last devlog, I’ve mostly been working on improving actual wallet functionality, fixing some smaller UI issues, and looking into performance. Recent changes Below is a quick summary of what I’ve been working on since the last devlog: Full TRC-20 token support is here! 🎊 Tron is no longer limited to just native TRX transfers, and the token validation/network logic has been updated to support TRC-20 tokens as well. Significantly improved Bitcoin support by adding proper BIP84 account discovery . VaultForge now scans both receive and change addresses, tracks which UTXOs belong to which derived addresses, signs each input with the correct derived key, and refreshes discovery before sending. Anecdote: I use Brave Wallet which did the receive and change addresses thing so my funds didn’t show up in previous versions of VaultForge. However, as of this update, I now am. Wallet unlocking now feels much faster ! Cached balances/prices are shown immediately while fresh data refreshes in the background. Improved asset cards so they show which network an asset belongs to . Assets worth less than $1 are now hidden from the portfolio/assets view unless VaultForge does not have price data for them. Fixed a few UI issues, including dashboard scrolling, refresh errors, escaping asset data (aka preventing XSS) , and copying the currently selected wallet address. Converted the remaining .js config files to TypeScript because apparently I cannot resist refactoring things even when it makes no difference whatsoever. For the first time in this series of devlogs, I’m linking the changes to relevant commits on GitHub wherever possible so you can have a look. Performance improvements I also found a few ways to reduce VaultForge’s roughly 10s full refresh time: Cached unlock (mentioned above): perceived unlock time is now closer to ~1–3s, although balances/prices can still take around the same amount of time to fully refresh in the background. Reuse HTTP clients: should save roughly ~0.2-1.5s by reusing connections. Concurrent provider calls: likely the biggest improvement, potentially bringing a ~10s refresh down to ~3–5s. Refresh prices separately: could make fresh balances appear another ~0.5–2s sooner. Derive Argon2 once: should save roughly a few hundred ms to ~1s on cold unlocks. The above estimated perf improvements are obviously quite variable and depend on a multitude of factors (+ I got ChatGPT to analyze my current code to make an estimate because how else would I do it), but there is definitely still a lot of low-hanging fruit here. Upcoming features Actual settings are still the elephant in the room 😭, so I definitely need to get around to those but since I think this may need a big PR a bit like the previous style improvements, I think I will do this after v0.4.0 (so therefore for v0.5.0 ). Ripple (XRP) support (at least for native token transfers), planned for v0.4.0 . Zcash (ZEC) support: I’ve got a feeling this one will take quite some time so at most I will implement transparent <=> transparent transactions before next release but will have to see. The remaining performance improvements mentioned above.
Devlog #13 I finally added different currencies ! Before, all prices were displayed in USD and now they can display in any of the below currencies: USD ($) EUR (€) GBP (£) JPY (¥) Shoutout to the fantastic API I used for this! Previously, I fetched CoinGecko pricing data which came in USD but I needed to convert this data into whatever currency the user chose so I had to find an API. However, there really weren’t any good forex APIs that were free with no rate limits when I searched for one so I turned to ChatGPT to find one and find one it did. This API gives daily central bank rates and even has data going back to 1948 on 201 currencies which is more than enough for this project. I also added the second performance improvement : caching the HTTP request client object to avoid having to recreate it on every API request. As of rn the project roadmap for the near future is this: Finish perf improvements Add basic Ripple (XRP) transaction support Maybe add transparent <=> transparent pool transaction support for Zcash (ZEC) Release VaultForge v0.5.0
Devlog #14 Not very much since last time; just some refactors and small improvements throughout. You can kind of tell by all the fix/chore/docs changes… btw improved settings is in the works - I think I’ll do some more progress over the next two days, then some actual chain support for Ripple. I’ve decided that I will release v0.4.0 before adding basic Zcash support as it’s been basically a month since last release and I don’t want to keep you guys waiting for those of you who want to download the binaries directly w/o building. Quick summary Now –> ~5 September: settings improvements 5 September –> 7 September: Ripple support 7/8 September: release of VaultForge v0.4.0
Devlog #15 Since the last devlog, I’ve worked on some more boring stuff: Tauri cleanup and desktop-specific improvements. I moved the application setup and command registration from src-tauri/src/main.rs into a new src-tauri/src/lib.rs . This keeps the entry point organized and follows Tauri’s recommended structure, while main.rs now only launches the library. I also replaced the browser clipboard API with Tauri’s native clipboard manager plugin. Copy buttons now use the desktop clipboard integration. Finally, VaultForge now enforces a single-instance window. If the app is launched while another instance is already open, the new launch focuses the existing main window instead of opening a second copy, which is far more desirable of a behaviour imo as it lets a user find a window without inadvertently opening even more. Plus some more random stuff: I now sign off all my commits As of today (4th of September), I also sign all my commits with a PGP key to verify all commits are made on my laptop and not by someone who hacked my GitHub account or smth - this is definitely overkill but why not Next, I’m continuing the settings improvements before moving on to Ripple support. P.S. I also randomly moved to Neovim as it looks much better than VS Code.
Devlog 16 sorry guys, i’m kind of late on this one tbh: I said that I would have the settings improvements, ripple support and all that ready by like monday but clearly nothing has happened since like the weekend. i have decided to delay the timleine by about a week as after some careful consideration I found it was wayyy too aggressive and my fingers can’t keep up with the typing speed i would need for that :) i seriously have no idae whatsoever why I thought it was possible to add that many features in such a short space of time. I know it kind of is but I have school now which means i have much less time for this with homework and studying and stuff. however, today I decided to lock in and actually do this and so I can assure you that i am hard at work doing the settings stuff rn and ripple support is absolutely coming right after that this next release really is going to be a big one… p.s. i attached a screenshot of some of the new commits i worked on (more are coming soon)
Devlog 17 perf improvement #3 done! 🎊 now refreshes are fully concurrent, w/ a limit of 4 requests at a time to avoid rate limiting. i haven’t fully tetsed it yet but it feels noticeably faster (like 25-35% faster) until the updated prices & balances are shown. plus, I kind of finished the settings stuff so i’ll be working on ripple support ig…
Devlog 18 i finished all the perf improvements! there was one that i left out though bc it probably wouldn’t have helped much in terms of performance and would have been a pain to implement. i am FINALLY going to move on to ripple support for the next few days…
Devlog 19 still cooking on the ripple support… i think i will be done by friday.
Devlog 20 so i finally added ripple support… and migrated everything to React for a much better, cleaner UI. and as always, i am late again. i actually could have finished on friday but i had other things to do (like homework) and i also wanted to migrate to react as well since I decided this will be my last release before the end of stardance, so i really want to add everything i can. this is because after stardance i will take a break of a few months on this project and then come back with a different hack club ysws challenge. the react migration was so big that i decided to use AI this time: the finished App.tsx file containing the react code is over 3090 lines of code (proof is the 2nd attached image)! that’s the largest code file i have ever worked on. since this is a huge change to the ui, i decided to create some before and after comparisons below. anyways, i decided to share some design decisions relating to the migration to react. i knew react was a big framework so it would add a few MB to the app’s file size (about 1-2 MB as of my recent testing) but the app itself is tiny anyway - not even 30 MB - so i thought it was really worth it. it gives you design consistency, more so than tailwindcss, which i needed since the more fun part for me was working on the backend and not the frontend (the user-facing part of the application). plus, the guys who work at coinbase (shoutout to them) made a goated plugin/theme/whatever you call it for react which makes my app have the default coinbase theme that i can tweak (i made the font monospace) which is alone like 70% of the stuff needed for the migration. i promise i will release v0.4.0 tomorrow…
Devlog 21 as promised, VaultForge v0.4.0 is out! this brings huge changes to wallet unlock speed, adds ripple support, adds BIP-84 addresses, and loads more. here is the link to the release page if you want to check it out. some interesting stats: there was an increase of >6,000 lines of code which is a more than 50% increase since v0.3.0 . 132 commits since last release. this is probably going to be my second-to-last devlog as i really want to hit the 100-hour mark.
Devlog 22 since the deadline for stardance has been extended by one month, i decided to keep going and make VaultForge as good as possible over the coming weeks. here’s a quick overview of what i will focus on next: actual swapping, and integration with multiple DEXes (think Jupiter, NEAR Intents, Uniswap, etc.) a better activity view token and chain icons! makes it much easier to differentiate between assets general performance and UI improvements with these new features, especially the integrated swapping, my wallet is finally going to be on par (mostly) with established wallets such as metamask. i’ve already got like 10+ commits since the last release that i will merge to main branch soon…
Devlog 23 15 new commits pushed to main ! still cooking on the integrated swapping support… sorry this is a short devlog; i’m more focused on the coding rn and will post when i’ve done something more substantial.
Devlog 24 - adding support for swapping after absolutely grinding on the support for swapping for the past week, here are some updates: 12 commits coming to main soon, about half bug fixes 4/10 things completed that i think are required for adding swapping support (more info below) i’ve also decided on a rough implementation order of swapping-related functionality: CCTP v2 transfers (basically moving USDC stablecoins across chains) Uniswap DEX (the biggest Decentrallized EXchange) Jupiter DEX ( the biggest dex on Solana) NEAR Intents (a cross-chain DEX) LI.FI aggregator (basically tells the walet the best market rates) i know this is kind of an ambitious timeline but i think i can pull it all off before the end of stardance on the 31st of october 🤞. i think i will manage to get CCTP transfers working by friday or sunday, depending on how much time i have.
Devlog 25 - some progress on the swapping i haven’t had much time in the last few days but i managed to do a big refactor to make the code more modular and cleaner. this is needed so that i can do more complex transactions instead of just basic transfers. i haven’t pushed it to main or committed it yet but it’s basically done. in terms of when CCTP support will ship, I think it will be by the end of sunday.
Devlog 26 unfortunately, it’s taking longer than i would like to add the swapping and CCTP functionality. i would say i’m about 80% there, but there are quite a few things that i have to think about and as such, i think i will get it working by tomorrow (tuesday). stay tuned! 👀
Devlog 27 - CCTP support is here… in like 30 minutes hang tight, it’s coming soon 🚀 i attached some proof , you guys can check out the transaction here more info on this tomorrow after v0.5.0 comes out with the CCTP support. you haven’t seen nothing yet, uniswap support coming next; stay tuned! probably coming in the next week or so…
Devlog 28 - coin icons! it finally looks sooo professional now… just look at those icons! they will also appear in the send and transfer (soon to be swap!) tabs over the coming days. uniswap dex integration is still the top priority though. 🫡 before there weren’t any (they were just grey) and every wallet has them so i made it better ig
Devlog 29 - more coin icons! specifically for AAVE, Chainlink (LINK), and Uniswap (UNI).
Devlog 30 - support for swapping (finally!) this took so long!!! i thought i would be done last friday but ig that was overly optimistic… there are still some small things i will fix/improve to make the experience a bit smoother in the coming days. Implementation so i added uniswap support for all supported evm chains; however only for same-chain transactions and only through one pool. this is suboptimal so i want to add cross-chain support and through multiple pools maybe in the future. to make it possible to do cross-chain swaps, i added Relay support (it’s an aggregator) were solvers compete to give a quote. the issue with this is that they charge quite a fee and so i really want to just use uniswap where possible. what’s next better uniswap integration (as mentioned above), plus support for solana potentially jupiter support (it’s a solana DEX) as it has really good rates and high liquidity.
Devlog 31 - swapping support for Solana! (partially) there’s now swapping support for solana, at least for DEX aggregators like LI.FI or Relay. i still need to figure out native solana DEX swapping on platforms like Jupiter…
Devlog 32 - what a grind!!! vaultforge v0.5.0 is finally out ! so many new features i honestly can’t remember all of them! just as a recap vaultforge is available on mac, linux, and windows. i’m on linux so i couldn’t really test the binaries on other oses that well. there’s a .deb and .rpm for linux for debian-based (debian, ubuntu, etc.) and fedora-based (rhel, fedora, bazzite) distros. and yes, before you ask, there is an appimage available. btw github actions is sooooo slow 🐌, especially the mac os x64 runners - grrrrrrr . i’ve been stuck here just waiting for the past 1/2 an hour… i was so frustrated that i decided to completely remove support for itnel macs cuz the build times are like 3x slower. sorry intel mac users. that took so long… finally ready to ship! tbh i mostly just did some ci stuff since last devlog but i also added some nice ui impirovements. guys please give me a good rating 🙏
Devlog #33 - some cleanup i migrated from vite to bun’s built-in bundler and minifier and updated the README.
Ships:
Fully functional, multi-chain (Bitcoin, EVM, and Solana support with more on the way) wallet. To test this project, please go to the GitHub repository linked to the project.
What did you make? VaultForge is a multi-chain, fully self-custodial crypto wallet with support for Bitcoin, EVM chains (e.g., Arbitrum, Avalanche, Base, BNB Chain, Ethereum, Polygon, etc.), Solana, Tron, and XRP. Additionally, VaultForge has support for swapping (see below screenshot) using Decentralized EXchanges (DEXs) such as Uniswap and Jupiter and DEX aggregators such as LI.FI and Relay. There is also support for transferring stablecoins (crypto tokens pegged to dollars) across chains with Circle’s CCTP v2. Why did I make it? I was frustrated with the lack of consistent support for major chains across crypto wallets and the need to use multiple of them. It turns out it was much harder to make than I thought. What was challenging? By far the hardest part was adding support for swapping and the CCTP features to some extent as it required extensive knowledge of each chain as they all behaved differently and needed a lot of research on each provider’s API. It also took loads of rigorous testing to make absolutely sure that it would work every time before doing a test with real funds (again, see the below screenshot). What are you proud of? I’m really happy with how the wallet onboarding turned out - all though it is quite a small part of the application I think it is quite easy to use and set up the wallet and lets you set up all the common settings such as your base currency and theme (light or dark mode). What should people know so they can test your project? Unfortunately, due to time constraints and the amount of extra code it would require to add this feature, I was not able to add a demo feature to test the wallet without real funds. This might make it hard to test the entirety of the wallet’s features, especially the sending and swapping part. If I had more time, I would definitely try to improve this. Also, due to the slow build times with GitHub Actions, I removed support for Intel Macs. I don’t think many people use them anymore though so I hope it isn’t too big of an issue....
|
1793652565.5758605
|
1793738965.5758605
|
|
27445
|
My first slack bot! by @harishh | Stardance
|
harishh
|
1
|
2.96
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T06:33:51Z", "hours": 0.0, "multiplier": 1.11, "payout": 1, "blessing": "neutral", "text": "i made a slack bot, it was pretty challenging to understand how this challenge works, because im a complete beginner to this stardance and to coding, so i did use ai to learn stuff, it was a fun project and i will give updates to make this one better, i will make a new game and release it!!!", "repo": "https://github.com/starharish0210-afk/lucid-bot", "demo": "https://hackclub.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 73829, "ts": "202 [{"post_id": 73829, "ts": "2026-09-26T03:39:00Z", "hours": 2.9558, "text": "I have updated my Slack bot!! - I am sure that my new food command will make your mouths water"}, {"post_id": 21950, "ts": "2026-07-04T04:41:59Z", "hours": 0.4528, "text": "I built Lucid, a Slack bot that runs 24/7 on Hack Club’s Nest server! It started as just a basic ping bot but I kept adding more commands — weather, cat facts, jokes, a cat of the day with a full image card, and even a NASA astronomy picture of the day with space facts. Built it with Node.js and Slack Bolt, deployed it as a systemd service so it never goes down even when my laptop is off. Pretty proud of how it turned out! lets goooooooooooo"}]...
|
Title: My first slack bot! by @harishh | Stardance Title: My first slack bot! by @harishh | Stardance
Devlogs:
I built Lucid, a Slack bot that runs 24/7 on Hack Club’s Nest server! It started as just a basic ping bot but I kept adding more commands — weather, cat facts, jokes, a cat of the day with a full image card, and even a NASA astronomy picture of the day with space facts. Built it with Node.js and Slack Bolt, deployed it as a systemd service so it never goes down even when my laptop is off. Pretty proud of how it turned out! lets goooooooooooo
I have updated my Slack bot!! - I am sure that my new food command will make your mouths water
Ships:
i made a slack bot, it was pretty challenging to understand how this challenge works, because im a complete beginner to this stardance and to coding, so i did use ai to learn stuff, it was a fun project and i will give updates to make this one better, i will make a new game and release it!!!...
|
1793652566.8700786
|
1793738966.8700786
|
|
5880
|
SOTD Bot by @dhruvra | Stardance
|
dhruvra
|
1
|
2.25
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-03T23:01:26Z", "hours": 2.0, "multiplier": 1.63, "payout": 3, "blessing": "neutral", "text": "I made a bot for Discord that’s able to respond to certain keywords and can generate a song of the day. It remembers what song is generated for the entire day. It also has a minor obsession with J-Rock (the best music genre, of course). The project is coded entirely in Python. Through it, I learned more about how Discord.py works, as well as pulling information from APIs in Discord.", "repo": "https://github.com/qibliusegit/song-of-the-day", "demo": "https://discord.gg/SV7eJkfMjX"}]...
|
[{"post_id": 2270, "ts": "2026 [{"post_id": 2270, "ts": "2026-06-04T17:44:37Z", "hours": 0.2542, "text": "Added some more functionality and details to the bot, so it specifies the date when it prints out the Song of the Day and also just commented more of my code. Since all of these APIs connect to Music Brainz’s ID system for some reason, I may use that to be able to query for general song info."}, {"post_id": 1756, "ts": "2026-06-03T22:54:01Z", "hours": 0.695, "text": "I made it so the bot is able to keep track of songs that have already been selected as Songs of the Day, and also made it so the bot keeps track of the date and won’t generate a new song for the same day if one’s already been selected. These both, of course, only work when the bot is running the entire time."}, {"post_id": 1622, "ts": "2026-06-03T19:13:05Z", "hours": 0.3983, "text": "Devlog #3 I switched to the AudioDB API since it’s IDs are just 8 digit codes, rather than UUIDs like what MusicBrainz has. However, this has come with its own set of problems, mainly being that finding a track takes a minute. Since I’m generating an 8 digit number and not all numbers will actually have songs assigned to them, sometimes I’m just sitting there staring at it find null results over and over again. That, however, is an issue that will be approached once I have the code properly printing the information I want it to. For now, it at least can find a song and turn it into a list. Also, working on two scripts at once (since I would rather not leak my bot token) is a lot harder than I thought it would be, since I’m effectively coding on one file (which gets its time tracked) and debugging on another (which does not get its time tracked)."}, {"post_id": 1327, "ts": "2026-06-03T08:16:09Z", "hours": 0.57, "text": "There surprisingly aren’t many ways to randomly search for a song, and whatever ones do exist continue to fail for some reason. I’m currently using the ISWC code that’s assigned to all musical works, but MusicBrainz API either doesn’t feel like actually using it or there’s something wrong with the API. I guess I’ll find out eventually."}, {"post_id": 1265, "ts": "2026-06-03T04:38:50Z", "hours": 0.3894, "text": "Made it so the bot can respond to keywords. Now to start reading up on various different music APIs to find one which properly suits my needs."}]...
|
Title: SOTD Bot by @dhruvra | Stardance
Devlogs:
Title: SOTD Bot by @dhruvra | Stardance
Devlogs:
Made it so the bot can respond to keywords. Now to start reading up on various different music APIs to find one which properly suits my needs.
There surprisingly aren’t many ways to randomly search for a song, and whatever ones do exist continue to fail for some reason. I’m currently using the ISWC code that’s assigned to all musical works, but MusicBrainz API either doesn’t feel like actually using it or there’s something wrong with the API. I guess I’ll find out eventually.
Devlog #3 I switched to the AudioDB API since it’s IDs are just 8 digit codes, rather than UUIDs like what MusicBrainz has. However, this has come with its own set of problems, mainly being that finding a track takes a minute. Since I’m generating an 8 digit number and not all numbers will actually have songs assigned to them, sometimes I’m just sitting there staring at it find null results over and over again. That, however, is an issue that will be approached once I have the code properly printing the information I want it to. For now, it at least can find a song and turn it into a list. Also, working on two scripts at once (since I would rather not leak my bot token) is a lot harder than I thought it would be, since I’m effectively coding on one file (which gets its time tracked) and debugging on another (which does not get its time tracked).
I made it so the bot is able to keep track of songs that have already been selected as Songs of the Day, and also made it so the bot keeps track of the date and won’t generate a new song for the same day if one’s already been selected. These both, of course, only work when the bot is running the entire time.
Added some more functionality and details to the bot, so it specifies the date when it prints out the Song of the Day and also just commented more of my code. Since all of these APIs connect to Music Brainz’s ID system for some reason, I may use that to be able to query for general song info.
Ships:
I made a bot for Discord that’s able to respond to certain keywords and can generate a song of the day. It remembers what song is generated for the entire day. It also has a minor obsession with J-Rock (the best music genre, of course). The project is coded entirely in Python. Through it, I learned more about how Discord.py works, as well as pulling information from APIs in Discord....
|
1793652568.0254447
|
1793738968.0254447
|
|
51432
|
WONDER by @samia | Stardance
|
samia
|
1
|
11.53
|
6
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-02T18:40:24Z", "hours": 5.0, "multiplier": 1.38, "payout": 6, "blessing": "neutral", "text": "I make WONDER. I was trying to find some knowledge about the planets in space but when I saw the info on the internet it was so boring to read all of that. So I thought, why don’t I make something that will give info about the planets but in a wonderful way. It makes people curious about what happens next, so the user will read more without getting bored.", "repo": "https://github.com/samia-siddique/wonder", "demo": "https://wonder-space.vercel.app/"}]...
|
[{"post_id": 64285, "ts": "202 [{"post_id": 64285, "ts": "2026-09-08T15:44:26Z", "hours": 6.5264, "text": "The Jupiter page on my Wonder website!"}, {"post_id": 50402, "ts": "2026-08-19T15:48:26Z", "hours": 4.6319, "text": "I created the WONDER, which makes learning about space easier and makes you wonder about the planets and space."}]...
|
Title: WONDER by @samia | Stardance
Devlogs:
I cr Title: WONDER by @samia | Stardance
Devlogs:
I created the WONDER, which makes learning about space easier and makes you wonder about the planets and space.
The Jupiter page on my Wonder website!
Ships:
I make WONDER. I was trying to find some knowledge about the planets in space but when I saw the info on the internet it was so boring to read all of that. So I thought, why don’t I make something that will give info about the planets but in a wonderful way. It makes people curious about what happens next, so the user will read more without getting bored....
|
1793652569.1955326
|
1793738969.1955326
|
|
54696
|
mochi_robot_project by @lakshaykhatri780 | Stardan mochi_robot_project by @lakshaykhatri780 | Stardance...
|
lakshaykhatri780
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T20:28:58Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I am building Mochi, an interactive companion desk robot! So far, I have engineered the core non-blocking state machine framework and custom anime-style blinking expressions on the 0.96” OLED display using an ESP32. The biggest challenge was designing the multi-axis motion and transistor sound circuits without having all the hardware components yet. I am shipping this now to unlock project grant funding so I can buy the dual servo motors, ultrasonic sensor, and speaker modules needed to finish the physical PVC pipe body assembly!", "repo": "https://github.com/lakshaykhatri780-tech/mochi_robot_project", "demo": ""}]...
|
[{"post_id": 63770, "ts": "202 [{"post_id": 63770, "ts": "2026-09-07T18:46:22Z", "hours": 1.0558, "text": "Finally mochi shows expressions"}, {"post_id": 63494, "ts": "2026-09-07T11:50:31Z", "hours": 0.95, "text": "Wiring all my components on prefboard"}, {"post_id": 63428, "ts": "2026-09-07T08:36:10Z", "hours": 0.805, "text": "Making a custom circuit for my mochi"}, {"post_id": 62144, "ts": "2026-09-05T12:15:01Z", "hours": 2.0981, "text": "writting the codes for my mochi expressions"}]...
|
Title: mochi_robot_project by @lakshaykhatri780 | Title: mochi_robot_project by @lakshaykhatri780 | Stardance
Devlogs:
writting the codes for my mochi expressions
Making a custom circuit for my mochi
Wiring all my components on prefboard
Finally mochi shows expressions
Ships:
I am building Mochi, an interactive companion desk robot! So far, I have engineered the core non-blocking state machine framework and custom anime-style blinking expressions on the 0.96” OLED display using an ESP32. The biggest challenge was designing the multi-axis motion and transistor sound circuits without having all the hardware components yet. I am shipping this now to unlock project grant funding so I can buy the dual servo motors, ultrasonic sensor, and speaker modules needed to finish the physical PVC pipe body assembly!...
|
1793652570.3481774
|
1793738970.3481774
|
|
54291
|
Hacking gadget by @Makkonen | Stardance
|
Makkonen
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Hacking gadget by @Makkonen | Stardance
|
1793652571.5122085
|
1794516571.5122085
|
|
71511
|
clock by @aranmendelow | Stardance
|
aranmendelow
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @aranmendelow | Stardance
|
1793652572.3729177
|
1794257372.3729177
|
|
71512
|
My first slack bot! by @Francisco | Stardance
|
Francisco
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Francisco | Stardan Title: My first slack bot! by @Francisco | Stardance...
|
1793652573.2562513
|
1794257373.2562513
|
|
71513
|
Rocky's Thinking Machine by @Sardino | Stardan Rocky's Thinking Machine by @Sardino | Stardance...
|
Sardino
|
0
|
7.09
|
0
|
[]
|
[{"post_id": 86014, "ts": "202 [{"post_id": 86014, "ts": "2026-11-01T00:14:48Z", "hours": 4.4044, "text": "Did a remake! Rtm sadly didn;t work out too well. But fear not! i have revived them and they’ll be better than ever"}, {"post_id": 83630, "ts": "2026-10-28T08:36:06Z", "hours": 2.1592, "text": "Got a button workin! i want RTM to be functional with little things you can do, one of those is an instance where you can chat with Grace (they are predetermined responses and questions but still !) Currently got the intial button for him working, need to work on his decision tree soon. Wanna make the box a lil bit smaller and cuter, but that can wait"}, {"post_id": 83204, "ts": "2026-10-27T10:13:05Z", "hours": 0.5283, "text": "Started making the basic welcome screen! Its not really pretty, but i snazz it up later. rn its pretty mid"}]...
|
Title: Rocky's Thinking Machine by @Sardino | Title: Rocky's Thinking Machine by @Sardino | Stardance
Devlogs:
Started making the basic welcome screen! Its not really pretty, but i snazz it up later. rn its pretty mid
Got a button workin! i want RTM to be functional with little things you can do, one of those is an instance where you can chat with Grace (they are predetermined responses and questions but still !) Currently got the intial button for him working, need to work on his decision tree soon. Wanna make the box a lil bit smaller and cuter, but that can wait
Did a remake! Rtm sadly didn;t work out too well. But fear not! i have revived them and they’ll be better than ever...
|
1793652574.1364057
|
1794257374.1364057
|
|
71514
|
WarioWare Game by @qwert-y | Stardance
|
qwert-y
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @qwert-y | Stardance
|
1793652575.0245032
|
1794257375.0245032
|
|
61900
|
Search And Rescue Drone by @vsammeta09 | Stardance
|
vsammeta09
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Search And Rescue Drone by @vsammeta09 | St Title: Search And Rescue Drone by @vsammeta09 | Stardance...
|
1793652575.9173772
|
1794257375.9173772
|
|
61901
|
Search and Rescue Drone by @vedanshbuild | Stardan Search and Rescue Drone by @vedanshbuild | Stardance...
|
vedanshbuild
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Search and Rescue Drone by @vedanshbuild | Title: Search and Rescue Drone by @vedanshbuild | Stardance...
|
1793652576.7886295
|
1794257376.7886295
|
|
61904
|
projct 2 by @kajamaniyograj | Stardance
|
kajamaniyograj
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: projct 2 by @kajamaniyograj | Stardance
|
1793652577.683025
|
1794257377.683025
|
|
61906
|
Bless by @Blessing-Radebe | Stardance
|
Blessing-Radebe
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Bless by @Blessing-Radebe | Stardance
|
1793652578.5673232
|
1794257378.5673232
|
|
61907
|
strike by @hrshn | Stardance
|
hrshn
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: strike by @hrshn | Stardance
|
1793652579.4323757
|
1794257379.4323757
|
|
61908
|
strike by @hrshn | Stardance
|
hrshn
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: strike by @hrshn | Stardance
|
1793652580.3315425
|
1794257380.3315425
|
|
61909
|
hrshn by @hrshn | Stardance
|
hrshn
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: hrshn by @hrshn | Stardance
|
1793652581.2094574
|
1794257381.2094574
|
|
28503
|
Clickbait Tycoon by @SuperTNT | Stardance
|
SuperTNT
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-29T23:40:15Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Stepping Away to Reset Headline Tycoon started as a necessary escape. I was deep in the trenches of a much larger, more complex project, and I could feel the early signs of burnout creeping in. To keep my momentum alive and clear my head, I challenged myself to build a small, high-satisfaction game completely from scratch. Taking a short break to build something snappy and functional completely recharged my batteries, reminding me why I love game development in the first place. Technical Hurdles in the Sprint Every project has its friction, even a short sprint. Beyond the UI layout battles, my biggest technical challenge was fighting with Godot 4’s C# compilation tools. I initially intended for this to be a browser game, but the web export pipeline for this specific engine setup is still incredibly finicky. Figuring out how to pivot gracefully to a single-file desktop deployment without breaking my codebase took some creative troubleshooting. I also had to spend a solid chunk of time tracking down a “dead click” bug, which ultimately led me to stop relying on the editor inspector for signals and instead script all UI connections dynamically when the game boots. Tester’s Guide: What to Know Since this is a raw, freshly exported core-loop prototype, there are a few things you should know before jumping in to build your empire. Because it is an unsigned indie executable, Windows Defender SmartScreen will likely trigger a blue warning window when you run it. The file is completely safe, so you just need to click “More Info” and then “Run Anyway” to launch it. Keep in mind that there is no save or load system implemented in this build, meaning your media empire resets when you close the window. As you play, pay close attention to the economy pacing. I specifically need feedback on whether the cost multiplier feels satisfying or if the numbers hit a boring wall where progress grinds to a frustrating halt. Let me know if the buttons react instantly when you click them, and how the overall layout scales on your specific monitor resolution.", "repo": "https://github.com/SuperTNT-Code/ClickBait-Tycoon", "demo": "https://github.com/SuperTNT-Code/ClickBait-Tycoon/blob/main/Clickbait%20Tycoon.zip"}]...
|
[{"post_id": 18770, "ts": "202 [{"post_id": 18770, "ts": "2026-06-29T23:35:54Z", "hours": 2.1292, "text": "Clickbait Tycoon | From Blank Screen to Clickable Empire Date: June 30, 2026 Engine: Godot 4.3 (C# / .NET) Status: Core loop complete – Exported and ready to play! The Idea I’ve always loved incremental and idle games. There is something magical about watching numbers go up and seeing that exponential growth curve kick in. I decided to build my own: Headline Tycoon. The premise is simple: you are a rising media mogul. You start by manually writing headlines to earn cash, then slowly hire AI tools to do the work for you. It’s a classic clicker formula wrapped in a modern AI theme. Building the Core Loop The engine architecture is straightforward. I set up a GameManager singleton as an autoload to handle the game state: Active Income: The headline click is handled by OnHeadlineButtonClicked, which calls AddCash and passes in the ClickValue. Passive Income: Passive cash generation runs inside _Process, utilizing delta to ensure the income ticks independently of the framerate. Every second, CurrentCash increases by CashPerSecond * delta. The Scaling: I defined five distinct upgrades, with starting costs ranging from $10 to $2,000. Each upgrade applies a 1.15 multiplier to its cost upon purchase, scaling the prices exponentially to create that classic idle-game snowball effect. Technical Note: The main challenge was keeping the math precise. I used double instead of float to avoid floating-point rounding errors when the numbers eventually hit the billions. The UI Nightmare (And How I Beat It) I am a coder, not a UI designer. At first, my labels and buttons were a chaotic mess. I ran into two major headaches trying to tame the interface: The Dead Buttons Initially, clicking the upgrade buttons did absolutely nothing. I had written all the backend buying logic, but I forgot to hook up the Pressed signals. Instead of manually linking them in the Godot editor, I connected the signals via code inside _Ready. That instantly fixed the dead clicks. The Alignment Battle I wanted each upgrade row to feature the label on the left and the buy button perfectly aligned on the right edge. The fix came down to proper node management: I used an HBoxContainer for each row. The Secret Sauce: Setting the label’s horizontal Size Flags to Expand and Fill. This forced the label to occupy all remaining extra space, cleanly pushing the button to the far right. Adding Visual Feedback It feels bad to click a button and have nothing happen because your pockets are empty. To solve this, I added affordability checks inside UpdateUI. The buttons now grey out when you are broke and light up the moment you can afford the upgrade. Immediate visual feedback is everything in a clicker game. The Export Rollercoaster This part tripped me up. I wanted to deploy this as a web game so players could jump in instantly without a download. However, because I built this using Godot 4 + C#, web export support isn’t fully streamlined yet. I pivoted to desktop exports instead, targeting Windows executables—and honestly, it was the right call. Exporting to Windows is flawless in Godot. I enabled the option to embed the PCK file directly into the executable, packing the entire game into a single file. No dependencies, no installers; just double-click and play. (Note: Windows might throw a SmartScreen popup since it’s an unsigned EXE, but players just need to click “More Info” and then “Run Anyway”.) What’s Next? The game is fully functional, but I’m not stopping here. My immediate roadmap includes: Save/Load System: Because no one wants to lose their empire when they close the window. Visual Juice: Adding particle explosions to the headline button and floating +$1 text that drifts upward on click. Audio: Adding satisfying sound effects for clicks and upgrades."}]...
|
Title: Clickbait Tycoon by @SuperTNT | Stardance
Title: Clickbait Tycoon by @SuperTNT | Stardance
Devlogs:
Clickbait Tycoon | From Blank Screen to Clickable Empire Date: June 30, 2026 Engine: Godot 4.3 (C# / .NET) Status: Core loop complete – Exported and ready to play! The Idea I’ve always loved incremental and idle games. There is something magical about watching numbers go up and seeing that exponential growth curve kick in. I decided to build my own: Headline Tycoon. The premise is simple: you are a rising media mogul. You start by manually writing headlines to earn cash, then slowly hire AI tools to do the work for you. It’s a classic clicker formula wrapped in a modern AI theme. Building the Core Loop The engine architecture is straightforward. I set up a GameManager singleton as an autoload to handle the game state: Active Income: The headline click is handled by OnHeadlineButtonClicked, which calls AddCash and passes in the ClickValue. Passive Income: Passive cash generation runs inside _Process, utilizing delta to ensure the income ticks independently of the framerate. Every second, CurrentCash increases by CashPerSecond * delta. The Scaling: I defined five distinct upgrades, with starting costs ranging from $10 to $2,000. Each upgrade applies a 1.15 multiplier to its cost upon purchase, scaling the prices exponentially to create that classic idle-game snowball effect. Technical Note: The main challenge was keeping the math precise. I used double instead of float to avoid floating-point rounding errors when the numbers eventually hit the billions. The UI Nightmare (And How I Beat It) I am a coder, not a UI designer. At first, my labels and buttons were a chaotic mess. I ran into two major headaches trying to tame the interface: The Dead Buttons Initially, clicking the upgrade buttons did absolutely nothing. I had written all the backend buying logic, but I forgot to hook up the Pressed signals. Instead of manually linking them in the Godot editor, I connected the signals via code inside _Ready. That instantly fixed the dead clicks. The Alignment Battle I wanted each upgrade row to feature the label on the left and the buy button perfectly aligned on the right edge. The fix came down to proper node management: I used an HBoxContainer for each row. The Secret Sauce: Setting the label’s horizontal Size Flags to Expand and Fill. This forced the label to occupy all remaining extra space, cleanly pushing the button to the far right. Adding Visual Feedback It feels bad to click a button and have nothing happen because your pockets are empty. To solve this, I added affordability checks inside UpdateUI. The buttons now grey out when you are broke and light up the moment you can afford the upgrade. Immediate visual feedback is everything in a clicker game. The Export Rollercoaster This part tripped me up. I wanted to deploy this as a web game so players could jump in instantly without a download. However, because I built this using Godot 4 + C#, web export support isn’t fully streamlined yet. I pivoted to desktop exports instead, targeting Windows executables—and honestly, it was the right call. Exporting to Windows is flawless in Godot. I enabled the option to embed the PCK file directly into the executable, packing the entire game into a single file. No dependencies, no installers; just double-click and play. (Note: Windows might throw a SmartScreen popup since it’s an unsigned EXE, but players just need to click “More Info” and then “Run Anyway”.) What’s Next? The game is fully functional, but I’m not stopping here. My immediate roadmap includes: Save/Load System: Because no one wants to lose their empire when they close the window. Visual Juice: Adding particle explosions to the headline button and floating +$1 text that drifts upward on click. Audio: Adding satisfying sound effects for clicks and upgrades.
Ships:
Stepping Away to Reset Headline Tycoon started as a necessary escape. I was deep in the trenches of a much larger, more complex project, and I could feel the early signs of burnout creeping in. To keep my momentum alive and clear my head, I challenged myself to build a small, high-satisfaction game completely from scratch. Taking a short break to build something snappy and functional completely recharged my batteries, reminding me why I love game development in the first place. Technical Hurdles in the Sprint Every project has its friction, even a short sprint. Beyond the UI layout battles, my biggest technical challenge was fighting with Godot 4’s C# compilation tools. I initially intended for this to be a browser game, but the web export pipeline for this specific engine setup is still incredibly finicky. Figuring out how to pivot gracefully to a single-file desktop deployment without breaking my codebase took some creative troubleshooting. I also had to spend a solid chunk of time tracking down a “dead click” bug, which ultimately led me to stop relying on the editor inspector for signals and instead script all UI connections dynamically when the game boots. Tester’s Guide: What to Know Since this is a raw, freshly exported core-loop prototype, there are a few things you should know before jumping in to build your empire. Because it is an unsigned indie executable, Windows Defender SmartScreen will likely trigger a blue warning window when you run it. The file is completely safe, so you just need to click “More Info” and then “Run Anyway” to launch it. Keep in mind that there is no save or load system implemented in this build, meaning your media empire resets when you close the window. As you play, pay close attention to the economy pacing. I specifically need feedback on whether the cost multiplier feels satisfying or if the numbers hit a boring wall where progress grinds to a frustrating halt. Let me know if the buttons react instantly when you click them, and how the overall layout scales on your specific monitor resolution....
|
1793652582.1020665
|
1793738982.1020665
|
|
61910
|
My own site! by @jedalf | Stardance
|
jedalf
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @jedalf | Stardance
|
1793652583.2387097
|
1794257383.2387097
|
|
61913
|
Learning how to cad! by @Cooper_daGoat | Stardance
|
Cooper_daGoat
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Learning how to cad! by @Cooper_daGoat | St Title: Learning how to cad! by @Cooper_daGoat | Stardance...
|
1793652584.124393
|
1794257384.124393
|
|
61914
|
AcademiaTab by @aminoacid | Stardance
|
aminoacid
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: AcademiaTab by @aminoacid | Stardance
|
1793652584.9865215
|
1794257384.9865215
|
|
61915
|
Card Creator by @bluenoise | Stardance
|
bluenoise
|
0
|
0.57
|
0
|
[]
|
[{"post_id": 67605, "ts": "202 [{"post_id": 67605, "ts": "2026-09-13T19:05:36Z", "hours": 0.5711, "text": "Created a simple wireframe for the web apps layout"}]...
|
Title: Card Creator by @bluenoise | Stardance
Dev Title: Card Creator by @bluenoise | Stardance
Devlogs:
Created a simple wireframe for the web apps layout...
|
1793652585.8853867
|
1794257385.8853867
|
|
61916
|
My awesome macropad! by @BlendedVoxel | Stardance
|
BlendedVoxel
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @BlendedVoxel | Sta Title: My awesome macropad! by @BlendedVoxel | Stardance...
|
1793652586.9291964
|
1794257386.9291964
|
|
61918
|
CrumbAI by @Ander507 | Stardance
|
Ander507
|
0
|
7.98
|
0
|
[]
|
[{"post_id": 67625, "ts": "202 [{"post_id": 67625, "ts": "2026-09-13T19:32:24Z", "hours": 7.9764, "text": "Devlog #1 I wanna make a project like LMStudio, OpenCode and Cursor in 1 app with some small additions like arena to test what AI gives the best answer rn i just made loading a model and running a local model possible all other stuff are just for show for now"}]...
|
Title: CrumbAI by @Ander507 | Stardance
Devlogs:
Title: CrumbAI by @Ander507 | Stardance
Devlogs:
Devlog #1 I wanna make a project like LMStudio, OpenCode and Cursor in 1 app with some small additions like arena to test what AI gives the best answer rn i just made loading a model and running a local model possible all other stuff are just for show for now...
|
1793652587.8310235
|
1794257387.8310235
|
|
61919
|
My own site! by @thisisaarush | Stardance
|
thisisaarush
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @thisisaarush | Stardance
|
1793652588.6948712
|
1794257388.6948712
|
|
4536
|
Poets United by @Dari | Stardance
|
Dari
|
1
|
3.0
|
52
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-28T05:10:54Z", "hours": 3.0, "multiplier": 15.55, "payout": 52, "blessing": "neutral", "text": "As an avid writer of poetry, sharing it has always been something I personally wanted to do. So, I decided to make a website where not only I, but others could share poetry. The current version is more of an MVP, but it works! I intend to add many more features to it, such as custom thumbnails, a text editor for shape poetry, authentication, a like/comment system, and more! As of right now, there is no way to delete your poems other than me doing it manually, so if you want me to remove something, you can send me a DM through Slack. As soon as I add auth, that won’t be a problem, though. Enjoy!!!", "repo": "https://github.com/CoDari1/Poets-United", "demo": "https://poets-united.vercel.app/"}]...
|
[{"post_id": 17388, "ts": "202 [{"post_id": 17388, "ts": "2026-06-28T04:40:09Z", "hours": 2.5858, "text": "Finished the overall look of the website, as well as got the poem uploader and viewing system working."}, {"post_id": 4696, "ts": "2026-06-08T03:45:31Z", "hours": 0.7567, "text": "I just got the database and basic UI working. Now I can add poems through the website! It’s pretty simple right now, but all things must start somewhere."}]...
|
Title: Poets United by @Dari | Stardance
Devlogs: Title: Poets United by @Dari | Stardance
Devlogs:
I just got the database and basic UI working. Now I can add poems through the website! It’s pretty simple right now, but all things must start somewhere.
Finished the overall look of the website, as well as got the poem uploader and viewing system working.
Ships:
As an avid writer of poetry, sharing it has always been something I personally wanted to do. So, I decided to make a website where not only I, but others could share poetry. The current version is more of an MVP, but it works! I intend to add many more features to it, such as custom thumbnails, a text editor for shape poetry, authentication, a like/comment system, and more! As of right now, there is no way to delete your poems other than me doing it manually, so if you want me to remove something, you can send me a DM through Slack. As soon as I add auth, that won’t be a problem, though. Enjoy!!!...
|
1793652591.8628209
|
1793738991.8628209
|
|
61920
|
WaweFlame by @Kende | Stardance
|
Kende
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WaweFlame by @Kende | Stardance
|
1793652593.0202172
|
1794257393.0202172
|
|
61922
|
ball rage game. by @declansk | Stardance
|
declansk
|
0
|
4.91
|
0
|
[]
|
[{"post_id": 78862, "ts": "202 [{"post_id": 78862, "ts": "2026-10-11T19:55:02Z", "hours": 2.3128, "text": "I have changed a lot I have the physics worked out a lot better and now have controls very similar to get to work. I now plan to work on levels and more gimmicks"}, {"post_id": 67832, "ts": "2026-09-14T02:51:13Z", "hours": 0.4, "text": "I need to get the physics right and make some game play then it will begin to come together."}, {"post_id": 67767, "ts": "2026-09-14T00:38:41Z", "hours": 2.1983, "text": "I made a Unity ball game where it rolls lmao."}]...
|
Title: ball rage game. by @declansk | Stardance
D Title: ball rage game. by @declansk | Stardance
Devlogs:
I made a Unity ball game where it rolls lmao.
I need to get the physics right and make some game play then it will begin to come together.
I have changed a lot I have the physics worked out a lot better and now have controls very similar to get to work. I now plan to work on levels and more gimmicks...
|
1793652593.8918407
|
1794257393.8918407
|
|
61923
|
Club and Event Hub by @JosephK | Stardance
|
JosephK
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Club and Event Hub by @JosephK | Stardance
|
1793652594.7789226
|
1794257394.7789226
|
|
61924
|
My very own WebOS by @Shad0w_F0xx | Stardance
|
Shad0w_F0xx
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Shad0w_F0xx | Stardan Title: My very own WebOS by @Shad0w_F0xx | Stardance...
|
1793652595.6468127
|
1794257395.6468127
|
|
27523
|
MyPersonalSite by @kow4566 | Stardance
|
kow4566
|
2
|
4.0
|
6
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-05T06:52:33Z", "hours": 2.0, "multiplier": 2.34, "payout": 6, "blessing": "neutral", "text": "This is my personal site. I have used quite fun features here to showcase what i could do till now. I have used w3schools website and the guide to make this. There were lots of problems especially when loading the js script to the browser and now everything is working well. My contact page had layout bugs but now fixed. I have used a beack as a background for the contact page and the top bar. I have used ice cream pic generator to get a random pic of ice creams, and the interactive background in the home page works well too (Used AI to make an explosion within the dots in home page only).", "repo": "https://github.com/koushikrajd2011-rgb/MyPersonalSite", "demo": "https://koushikrajd2011-rgb.github.io/MyPersonalSite/"}, {"ship_num": 2, "ts": "2026-07-01T10:41:35Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I had quite a lot of problem especially with layout and all the stuff. I used w3school website a lot on this one and im proud i learnt a lot from this project and im able to make stuff like this. I have concentrated most of css and js codes into html itself (the css and js files are still there) fyi. I added some fun features aswll and added my github page and u can try out other projects from there aswll.", "repo": "https://github.com/koushikrajd2011-rgb/MyPersonalSite", "demo": "https://koushikrajd2011-rgb.github.io/MyPersonalSite/"}]...
|
[{"post_id": 20515, "ts": "202 [{"post_id": 20515, "ts": "2026-07-02T04:02:08Z", "hours": 2.4958, "text": "I have worked really long for this one. I had to recode the CSS (took loads of time) and i will be adding a 3D model notepad later on this week. I have also changed some background especially for the navigation bar and the contact page. The pic below shows the nav bar. I have moved the home, about and contacts towards to right end next to the time. I spent 30 min fixing bugs on layout and javascript working issues."}, {"post_id": 19873, "ts": "2026-07-01T09:04:59Z", "hours": 0.7525, "text": "I have added some new things on this update and it is quite nice. I had to use AI to make two new things - the pixel art and the notepad 3d model (cuz i dont wanna download a 3d model for now). I added new things to the contact page where u can refer to my github page for some projects i have made for this challenge before. It took me loads of time to learn and figure out this 3d model using no websites and stuff. So i used some pictures from the browser for free ice cream pictures here (jst for fun) to show what i can code for now. I had problems resolving the home page layout and putting out some features across the screen. I will soon be adding extra stuff and the web will be released pretty much by today or tommorow if possible"}, {"post_id": 19728, "ts": "2026-07-01T03:44:52Z", "hours": 1.26, "text": "I have started MyPersonalSite by me. It is all about me and trust me its not boring. I have added some really satisfying features. The pic below is jst a part of the website (ofc i wont release the whole thing immediatly) . So i wanna work more on adding extra features and i had loads of problems with html until i figured out the bugs with ai and fixed it. I will be adding more to the dock above and so 3d objects if possible for entertainement!"}]...
|
Title: MyPersonalSite by @kow4566 | Stardance
Dev Title: MyPersonalSite by @kow4566 | Stardance
Devlogs:
I have started MyPersonalSite by me. It is all about me and trust me its not boring. I have added some really satisfying features. The pic below is jst a part of the website (ofc i wont release the whole thing immediatly) . So i wanna work more on adding extra features and i had loads of problems with html until i figured out the bugs with ai and fixed it. I will be adding more to the dock above and so 3d objects if possible for entertainement!
I have added some new things on this update and it is quite nice. I had to use AI to make two new things - the pixel art and the notepad 3d model (cuz i dont wanna download a 3d model for now). I added new things to the contact page where u can refer to my github page for some projects i have made for this challenge before. It took me loads of time to learn and figure out this 3d model using no websites and stuff. So i used some pictures from the browser for free ice cream pictures here (jst for fun) to show what i can code for now. I had problems resolving the home page layout and putting out some features across the screen. I will soon be adding extra stuff and the web will be released pretty much by today or tommorow if possible
I have worked really long for this one. I had to recode the CSS (took loads of time) and i will be adding a 3D model notepad later on this week. I have also changed some background especially for the navigation bar and the contact page. The pic below shows the nav bar. I have moved the home, about and contacts towards to right end next to the time. I spent 30 min fixing bugs on layout and javascript working issues.
Ships:
I had quite a lot of problem especially with layout and all the stuff. I used w3school website a lot on this one and im proud i learnt a lot from this project and im able to make stuff like this. I have concentrated most of css and js codes into html itself (the css and js files are still there) fyi. I added some fun features aswll and added my github page and u can try out other projects from there aswll.
This is my personal site. I have used quite fun features here to showcase what i could do till now. I have used w3schools website and the guide to make this. There were lots of problems especially when loading the js script to the browser and now everything is working well. My contact page had layout bugs but now fixed. I have used a beack as a background for the contact page and the top bar. I have used ice cream pic generator to get a random pic of ice creams, and the interactive background in the home page works well too (Used AI to make an explosion within the dots in home page only)....
|
1793652596.8688338
|
1793738996.8688338
|
|
61925
|
My own site! by @idiotinred | Stardance
|
idiotinred
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @idiotinred | Stardance
|
1793652599.919046
|
1794257399.919046
|
|
23020
|
My first slack bot! by @Chenjv | Stardance
|
Chenjv
|
1
|
3.0
|
11
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-28T19:04:00Z", "hours": 3.0, "multiplier": 4.14, "payout": 11, "blessing": "neutral", "text": "I made a slack bot that runs 24/7. It was way more challenging than I thought, but in the end it was worth it because I learned so many new things. I am proud to say that a frontend dev can also handle API keys 🥳", "repo": "https://github.com/Chenjv2/Broken_bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 17808, "ts": "202 [{"post_id": 17808, "ts": "2026-06-28T18:59:20Z", "hours": 0.4242, "text": "Added the README, also my first time writing a README that will be actually read, so excited to ship the project. I took some inspiration from online model READMEs."}, {"post_id": 17781, "ts": "2026-06-28T18:31:24Z", "hours": 1.0531, "text": "Final Version, fixed the latest problems with the weather command, turns out I forgot to git pull (I was too used to auto deploy git repos connected to netlify). Also added the randomfact command, which was suddenly much easier thanks to my prior experiences (turns out it works when you git pull). Now it’s just writing a README and it’s ready to ship."}, {"post_id": 13193, "ts": "2026-06-21T16:29:11Z", "hours": 0.5775, "text": "New commands for the brokenbot. Honestly I had no idea how to work with APIs, I had only vaguely heard about to never store API keys directly in the code (which I definitely didn’t do at first), but now it seems funny how it took so long research to find out how to get a functioning API key from OpenWeather (in the end I had to wait for my key to be activated because it usually takes a few hours). I still don’t understand how and .env file keeps the API keys magically safe ;)"}, {"post_id": 12719, "ts": "2026-06-20T19:34:13Z", "hours": 0.6125, "text": "Just following the Tutorial. I honestly had no idea what a slack bot is before, and how it functions. Now I still don’t now how it functions, but I got a working local prototype."}]...
|
Title: My first slack bot! by @Chenjv | Stardance
Title: My first slack bot! by @Chenjv | Stardance
Devlogs:
Just following the Tutorial. I honestly had no idea what a slack bot is before, and how it functions. Now I still don’t now how it functions, but I got a working local prototype.
New commands for the brokenbot. Honestly I had no idea how to work with APIs, I had only vaguely heard about to never store API keys directly in the code (which I definitely didn’t do at first), but now it seems funny how it took so long research to find out how to get a functioning API key from OpenWeather (in the end I had to wait for my key to be activated because it usually takes a few hours). I still don’t understand how and .env file keeps the API keys magically safe ;)
Final Version, fixed the latest problems with the weather command, turns out I forgot to git pull (I was too used to auto deploy git repos connected to netlify). Also added the randomfact command, which was suddenly much easier thanks to my prior experiences (turns out it works when you git pull). Now it’s just writing a README and it’s ready to ship.
Added the README, also my first time writing a README that will be actually read, so excited to ship the project. I took some inspiration from online model READMEs.
Ships:
I made a slack bot that runs 24/7. It was way more challenging than I thought, but in the end it was worth it because I learned so many new things. I am proud to say that a frontend dev can also handle API keys 🥳...
|
1793652600.8079355
|
1793739000.8079355
|
|
61926
|
BLARE by @Mayah_gv1 | Stardance
|
Mayah_gv1
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: BLARE by @Mayah_gv1 | Stardance
|
1793652602.0041962
|
1794257402.0041962
|
|
18029
|
Chip8-Emulator by @ashish-raj-singh | Stardance
|
ashish-raj-singh
|
1
|
15.15
|
273
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-22T10:14:53Z", "hours": 14.0, "multiplier": 18.94, "payout": 273, "blessing": "neutral", "text": "Chip-8 Emulator I built a cross-platform CHIP-8 Emulator from the ground up using C++ and Raylib. It accurately emulates the original 1970s hardware, from the display rendering (60Hz) for authentic gameplay, complete with automated CI & releases for Windows, Mac, and Linux. Emulator Comes with some preloaded .ch8 binaries and you can import your own custom or internet downloaded binaries as well. Coming from High Level programing (Web Development), this low level project was new and i am now in love with low level concepts. What was challenging? Fighting the operating systems to actually let people play it! The C++ emulation logic was fun, but building the CI/CD pipeline to statically link Raylib from source to escape Windows “DLL Hell” was a nightmare. I also spent way too much time trying to hide the developer console to make it look “professional,” only to realize keeping the console is the only way to stop Windows Defender and Apple Gatekeeper from immediately flagging a statically-linked .exe as a virus. Other then just coding, a lot of time was invested in reading references, making the application actullay Runnable on different platforms Proud? Creating a GUI in c++, and actually implementing something in C++, not just doing Data Structure and Algorithm, but actually implemented something in C++. Leanrnign all these low level concepts about cpu, register, display screen, complier & linker, building cross platforn applications. The fully automated, zero-touch CI/CD pipeline. Right now, I can type git push origin v1.0, and GitHub Actions automatically spins up Mac, Windows, and Linux servers, clones the pure Raylib source code, compiles it from scratch, statically links it to my emulator, and spits out three perfectly zipped, ready-to-play release files. It feels like production ready.", "repo": "https://github.com/ashish757/Chip8-Emulator", "demo": "https://github.com/ashish757/Chip8-Emulator/releases"}]...
|
[{"post_id": 13769, "ts": "202 [{"post_id": 13769, "ts": "2026-06-22T15:55:36Z", "hours": 1.1486, "text": "Devlog Updated Readme files, and wrote down some technical details"}, {"post_id": 13341, "ts": "2026-06-21T21:13:02Z", "hours": 3.4903, "text": "Devlog 5: Making it Beep Last time, I talked about how Continuous Integration was eating my time, Windows was demanding my soul with missing DLLs, and Apple Gatekeeper was holding my app hostage for $99. This time, I fought back. The emulator is now completely polished, actually sounds like a retro console, and distributes like a real, professional application. Here is what went down. It Beeps now The CHIP-8 doesn’t have a sound card. It basically has a timer attached to a buzzer. If the soundTimer register is greater than 0, it beeps. It ticks down at exactly 60Hz. I basically wrote some code in c++ to generate a square wave, and used raylib’s audioPlayer to support classic beep sound of chip 8. Production (The Illusion of Polish) Originally, I hated that a black developer console popped up behind the Emulator. It screamed unfinished project. So, I spent hours engineering it out. On Windows, I added the -mwindows flag to the compiler to change it from a Console App to a pure GUI App . On Mac, I completely rewrote my CI pipeline to generate a standard Apple .app folder structure so it would look like a commercial application. the result? Total disaster. Because my newly polished Windows .exe was a standalone GUI application without a digital signature, Windows Defender immediately flagged it as a virus. Meanwhile, Apple’s Gatekeeper still blocked the .app bundle because I refuse to pay Tim Cook $99 a year. The Real Solution: I reverted it all. I am keeping the console. Git always has one more feature (Isn’t god’s another name linus?) This was my first time actually using the tag feature of git in practical life, i after git push v1.1.0 i was wondering the new releases are created, code editor says everything is uptpdate with remote, but why the hell my gihub does not shows new code, and guess waht branch and tags need to be updated seperately. Checkout latest release"}, {"post_id": 12675, "ts": "2026-06-20T18:21:32Z", "hours": 4.4206, "text": "Devlog - Almost completed this time (almostt) This time my goal was to convert this basic chip8 emulator in to something any user can use coming from web development background, creating ui in C++ raylib was completely new. No concept of ui elements here, cant just attach event listeners to button like we do in javascriot What happens here is - you create a rectangle, put some text in it, this becomes your button then there is a constant loop running, which erases and redraws everything on the screen 60 times per second, just like a game loop. now to detect mouse hover, or click, we need to constantly tract the mouse position 60 times a second , and check if it overlaps the coordinates of a button But i found an interesting piece of code raygui , written by the original creator of the raylib it basically removes the manual need of tracking the cursor position and checking them with the coordinates of the ui elements, it handles click and hovers. custom ROM import support I wanted users to be able to run any .ch8 program they wanted to run. I simply opened up a native dialog to select a .ch8 file and run it on the emulator. I used AppleScript on Mac to trigger the file picker, but on Windows , I had to pull up a shell in the background The Final Boss: CI and distribution This is actually a big time eater, while implementing Continuous Integration i did countless iterations solving dumb errors, adjusting platform depended configs and so on… but results are just as fin, now automatic releases are created for every tag. distribution macos blocks applications from unknown developer (i need to pay $99/yr to get verified, Best of luck with that Tim Cook ), to fix this i am thinking to create standard .app structure not sure but it might tame the apple gatekeeper. Apple wanted my money ($99), Windows won’t be happy without taking my soul Like hell, every here and there windows throws some error be it missing dll or path problems or linker issue. the biggest hurdle was that I don’t have access to a windows machine, I had to ping my non-tech friend with new .exe file each time. (aah friends are a blessing, aren’t they, my friend? huh?) Checkout lateset release (supports mac and windows, can’t say about linux for sure) running on mac open the executbale file inside the zip (i wont run, but it is required to open at least once) Open System Settings go to privacy and security scroll down there you will se option to open anyway each time you will have to run the application this way in mac (sorry i dont really have $99) Can anyone with linux please let me know if it works (i am to lazy to install VMWare ) one more thing supported keys are (inspired from original chip-8 keys) 1 2 3 4 q w e r a s d f z x c v use thses keys to give input, nothing else will work (other keys only work in launcher interface like backspace to get back to menu form emulator )"}, {"post_id": 12031, "ts": "2026-06-19T16:56:33Z", "hours": 3.5406, "text": "Devlog 3. The emulator is almost completed and and can run .ch8 binaries not fully complete it still requires some polishing like right now the graphics is flickering a bit, probably due to a bug in graphics engine logic or I might need to change how fast cycles are being executed. Checkout my previous devlogs to know what is chip8? What this time? This time I felt like nobody in the world can explain the logic to translate those opCodes. Coming from high level low level is absolute new, i thought I might find some resemblance (guess what?? I was wrong) I still can’t say in understand it 100%, but the struggle is on Here’s what I learnt and built. we load the ch8 binary file -> Save instruction in the RAM -> a continuous while loop which executes each instruction code How does the program even runs? Basically there is a while loop, which keeps on running unless user closes the program or program ends This is where we write logic to find which instruction code to execute next Control the execution speed (clock speed of cpu) Map keyboard events (more on this below) How do we know what code to run next? There is a function executeCycle , inside this funciotn we have - A variable programCounter which tracks the current instruction code position and calculates next one too. Then we have a huge switch case flow, which basically maps all the 35 standard instruction codes form chip8 to modern computer. Then based upon the code, we perform tasks like painting a pixel or change some data in RAM. To keep this short, I will not get into the details about translating the chip8 instruction. Biggest man in the room - Graphics Engine (XOR) we basically have black and white screen, 64px length and 32px height (we use multiplier so the size is not exactly 64x32, as that will be two small) we then have 1s, 0s to represent black and white pixels the engine basically deleted every pixel and re draws it again, this causes a flashing effect as moder screens are faster and also show the transition. Collision detection the value of a pixel is set to 1 (white) and 0 (black) We take XOR of the Current value of the pixel and the to be updated value if two pixels are white (1) the xor will be 0, and when this happens we set the Vf to 1, indicating a collision has occured. Vf is the 16th register which is left empty and use only to show collision. Keypad keypad The original chip8 keypad was like this Chip8 Modern keyboard 1 2 3 C 1 2 3 4 4 5 6 D ---> Q W E R 7 8 9 E A S D F A 0 B F Z X C V What’s left implement UI to control chip 8 settings like speed, screen size etc. Add a list of software that user can run, as well as option to run his own"}, {"post_id": 8594, "ts": "2026-06-14T09:16:53Z", "hours": 2.0333, "text": "Decades old Low level concepts are still haunting.. (Chip 8 Interpreter) This is my first time building a proper low level project. (Strong Man Crying 😭) its tough i had to study new architechures, understand memory bottlenecks, i spent aout 10% time writing code and rest learing , reading Chip8 technical references, banging head to AI to explain the low level memory concepts (So Exciting its an Automatic All-Nighter puller) And .. heres what i learnt waht is chip 8? chip 8 basically a a interpreted programing language of ancient times (70s). It kind of mimics a small computer (8 bit) , limiting its max memory to 4KB . But the special thing is, its not just a language, it mimics a CPU architecture, making it like a different computer system which doesnt exists phycally, but uses other physical computer to run its own acrhitecture. What is Emulator Well think of emulator as a extra added layer between the software and low level computer systems. which does some magic to run a software which is not ment to run on that system. Windows Application –> macOS (Won’t Run) Windows Application –> Emulator –> macOS (Will Run) Flow Lets say we have a software S, designed to run on System of type C1, but now we want to run the same software on a different system lets say C2, S –> C1 RUNs properly S –> C2 Fails as C2 cant understand the instruction that software S is trying to give to C2 Emulator in the picture Software S (instruction codes for C1 ) –> Emulator (Translates Instruction code for C1 to C2) –> now C2 can run (Translated instructions). Now Chip8 Emulator Lets say you have a program which was designed in and for Chip8, but now you dont have a chip8 system, how do you run this program? We basically use an emulator to trick the software to thing that its running in the old Chip8 system but its acctually running on moder computers. Howwwwww? well Chip8 has 35 standard instructions and only 4096 bytes of memory, so its faily easy to map each and every of its instruction and instead do it in the modern langauges (like i have used C++). We store the data in modern C++ Data Structures , but we trick the target software to thing that it has dorect acces to the RAM of the computer. Current Status implemnted the basic template to mimic real RAM for chip 8, which is basicaly an array of size 4096 , weher first 200 are reserved for the chip8 system use, rest is opent to softwares running on it. I have translated some basic codes, more on this in next devlog A black window with raylib for now"}, {"post_id": 8183, "ts": "2026-06-13T17:09:05Z", "hours": 1.0097, "text": "Building an Chip 8 Emulator This is like my first proper project in low level programing I wanted to take on the low level for a long time, took the chance this time I know only the basics of chip 8 interpreter , I read cowgod’s chip8 technical reference last night this is gonna be a very learning and building like thing, been into the high level for over 5 (Full Stack) years now, hope I can find some similarities and help from my past experiences in to the low level is anyone of you guys (gods) know about low level or specifically chip8 , please drop a comment because I thing I am too going to need babysitting 😭"}]...
|
Title: Chip8-Emulator by @ashish-raj-singh | Stard Title: Chip8-Emulator by @ashish-raj-singh | Stardance
Devlogs:
Building an Chip 8 Emulator This is like my first proper project in low level programing I wanted to take on the low level for a long time, took the chance this time I know only the basics of chip 8 interpreter , I read cowgod’s chip8 technical reference last night this is gonna be a very learning and building like thing, been into the high level for over 5 (Full Stack) years now, hope I can find some similarities and help from my past experiences in to the low level is anyone of you guys (gods) know about low level or specifically chip8 , please drop a comment because I thing I am too going to need babysitting 😭
Decades old Low level concepts are still haunting.. (Chip 8 Interpreter) This is my first time building a proper low level project. (Strong Man Crying 😭) its tough i had to study new architechures, understand memory bottlenecks, i spent aout 10% time writing code and rest learing , reading Chip8 technical references, banging head to AI to explain the low level memory concepts (So Exciting its an Automatic All-Nighter puller) And .. heres what i learnt waht is chip 8? chip 8 basically a a interpreted programing language of ancient times (70s). It kind of mimics a small computer (8 bit) , limiting its max memory to 4KB . But the special thing is, its not just a language, it mimics a CPU architecture, making it like a different computer system which doesnt exists phycally, but uses other physical computer to run its own acrhitecture. What is Emulator Well think of emulator as a extra added layer between the software and low level computer systems. which does some magic to run a software which is not ment to run on that system. Windows Application –> macOS (Won’t Run) Windows Application –> Emulator –> macOS (Will Run) Flow Lets say we have a software S, designed to run on System of type C1, but now we want to run the same software on a different system lets say C2, S –> C1 RUNs properly S –> C2 Fails as C2 cant understand the instruction that software S is trying to give to C2 Emulator in the picture Software S (instruction codes for C1 ) –> Emulator (Translates Instruction code for C1 to C2) –> now C2 can run (Translated instructions). Now Chip8 Emulator Lets say you have a program which was designed in and for Chip8, but now you dont have a chip8 system, how do you run this program? We basically use an emulator to trick the software to thing that its running in the old Chip8 system but its acctually running on moder computers. Howwwwww? well Chip8 has 35 standard instructions and only 4096 bytes of memory, so its faily easy to map each and every of its instruction and instead do it in the modern langauges (like i have used C++). We store the data in modern C++ Data Structures , but we trick the target software to thing that it has dorect acces to the RAM of the computer. Current Status implemnted the basic template to mimic real RAM for chip 8, which is basicaly an array of size 4096 , weher first 200 are reserved for the chip8 system use, rest is opent to softwares running on it. I have translated some basic codes, more on this in next devlog A black window with raylib for now
Devlog 3. The emulator is almost completed and and can run .ch8 binaries not fully complete it still requires some polishing like right now the graphics is flickering a bit, probably due to a bug in graphics engine logic or I might need to change how fast cycles are being executed. Checkout my previous devlogs to know what is chip8? What this time? This time I felt like nobody in the world can explain the logic to translate those opCodes. Coming from high level low level is absolute new, i thought I might find some resemblance (guess what?? I was wrong) I still can’t say in understand it 100%, but the struggle is on Here’s what I learnt and built. we load the ch8 binary file -> Save instruction in the RAM -> a continuous while loop which executes each instruction code How does the program even runs? Basically there is a while loop, which keeps on running unless user closes the program or program ends This is where we write logic to find which instruction code to execute next Control the execution speed (clock speed of cpu) Map keyboard events (more on this below) How do we know what code to run next? There is a function executeCycle , inside this funciotn we have - A variable programCounter which tracks the current instruction code position and calculates next one too. Then we have a huge switch case flow, which basically maps all the 35 standard instruction codes form chip8 to modern computer. Then based upon the code, we perform tasks like painting a pixel or change some data in RAM. To keep this short, I will not get into the details about translating the chip8 instruction. Biggest man in the room - Graphics Engine (XOR) we basically have black and white screen, 64px length and 32px height (we use multiplier so the size is not exactly 64x32, as that will be two small) we then have 1s, 0s to represent black and white pixels the engine basically deleted every pixel and re draws it again, this causes a flashing effect as moder screens are faster and also show the transition. Collision detection the value of a pixel is set to 1 (white) and 0 (black) We take XOR of the Current value of the pixel and the to be updated value if two pixels are white (1) the xor will be 0, and when this happens we set the Vf to 1, indicating a collision has occured. Vf is the 16th register which is left empty and use only to show collision. Keypad keypad The original chip8 keypad was like this Chip8 Modern keyboard 1 2 3 C 1 2 3 4 4 5 6 D ---> Q W E R 7 8 9 E A S D F A 0 B F Z X C V What’s left implement UI to control chip 8 settings like speed, screen size etc. Add a list of software that user can run, as well as option to run his own
Devlog - Almost completed this time (almostt) This time my goal was to convert this basic chip8 emulator in to something any user can use coming from web development background, creating ui in C++ raylib was completely new. No concept of ui elements here, cant just attach event listeners to button like we do in javascriot What happens here is - you create a rectangle, put some text in it, this becomes your button then there is a constant loop running, which erases and redraws everything on the screen 60 times per second, just like a game loop. now to detect mouse hover, or click, we need to constantly tract the mouse position 60 times a second , and check if it overlaps the coordinates of a button But i found an interesting piece of code raygui , written by the original creator of the raylib it basically removes the manual need of tracking the cursor position and checking them with the coordinates of the ui elements, it handles click and hovers. custom ROM import support I wanted users to be able to run any .ch8 program they wanted to run. I simply opened up a native dialog to select a .ch8 file and run it on the emulator. I used AppleScript on Mac to trigger the file picker, but on Windows , I had to pull up a shell in the background The Final Boss: CI and distribution This is actually a big time eater, while implementing Continuous Integration i did countless iterations solving dumb errors, adjusting platform depended configs and so on… but results are just as fin, now automatic releases are created for every tag. distribution macos blocks applications from unknown developer (i need to pay $99/yr to get verified, Best of luck with that Tim Cook ), to fix this i am thinking to create standard .app structure not sure but it might tame the apple gatekeeper. Apple wanted my money ($99), Windows won’t be happy without taking my soul Like hell, every here and there windows throws some error be it missing dll or path problems or linker issue. the biggest hurdle was that I don’t have access to a windows machine, I had to ping my non-tech friend with new .exe file each time. (aah friends are a blessing, aren’t they, my friend? huh?) Checkout lateset release (supports mac and windows, can’t say about linux for sure) running on mac open the executbale file inside the zip (i wont run, but it is required to open at least once) Open System Settings go to privacy and security scroll down there you will se option to open anyway each time you will have to run the application this way in mac (sorry i dont really have $99) Can anyone with linux please let me know if it works (i am to lazy to install VMWare ) one more thing supported keys are (inspired from original chip-8 keys) 1 2 3 4 q w e r a s d f z x c v use thses keys to give input, nothing else will work (other keys only work in launcher interface like backspace to get back to menu form emulator )
Devlog 5: Making it Beep Last time, I talked about how Continuous Integration was eating my time, Windows was demanding my soul with missing DLLs, and Apple Gatekeeper was holding my app hostage for $99. This time, I fought back. The emulator is now completely polished, actually sounds like a retro console, and distributes like a real, professional application. Here is what went down. It Beeps now The CHIP-8 doesn’t have a sound card. It basically has a timer attached to a buzzer. If the soundTimer register is greater than 0, it beeps. It ticks down at exactly 60Hz. I basically wrote some code in c++ to generate a square wave, and used raylib’s audioPlayer to support classic beep sound of chip 8. Production (The Illusion of Polish) Originally, I hated that a black developer console popped up behind the Emulator. It screamed unfinished project. So, I spent hours engineering it out. On Windows, I added the -mwindows flag to the compiler to change it from a Console App to a pure GUI App . On Mac, I completely rewrote my CI pipeline to generate a standard Apple .app folder structure so it would look like a commercial application. the result? Total disaster. Because my newly polished Windows .exe was a standalone GUI application without a digital signature, Windows Defender immediately flagged it as a virus. Meanwhile, Apple’s Gatekeeper still blocked the .app bundle because I refuse to pay Tim Cook $99 a year. The Real Solution: I reverted it all. I am keeping the console. Git always has one more feature (Isn’t god’s another name linus?) This was my first time actually using the tag feature of git in practical life, i after git push v1.1.0 i was wondering the new releases are created, code editor says everything is uptpdate with remote, but why the hell my gihub does not shows new code, and guess waht branch and tags need to be updated seperately. Checkout latest release
Devlog Updated Readme files, and wrote down some technical details
Ships:
Chip-8 Emulator I built a cross-platform CHIP-8 Emulator from the ground up using C++ and Raylib. It accurately emulates the original 1970s hardware, from the display rendering (60Hz) for authentic gameplay, complete with automated CI & releases for Windows, Mac, and Linux. Emulator Comes with some preloaded .ch8 binaries and you can import your own custom or internet downloaded binaries as well. Coming from High Level programing (Web Development), this low level project was new and i am now in love with low level concepts. What was challenging? Fighting the operating systems to actually let people play it! The C++ emulation logic was fun, but building the CI/CD pipeline to statically link Raylib from source to escape Windows “DLL Hell” was a nightmare. I also spent way too much time trying to hide the developer console to make it look “professional,” only to realize keeping the console is the only way to stop Windows Defender and Apple Gatekeeper from immediately flagging a statically-linked .exe as a virus. Other then just coding, a lot of time was invested in reading references, making the application actullay Runnable on different platforms Proud? Creating a GUI in c++, and actually implementing something in C++, not just doing Data Structure and Algorithm, but actually implemented something in C++. Leanrnign all these low level concepts about cpu, register, display screen, complier & linker, building cross platforn applications. The fully automated, zero-touch CI/CD pipeline. Right now, I can type git push origin v1.0, and GitHub Actions automatically spins up Mac, Windows, and Linux servers, clones the pure Raylib source code, compiles it from scratch, statically links it to my emulator, and spits out three perfectly zipped, ready-to-play release files. It feels like production ready....
|
1793652602.899495
|
1793739002.899495
|
|
61929
|
On-Time by @Nourk | Stardance
|
Nourk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: On-Time by @Nourk | Stardance
|
1793652604.0778096
|
1794257404.0778096
|
|
61931
|
bot by @jezomc | Stardance
|
jezomc
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: bot by @jezomc | Stardance
|
1793652604.9715476
|
1794257404.9715476
|
|
61932
|
Frictionless by @hadiamurad | Stardance
|
hadiamurad
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @hadiamurad | Stardance
|
1793652605.8547893
|
1794257405.8547893
|
|
61934
|
My awesome macropad! by @The_Hacker | Stardance
|
The_Hacker
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @The_Hacker | Stard Title: My awesome macropad! by @The_Hacker | Stardance...
|
1793652606.737785
|
1794257406.737785
|
|
61935
|
Website by @avanibyn | Stardance
|
avanibyn
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Website by @avanibyn | Stardance
|
1793652607.6324952
|
1794257407.6324952
|
|
61936
|
whatsite by @AAAAAannaaaa15 | Stardance
|
AAAAAannaaaa15
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: whatsite by @AAAAAannaaaa15 | Stardance
|
1793652609.0107691
|
1794257409.0107691
|